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

	<entry>
		<id>http://www.elinux.org/PandaBoard</id>
		<title>PandaBoard</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/PandaBoard"/>
				<updated>2012-07-16T16:22:21Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: /* How To's */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://www.pandaboard.org PandaBoard] is an [[OMAP4430]] ([[Cortex]]-A9) based low cost development platform.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
* OMAP4 (Cortex-A9) CPU based open development platform.&lt;br /&gt;
** OMAP4430 Application processor&lt;br /&gt;
** 1GB low-power DDR2&lt;br /&gt;
** Display HDMI v1.3 Connector (Type A) to drive HD displays, DVI-D Connector (can drive a 2nd display, simultaneous display; requires HDMI to DVI-D adapter), LCD expansion header&lt;br /&gt;
** 3.5&amp;quot; audio in/out and HDMI Audio out&lt;br /&gt;
** Full size SD/MMC card&lt;br /&gt;
** Built in 802.11 &amp;amp; Bluetooth v2.1+EDR&lt;br /&gt;
** Onboard 10/100 Ethernet&lt;br /&gt;
** Expansion: 1xUSB OTG, 2xUSB HS host ports, General purpose expansion header (I2C, GPMC, USB, MMC, DSS, ETM)&lt;br /&gt;
** JTAG, UART/RS-232, 2 status LEDs, 1GPIO button&lt;br /&gt;
&lt;br /&gt;
More details can be found [http://pandaboard.org/content/platform here]&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Front&lt;br /&gt;
[[File:PandaBoard_front.png|320px]]&lt;br /&gt;
&lt;br /&gt;
A hi resolution picture of the PandaBoard EA1 front is available here: http://elinux.org/images/d/d4/Panda_front.jpg&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Back&lt;br /&gt;
[[File:Panda_back.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
= Availability =&lt;br /&gt;
PandaBoard are in production and can be ordered from [http://pandaboard.org/content/buy Worldwide distributors]. You can also easily identify the board you have using [http://omappedia.org/wiki/PandaBoard_Revisions Board revision id]&lt;br /&gt;
&lt;br /&gt;
== Rev A3 ==&lt;br /&gt;
Latest version of the board.&lt;br /&gt;
&lt;br /&gt;
== Rev A1/A2  ==&lt;br /&gt;
[http://omappedia.org/wiki/PandaBoard_Revisions#Rev_A2 Details]&lt;br /&gt;
&lt;br /&gt;
== Rev EA1/EA2 ==&lt;br /&gt;
These were limited number of 'Early Adopter' boards that built prior to production versions. [http://omappedia.org/wiki/PandaBoard_Revisions#Rev_EA1 more details]&lt;br /&gt;
&lt;br /&gt;
== Rev ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoare-ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the MLO/u-boot/kernel be specifically crafted for the 4460. The thermal management is not in the mainline 4430 code as yet and could cause unwanted thermal problems. So BEWARE of running any code built for the non -ES PandaBoard on the -ES model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Accessories =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_Bamboo|Bamboo Board]]&lt;br /&gt;
* [[BeagleBoard_Trainer|Trainer Board]]&lt;br /&gt;
* [https://specialcomp.com/pandaboard/order.htm Acrylic case]&lt;br /&gt;
* [http://bb-lvds.blogspot.com 10&amp;quot; LCD LVDS plug-and-play bundle with capacitance touchscreen and ambient light sensor]&lt;br /&gt;
*[[File:Beadaframe.jpg|200px|thumb|BeadaFrame]][http://www.nxelec.com/products/hmi/beadaframe-pandaboard BeadaFrame] 7&amp;quot; LCD display kit&lt;br /&gt;
** 7&amp;quot; 800x480 TFT LCD screen&lt;br /&gt;
** PWM Backlight control&lt;br /&gt;
** Resistive touch panel&lt;br /&gt;
** RTC time keeper &lt;br /&gt;
** Plastic frame&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Recommended Reading Material =&lt;br /&gt;
&lt;br /&gt;
* [[Embedded_Linux_System_Design_and_Development]]&lt;br /&gt;
* [[Embedded_linux_primer]]&lt;br /&gt;
* [[Building_Embedded_Linux_Systems]]&lt;br /&gt;
* [[Essential_Linux_Device_Drivers]]&lt;br /&gt;
* [[Linux_Device_Drivers]]&lt;br /&gt;
&lt;br /&gt;
= How To's =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_MLO_&amp;amp;_u-boot|How to build MLO and u-boot]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/23/2011'''&lt;br /&gt;
* [[Panda_How_to_Barebox|How to build Barebox]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 11/12/2011'''&lt;br /&gt;
* [[PandaBoard_ES_uboot_howto|How to build u-boot and SPL]] for PandaBoard and PandaBoard ES '''--&amp;gt;&amp;gt; Updated 12/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rel|How to build 3.2 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_3_rcx|How to build 3.3-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_3_rel|How to build 3.3 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/19/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_4_rel|How to build 3.4 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; NEW 6/3/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_5_rcx|How to build 3.5-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/16/2012'''&lt;br /&gt;
* [[Panda_How_to_add_2_USBs|How to add two additional USB connections]] to the PandaBoard&lt;br /&gt;
* [[Panda_How_to_add_Power_Switch|How to add a power switch]] to the PandaBoard '''--&amp;gt;&amp;gt; WIP'''&lt;br /&gt;
* [[PandaBoard Power Measurements]]&lt;br /&gt;
&lt;br /&gt;
== Older How To's ==&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_buildroot|How to build a minimal file system using buildroot]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel|How to build a kernel using the buildroot toolchain from above]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel_new|How to build 2.6.38-rcx kernels]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/15/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_38|How to build 2.6.38 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/16/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39|How to build 2.6.39-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/12/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39rel|How to build 2.6.39 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rel|How to build 3.0 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/29/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rcx|How to build 3.0-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/11/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rcx|How to build 3.1-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/5/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rel|How to build 3.1 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/31/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rcx|How to build 3.2-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
&lt;br /&gt;
= Community =&lt;br /&gt;
 &lt;br /&gt;
Website: [http://pandaboard.org http://pandaboard.org]&lt;br /&gt;
&lt;br /&gt;
IRC: #pandaboard @irc.freenode.net&lt;br /&gt;
&lt;br /&gt;
Mailing List: [http://groups.google.com/group/pandaboard pandaboard@googlegroups.com]&lt;br /&gt;
&lt;br /&gt;
[[category:OMAP]]&lt;br /&gt;
[[category:omap4430]]&lt;br /&gt;
[[category:PandaBoard]]&lt;br /&gt;
[[category:Development Boards]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_kernel_3_5_rcx</id>
		<title>Panda How to kernel 3 5 rcx</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_kernel_3_5_rcx"/>
				<updated>2012-07-16T16:21:47Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Kernel 3.5 merge window has closed and 3.5-rc1 has been released.&lt;br /&gt;
&lt;br /&gt;
You can download a tarball of the mainline kernel at http://kernel.org/&lt;br /&gt;
&lt;br /&gt;
or you can clone a copy of mainline kernel with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
cd linux&lt;br /&gt;
git checkout v3.5-rcx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Important Note '''&lt;br /&gt;
There has been a lot of work done on the HDMI interface and its related driver omapdrm. Between kernel 3.1 and 3.2-rc1 enough changed so that the Testing section on the HDMI interface has been removed from this How-To. The HDMI testing section below will return when the code stabilises. &lt;br /&gt;
&lt;br /&gt;
=== rc1 ===&lt;br /&gt;
&lt;br /&gt;
Many changes in OMAP and Panda specific code since 3.4 was released. The HDMI, DVI interfaces both work under certain circumstances and properly read the EDID info from the monitor. HDMI sound is now functional. Changes to the WLAN code continue, and WLAN does function as well under the proper circumstances.&lt;br /&gt;
&lt;br /&gt;
=== rc4 ===&lt;br /&gt;
&lt;br /&gt;
-rc4 has a few omap4 related changes, but nothing specific to the PandaBoard. &lt;br /&gt;
&lt;br /&gt;
=== rc5 ===&lt;br /&gt;
&lt;br /&gt;
-rc5 does not have any OMAP or PandaBoard specific changes. &lt;br /&gt;
&lt;br /&gt;
=== rc6 ===&lt;br /&gt;
&lt;br /&gt;
Several OMAP4 related changes, but not much, Closing in on the release according to Linus.&lt;br /&gt;
&lt;br /&gt;
=== rc7 ===&lt;br /&gt;
&lt;br /&gt;
Quite a few OMAP changes including:&lt;br /&gt;
&lt;br /&gt;
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=06b4ba529528fbf9c24ce37b7618f4b0264750e2&lt;br /&gt;
&lt;br /&gt;
Which disables the EHCI driver in omap2plus_defconfig. The reasons being:&lt;br /&gt;
&lt;br /&gt;
 -warning dump during bootup&lt;br /&gt;
 -hang during suspend&lt;br /&gt;
 -prevents CORE powerdomain from entering retention during idle (even when no USB devices connected.)&lt;br /&gt;
&lt;br /&gt;
I've never seen the warning dump during bootup on either PandaBoard or PandaBoard ES and have never tested for the other issues. So, EHCI is still enabled in the following .config.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The WL12xx driver on a PandaBoard still needs the same patch as used for 3.1 and 3.2. When the driver isn't happy, the error messages are somewhat less than useful, however the drivers/firmware are being constantly improved and it would not be a good idea to have the driver support anything but the latest firmware.&lt;br /&gt;
With the modules built in, operation is not consistent. The PandaBoard ES does not need the patch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoard ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the [[PandaBoard_ES_uboot_howto| MLO/u-boot be specifically crafted for the 4460]]. The thermal management is not in the mainline 4430 code as yet and therefore the max clock frequency when running the OMAP4460 on the PandaBoard ES with the mainline kernel is 920MHz(same as the OMAP4430).&lt;br /&gt;
&lt;br /&gt;
== wlan12xx ==&lt;br /&gt;
&lt;br /&gt;
== wlan12xx patch ==&lt;br /&gt;
This patch is still necessary to resolve the issue noted in 3.2 and earlier&lt;br /&gt;
&lt;br /&gt;
[[Media:0001a-omap4-pandaboard-wlan-fix.patch|0001a-omap4-pandaboard-wlan-fix.patch]]&lt;br /&gt;
&lt;br /&gt;
Apply it like so: (from inside the kernel sources directory)&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001a-omap4-pandaboard-wlan-fix.patch&lt;br /&gt;
&lt;br /&gt;
NOTE: it applies with offsets which is ok.&lt;br /&gt;
&lt;br /&gt;
The latest wlan firmware is available from git: git://git.kernel.org/?p=linux/kernel/git/firmware/linux-firmware.git just copy the contents of the ti-connectivity folder to /lib/firmware/ti-connectivity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The patch is no longer necessary for the PandaBoard ES but does not seem to hurt if applied. In addition, the race issue that required building as a module has returned. As part of the code cleanup, the wl12xx and wl12xx_sdio drivers no longer depend on each other. This creates an issue with systems that do not use udev or mdev (with a somewhat fiddly &amp;amp; slow script) to load MODALIAS drivers. The quick solution is to modprobe both, the order no longer matters. Just modprobing wl12xx_sdio will no longer automatically load wl12xx.&lt;br /&gt;
&lt;br /&gt;
Linaro has added the equivalent patch to their tilt tree:&lt;br /&gt;
&lt;br /&gt;
 http://git.linaro.org/gitweb?p=landing-teams/working/ti/kernel.git;a=blobdiff;f=arch/arm/mach-omap2/twl-common.c;h=3335b76826f3747013dbff6b7ed4da0d51ff0902;hp=36e05feb92c7e5aae030e0a23f5ef4929797077f;hb=a4b44dff1342b8dfecfed2929ccd58a08bafa964;hpb=2483a772da8c728bc35adad444a14c9d5ded9e70&lt;br /&gt;
&lt;br /&gt;
In -rc1 there is an issue with wl12xx_sdio building as a module, so the recommended way (as implememted in the .config) is to build wl12xx as a single module which includes wl12xx, wl12xx_sdio and wl12xx_core. This can then be modprobed on either PandaBoard (with patch) or PandaBoard ES. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Building 3.5-rc1/rc4/rc5/rc6/rc7 is fairly straight forward.&lt;br /&gt;
Grab the 3.5-rc1/4/5/6/7 sources and use [[Media:config.3.5-rc1.1|config.3.5-rc1.1]], [[Media:config.3.5-rc4.1|config.3.5-rc4.1]], [[Media:config.3.5-rc5.1|config.3.5-rc5.1]], [[Media:config.3.5-rc6.1|config.3.5-rc6.1]] or [[Media:config.3.5-rc7.1|config.3.5-rc7.1]] as the .config &lt;br /&gt;
&lt;br /&gt;
The 3.5-rc1/4/5/6/7 .config enables Sound builtin and wl12xx as a single module. The builtin sound works, as does HDMI sound. Note that the HDMI monitor must be plugged in and enabled for the HDMI sound to work.&lt;br /&gt;
&lt;br /&gt;
Then compile like so:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=Path_to_your/arm-2010q1/bin/arm-none-linux-gnueabi- uImage&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== CPU Frequency Control ===&lt;br /&gt;
&lt;br /&gt;
The 3.5-rc5/6/7 .config also enables SmartReflex as well as OMAP frequency scaling. Default governor is set to performance so the CPU will come up at 1008MHz.&lt;br /&gt;
&lt;br /&gt;
Display the current cpu frequency.&lt;br /&gt;
&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq&lt;br /&gt;
 1008000&lt;br /&gt;
&lt;br /&gt;
Change to the ondemand governor which will reduce the cpu frequency to 300MHz when idle.&lt;br /&gt;
&lt;br /&gt;
 echo ondemand &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq&lt;br /&gt;
 300000&lt;br /&gt;
&lt;br /&gt;
The cpu governor seems to work, and on 4430 get stats, but not on 4460 ie. all zeros.&lt;br /&gt;
&lt;br /&gt;
 # ls /sys/devices/system/cpu/cpu0/cpufreq/stats/&lt;br /&gt;
 time_in_state  total_trans    trans_table&lt;br /&gt;
&lt;br /&gt;
For 4460:&lt;br /&gt;
&lt;br /&gt;
 # echo ondemand &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/stats/*&lt;br /&gt;
 300000 0&lt;br /&gt;
 600000 0&lt;br /&gt;
 800000 0&lt;br /&gt;
 1008000 0&lt;br /&gt;
 0&lt;br /&gt;
   From  :    To&lt;br /&gt;
         :    300000    600000    800000   1008000 &lt;br /&gt;
   300000:         0         0         0         0 &lt;br /&gt;
   600000:         0         0         0         0 &lt;br /&gt;
   800000:         0         0         0         0 &lt;br /&gt;
  1008000:         0         0         0         0 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for 4430:&lt;br /&gt;
&lt;br /&gt;
 # echo ondemand &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/stats/*&lt;br /&gt;
 300000 299&lt;br /&gt;
 600000 0&lt;br /&gt;
 800000 1&lt;br /&gt;
 1008000 1755&lt;br /&gt;
 2&lt;br /&gt;
   From  :    To&lt;br /&gt;
         :    300000    600000    800000   1008000 &lt;br /&gt;
   300000:         0         0         0         0 &lt;br /&gt;
   600000:         0         0         0         0 &lt;br /&gt;
   800000:         0         0         0         1 &lt;br /&gt;
  1008000:         1         0         0         0 &lt;br /&gt;
&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/stats/*&lt;br /&gt;
 300000 546&lt;br /&gt;
 600000 0&lt;br /&gt;
 800000 1&lt;br /&gt;
 1008000 1755&lt;br /&gt;
 2&lt;br /&gt;
   From  :    To&lt;br /&gt;
         :    300000    600000    800000   1008000 &lt;br /&gt;
   300000:         0         0         0         0 &lt;br /&gt;
   600000:         0         0         0         0 &lt;br /&gt;
   800000:         0         0         0         1 &lt;br /&gt;
  1008000:         1         0         0         0 &lt;br /&gt;
&lt;br /&gt;
=== i2cdetect ===&lt;br /&gt;
&lt;br /&gt;
You can run i2cdetect and the results should look like this:&lt;br /&gt;
&lt;br /&gt;
 # i2cdetect -y -r 1&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
 00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 40: -- -- -- -- -- -- -- -- UU UU UU UU -- -- -- -- &lt;br /&gt;
 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 70: -- -- -- -- -- -- -- --&lt;br /&gt;
&lt;br /&gt;
=== wlan ===&lt;br /&gt;
&lt;br /&gt;
Run the following commands after the PandaBoard is booted:&lt;br /&gt;
&lt;br /&gt;
 modprobe wl12xx    ** only if you built the wl12xx drivers a module as recommended&lt;br /&gt;
 ifconfig wlan0 up&lt;br /&gt;
 iwconfig wlan0 essid &amp;quot;Your AccessPoint Name&amp;quot;&lt;br /&gt;
 udhcpc -i wlan0&lt;br /&gt;
&lt;br /&gt;
If your network is set up to provide DHCP services, the PandaBoard will get all the &amp;quot;right stuff(tm)&amp;quot; and you will be able to access the Internet.&lt;br /&gt;
&lt;br /&gt;
 # ping www.google.com&lt;br /&gt;
 PING www.google.com (74.125.73.99): 56 data bytes&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=0 ttl=43 time=62.683 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=1 ttl=43 time=54.077 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=2 ttl=43 time=51.484 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=3 ttl=43 time=54.108 ms&lt;br /&gt;
&lt;br /&gt;
==== WEP ====&lt;br /&gt;
Setting up a WEP key is fairly straightforward and is achieved by adding the command:&lt;br /&gt;
&lt;br /&gt;
 iwconfig wlan0 key C7EE546141233ECCF3FDF68897&lt;br /&gt;
&lt;br /&gt;
after setting the essid&lt;br /&gt;
&lt;br /&gt;
NOTE: the command:&lt;br /&gt;
&lt;br /&gt;
 iwconfig wlan0 key s:panda &lt;br /&gt;
&lt;br /&gt;
would seem to set the key using the ascii passphrase &amp;quot;panda&amp;quot; However, the conversion is not implemented in iwlib (wireless-tools 30-pre9) and will result an a bogus key being set in the wlan.&lt;br /&gt;
&lt;br /&gt;
http://www.powerdog.com/wepkey.cgi can generate hex keys from passphrases and was used to generate C7EE546141233ECCF3FDF68897 from panda.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== USB Performance ===&lt;br /&gt;
&lt;br /&gt;
Insert a USB memory stick into one of the usb ports&lt;br /&gt;
&lt;br /&gt;
Run dmesg to see what sdx the stick was recognised as, then:&lt;br /&gt;
&lt;br /&gt;
 hdparam -tT /dev/sdx&lt;br /&gt;
&lt;br /&gt;
If you run the same command on a desktop Linux system, with the same USB memory stick, the PandaBoard's speed should roughly be the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PandaBoard]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/File:Config.3.5-rc7.1</id>
		<title>File:Config.3.5-rc7.1</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/File:Config.3.5-rc7.1"/>
				<updated>2012-07-16T16:19:45Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: .config for 3.5-rc7, EHCI is enabled.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.config for 3.5-rc7, EHCI is enabled.&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/PandaBoard</id>
		<title>PandaBoard</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/PandaBoard"/>
				<updated>2012-07-08T16:00:01Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: /* How To's */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://www.pandaboard.org PandaBoard] is an [[OMAP4430]] ([[Cortex]]-A9) based low cost development platform.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
* OMAP4 (Cortex-A9) CPU based open development platform.&lt;br /&gt;
** OMAP4430 Application processor&lt;br /&gt;
** 1GB low-power DDR2&lt;br /&gt;
** Display HDMI v1.3 Connector (Type A) to drive HD displays, DVI-D Connector (can drive a 2nd display, simultaneous display; requires HDMI to DVI-D adapter), LCD expansion header&lt;br /&gt;
** 3.5&amp;quot; audio in/out and HDMI Audio out&lt;br /&gt;
** Full size SD/MMC card&lt;br /&gt;
** Built in 802.11 &amp;amp; Bluetooth v2.1+EDR&lt;br /&gt;
** Onboard 10/100 Ethernet&lt;br /&gt;
** Expansion: 1xUSB OTG, 2xUSB HS host ports, General purpose expansion header (I2C, GPMC, USB, MMC, DSS, ETM)&lt;br /&gt;
** JTAG, UART/RS-232, 2 status LEDs, 1GPIO button&lt;br /&gt;
&lt;br /&gt;
More details can be found [http://pandaboard.org/content/platform here]&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Front&lt;br /&gt;
[[File:PandaBoard_front.png|320px]]&lt;br /&gt;
&lt;br /&gt;
A hi resolution picture of the PandaBoard EA1 front is available here: http://elinux.org/images/d/d4/Panda_front.jpg&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Back&lt;br /&gt;
[[File:Panda_back.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
= Availability =&lt;br /&gt;
PandaBoard are in production and can be ordered from [http://pandaboard.org/content/buy Worldwide distributors]. You can also easily identify the board you have using [http://omappedia.org/wiki/PandaBoard_Revisions Board revision id]&lt;br /&gt;
&lt;br /&gt;
== Rev A3 ==&lt;br /&gt;
Latest version of the board.&lt;br /&gt;
&lt;br /&gt;
== Rev A1/A2  ==&lt;br /&gt;
[http://omappedia.org/wiki/PandaBoard_Revisions#Rev_A2 Details]&lt;br /&gt;
&lt;br /&gt;
== Rev EA1/EA2 ==&lt;br /&gt;
These were limited number of 'Early Adopter' boards that built prior to production versions. [http://omappedia.org/wiki/PandaBoard_Revisions#Rev_EA1 more details]&lt;br /&gt;
&lt;br /&gt;
== Rev ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoare-ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the MLO/u-boot/kernel be specifically crafted for the 4460. The thermal management is not in the mainline 4430 code as yet and could cause unwanted thermal problems. So BEWARE of running any code built for the non -ES PandaBoard on the -ES model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Accessories =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_Bamboo|Bamboo Board]]&lt;br /&gt;
* [[BeagleBoard_Trainer|Trainer Board]]&lt;br /&gt;
* [https://specialcomp.com/pandaboard/order.htm Acrylic case]&lt;br /&gt;
* [http://bb-lvds.blogspot.com 10&amp;quot; LCD LVDS plug-and-play bundle with capacitance touchscreen and ambient light sensor]&lt;br /&gt;
*[[File:Beadaframe.jpg|200px|thumb|BeadaFrame]][http://www.nxelec.com/products/hmi/beadaframe-pandaboard BeadaFrame] 7&amp;quot; LCD display kit&lt;br /&gt;
** 7&amp;quot; 800x480 TFT LCD screen&lt;br /&gt;
** PWM Backlight control&lt;br /&gt;
** Resistive touch panel&lt;br /&gt;
** RTC time keeper &lt;br /&gt;
** Plastic frame&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Recommended Reading Material =&lt;br /&gt;
&lt;br /&gt;
* [[Embedded_Linux_System_Design_and_Development]]&lt;br /&gt;
* [[Embedded_linux_primer]]&lt;br /&gt;
* [[Building_Embedded_Linux_Systems]]&lt;br /&gt;
* [[Essential_Linux_Device_Drivers]]&lt;br /&gt;
* [[Linux_Device_Drivers]]&lt;br /&gt;
&lt;br /&gt;
= How To's =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_MLO_&amp;amp;_u-boot|How to build MLO and u-boot]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/23/2011'''&lt;br /&gt;
* [[Panda_How_to_Barebox|How to build Barebox]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 11/12/2011'''&lt;br /&gt;
* [[PandaBoard_ES_uboot_howto|How to build u-boot and SPL]] for PandaBoard and PandaBoard ES '''--&amp;gt;&amp;gt; Updated 12/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rel|How to build 3.2 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_3_rcx|How to build 3.3-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_3_rel|How to build 3.3 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/19/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_4_rel|How to build 3.4 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; NEW 6/3/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_5_rcx|How to build 3.5-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/8/2012'''&lt;br /&gt;
* [[Panda_How_to_add_2_USBs|How to add two additional USB connections]] to the PandaBoard&lt;br /&gt;
* [[Panda_How_to_add_Power_Switch|How to add a power switch]] to the PandaBoard '''--&amp;gt;&amp;gt; WIP'''&lt;br /&gt;
* [[PandaBoard Power Measurements]]&lt;br /&gt;
&lt;br /&gt;
== Older How To's ==&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_buildroot|How to build a minimal file system using buildroot]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel|How to build a kernel using the buildroot toolchain from above]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel_new|How to build 2.6.38-rcx kernels]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/15/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_38|How to build 2.6.38 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/16/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39|How to build 2.6.39-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/12/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39rel|How to build 2.6.39 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rel|How to build 3.0 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/29/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rcx|How to build 3.0-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/11/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rcx|How to build 3.1-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/5/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rel|How to build 3.1 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/31/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rcx|How to build 3.2-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
&lt;br /&gt;
= Community =&lt;br /&gt;
 &lt;br /&gt;
Website: [http://pandaboard.org http://pandaboard.org]&lt;br /&gt;
&lt;br /&gt;
IRC: #pandaboard @irc.freenode.net&lt;br /&gt;
&lt;br /&gt;
Mailing List: [http://groups.google.com/group/pandaboard pandaboard@googlegroups.com]&lt;br /&gt;
&lt;br /&gt;
[[category:OMAP]]&lt;br /&gt;
[[category:omap4430]]&lt;br /&gt;
[[category:PandaBoard]]&lt;br /&gt;
[[category:Development Boards]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_kernel_3_5_rcx</id>
		<title>Panda How to kernel 3 5 rcx</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_kernel_3_5_rcx"/>
				<updated>2012-07-08T15:59:29Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Kernel 3.5 merge window has closed and 3.5-rc1 has been released.&lt;br /&gt;
&lt;br /&gt;
You can download a tarball of the mainline kernel at http://kernel.org/&lt;br /&gt;
&lt;br /&gt;
or you can clone a copy of mainline kernel with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
cd linux&lt;br /&gt;
git checkout v3.5-rcx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Important Note '''&lt;br /&gt;
There has been a lot of work done on the HDMI interface and its related driver omapdrm. Between kernel 3.1 and 3.2-rc1 enough changed so that the Testing section on the HDMI interface has been removed from this How-To. The HDMI testing section below will return when the code stabilises. &lt;br /&gt;
&lt;br /&gt;
=== rc1 ===&lt;br /&gt;
&lt;br /&gt;
Many changes in OMAP and Panda specific code since 3.4 was released. The HDMI, DVI interfaces both work under certain circumstances and properly read the EDID info from the monitor. HDMI sound is now functional. Changes to the WLAN code continue, and WLAN does function as well under the proper circumstances.&lt;br /&gt;
&lt;br /&gt;
=== rc4 ===&lt;br /&gt;
&lt;br /&gt;
-rc4 has a few omap4 related changes, but nothing specific to the PandaBoard. &lt;br /&gt;
&lt;br /&gt;
=== rc5 ===&lt;br /&gt;
&lt;br /&gt;
-rc5 does not have any OMAP or PandaBoard specific changes. &lt;br /&gt;
&lt;br /&gt;
=== rc6 ===&lt;br /&gt;
&lt;br /&gt;
Several OMAP4 related changes, but not much, Closing in on the release according to Linus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The WL12xx driver on a PandaBoard still needs the same patch as used for 3.1 and 3.2. When the driver isn't happy, the error messages are somewhat less than useful, however the drivers/firmware are being constantly improved and it would not be a good idea to have the driver support anything but the latest firmware.&lt;br /&gt;
With the modules built in, operation is not consistent. The PandaBoard ES does not need the patch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoard ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the [[PandaBoard_ES_uboot_howto| MLO/u-boot be specifically crafted for the 4460]]. The thermal management is not in the mainline 4430 code as yet and therefore the max clock frequency when running the OMAP4460 on the PandaBoard ES with the mainline kernel is 920MHz(same as the OMAP4430).&lt;br /&gt;
&lt;br /&gt;
== wlan12xx ==&lt;br /&gt;
&lt;br /&gt;
== wlan12xx patch ==&lt;br /&gt;
This patch is still necessary to resolve the issue noted in 3.2 and earlier&lt;br /&gt;
&lt;br /&gt;
[[Media:0001a-omap4-pandaboard-wlan-fix.patch|0001a-omap4-pandaboard-wlan-fix.patch]]&lt;br /&gt;
&lt;br /&gt;
Apply it like so: (from inside the kernel sources directory)&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001a-omap4-pandaboard-wlan-fix.patch&lt;br /&gt;
&lt;br /&gt;
NOTE: it applies with offsets which is ok.&lt;br /&gt;
&lt;br /&gt;
The latest wlan firmware is available from git: git://git.kernel.org/?p=linux/kernel/git/firmware/linux-firmware.git just copy the contents of the ti-connectivity folder to /lib/firmware/ti-connectivity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The patch is no longer necessary for the PandaBoard ES but does not seem to hurt if applied. In addition, the race issue that required building as a module has returned. As part of the code cleanup, the wl12xx and wl12xx_sdio drivers no longer depend on each other. This creates an issue with systems that do not use udev or mdev (with a somewhat fiddly &amp;amp; slow script) to load MODALIAS drivers. The quick solution is to modprobe both, the order no longer matters. Just modprobing wl12xx_sdio will no longer automatically load wl12xx.&lt;br /&gt;
&lt;br /&gt;
Linaro has added the equivalent patch to their tilt tree:&lt;br /&gt;
&lt;br /&gt;
 http://git.linaro.org/gitweb?p=landing-teams/working/ti/kernel.git;a=blobdiff;f=arch/arm/mach-omap2/twl-common.c;h=3335b76826f3747013dbff6b7ed4da0d51ff0902;hp=36e05feb92c7e5aae030e0a23f5ef4929797077f;hb=a4b44dff1342b8dfecfed2929ccd58a08bafa964;hpb=2483a772da8c728bc35adad444a14c9d5ded9e70&lt;br /&gt;
&lt;br /&gt;
In -rc1 there is an issue with wl12xx_sdio building as a module, so the recommended way (as implememted in the .config) is to build wl12xx as a single module which includes wl12xx, wl12xx_sdio and wl12xx_core. This can then be modprobed on either PandaBoard (with patch) or PandaBoard ES. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Building 3.5-rc1/rc4/rc5/rc6 is fairly straight forward.&lt;br /&gt;
Grab the 3.5-rc1/4/5/6 sources and use [[Media:config.3.5-rc1.1|config.3.5-rc1.1]], [[Media:config.3.5-rc4.1|config.3.5-rc4.1]], [[Media:config.3.5-rc5.1|config.3.5-rc5.1]] or [[Media:config.3.5-rc6.1|config.3.5-rc6.1]] as the .config &lt;br /&gt;
&lt;br /&gt;
The 3.5-rc1/4/5/6 .config enables Sound builtin and wl12xx as a single module. The builtin sound works, as does HDMI sound. Note that the HDMI monitor must be plugged in and enabled for the HDMI sound to work.&lt;br /&gt;
&lt;br /&gt;
Then compile like so:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=Path_to_your/arm-2010q1/bin/arm-none-linux-gnueabi- uImage&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== CPU Frequency Control ===&lt;br /&gt;
&lt;br /&gt;
The 3.5-rc5/6 .config also enables SmartReflex as well as OMAP frequency scaling. Default governor is set to performance so the CPU will come up at 1008MHz.&lt;br /&gt;
&lt;br /&gt;
Display the current cpu frequency.&lt;br /&gt;
&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq&lt;br /&gt;
 1008000&lt;br /&gt;
&lt;br /&gt;
Change to the ondemand governor which will reduce the cpu frequency to 300MHz when idle.&lt;br /&gt;
&lt;br /&gt;
 echo ondemand &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq&lt;br /&gt;
 300000&lt;br /&gt;
&lt;br /&gt;
The cpu governor seems to work, and on 4430 get stats, but not on 4460 ie. all zeros.&lt;br /&gt;
&lt;br /&gt;
 # ls /sys/devices/system/cpu/cpu0/cpufreq/stats/&lt;br /&gt;
 time_in_state  total_trans    trans_table&lt;br /&gt;
&lt;br /&gt;
For 4460:&lt;br /&gt;
&lt;br /&gt;
 # echo ondemand &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/stats/*&lt;br /&gt;
 300000 0&lt;br /&gt;
 600000 0&lt;br /&gt;
 800000 0&lt;br /&gt;
 1008000 0&lt;br /&gt;
 0&lt;br /&gt;
   From  :    To&lt;br /&gt;
         :    300000    600000    800000   1008000 &lt;br /&gt;
   300000:         0         0         0         0 &lt;br /&gt;
   600000:         0         0         0         0 &lt;br /&gt;
   800000:         0         0         0         0 &lt;br /&gt;
  1008000:         0         0         0         0 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for 4430:&lt;br /&gt;
&lt;br /&gt;
 # echo ondemand &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/stats/*&lt;br /&gt;
 300000 299&lt;br /&gt;
 600000 0&lt;br /&gt;
 800000 1&lt;br /&gt;
 1008000 1755&lt;br /&gt;
 2&lt;br /&gt;
   From  :    To&lt;br /&gt;
         :    300000    600000    800000   1008000 &lt;br /&gt;
   300000:         0         0         0         0 &lt;br /&gt;
   600000:         0         0         0         0 &lt;br /&gt;
   800000:         0         0         0         1 &lt;br /&gt;
  1008000:         1         0         0         0 &lt;br /&gt;
&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/stats/*&lt;br /&gt;
 300000 546&lt;br /&gt;
 600000 0&lt;br /&gt;
 800000 1&lt;br /&gt;
 1008000 1755&lt;br /&gt;
 2&lt;br /&gt;
   From  :    To&lt;br /&gt;
         :    300000    600000    800000   1008000 &lt;br /&gt;
   300000:         0         0         0         0 &lt;br /&gt;
   600000:         0         0         0         0 &lt;br /&gt;
   800000:         0         0         0         1 &lt;br /&gt;
  1008000:         1         0         0         0 &lt;br /&gt;
&lt;br /&gt;
=== i2cdetect ===&lt;br /&gt;
&lt;br /&gt;
You can run i2cdetect and the results should look like this:&lt;br /&gt;
&lt;br /&gt;
 # i2cdetect -y -r 1&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
 00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 40: -- -- -- -- -- -- -- -- UU UU UU UU -- -- -- -- &lt;br /&gt;
 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 70: -- -- -- -- -- -- -- --&lt;br /&gt;
&lt;br /&gt;
=== wlan ===&lt;br /&gt;
&lt;br /&gt;
Run the following commands after the PandaBoard is booted:&lt;br /&gt;
&lt;br /&gt;
 modprobe wl12xx    ** only if you built the wl12xx drivers a module as recommended&lt;br /&gt;
 ifconfig wlan0 up&lt;br /&gt;
 iwconfig wlan0 essid &amp;quot;Your AccessPoint Name&amp;quot;&lt;br /&gt;
 udhcpc -i wlan0&lt;br /&gt;
&lt;br /&gt;
If your network is set up to provide DHCP services, the PandaBoard will get all the &amp;quot;right stuff(tm)&amp;quot; and you will be able to access the Internet.&lt;br /&gt;
&lt;br /&gt;
 # ping www.google.com&lt;br /&gt;
 PING www.google.com (74.125.73.99): 56 data bytes&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=0 ttl=43 time=62.683 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=1 ttl=43 time=54.077 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=2 ttl=43 time=51.484 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=3 ttl=43 time=54.108 ms&lt;br /&gt;
&lt;br /&gt;
==== WEP ====&lt;br /&gt;
Setting up a WEP key is fairly straightforward and is achieved by adding the command:&lt;br /&gt;
&lt;br /&gt;
 iwconfig wlan0 key C7EE546141233ECCF3FDF68897&lt;br /&gt;
&lt;br /&gt;
after setting the essid&lt;br /&gt;
&lt;br /&gt;
NOTE: the command:&lt;br /&gt;
&lt;br /&gt;
 iwconfig wlan0 key s:panda &lt;br /&gt;
&lt;br /&gt;
would seem to set the key using the ascii passphrase &amp;quot;panda&amp;quot; However, the conversion is not implemented in iwlib (wireless-tools 30-pre9) and will result an a bogus key being set in the wlan.&lt;br /&gt;
&lt;br /&gt;
http://www.powerdog.com/wepkey.cgi can generate hex keys from passphrases and was used to generate C7EE546141233ECCF3FDF68897 from panda.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== USB Performance ===&lt;br /&gt;
&lt;br /&gt;
Insert a USB memory stick into one of the usb ports&lt;br /&gt;
&lt;br /&gt;
Run dmesg to see what sdx the stick was recognised as, then:&lt;br /&gt;
&lt;br /&gt;
 hdparam -tT /dev/sdx&lt;br /&gt;
&lt;br /&gt;
If you run the same command on a desktop Linux system, with the same USB memory stick, the PandaBoard's speed should roughly be the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PandaBoard]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/File:Config.3.5-rc6.1</id>
		<title>File:Config.3.5-rc6.1</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/File:Config.3.5-rc6.1"/>
				<updated>2012-07-08T15:58:51Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: .config for -rc6 includes SmartReflex and cpu freq scaling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.config for -rc6 includes SmartReflex and cpu freq scaling&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_kernel_3_5_rcx</id>
		<title>Panda How to kernel 3 5 rcx</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_kernel_3_5_rcx"/>
				<updated>2012-07-01T14:46:53Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Kernel 3.5 merge window has closed and 3.5-rc1 has been released.&lt;br /&gt;
&lt;br /&gt;
You can download a tarball of the mainline kernel at http://kernel.org/&lt;br /&gt;
&lt;br /&gt;
or you can clone a copy of mainline kernel with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
cd linux&lt;br /&gt;
git checkout v3.5-rcx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Important Note '''&lt;br /&gt;
There has been a lot of work done on the HDMI interface and its related driver omapdrm. Between kernel 3.1 and 3.2-rc1 enough changed so that the Testing section on the HDMI interface has been removed from this How-To. The HDMI testing section below will return when the code stabilises. &lt;br /&gt;
&lt;br /&gt;
=== rc1 ===&lt;br /&gt;
&lt;br /&gt;
Many changes in OMAP and Panda specific code since 3.4 was released. The HDMI, DVI interfaces both work under certain circumstances and properly read the EDID info from the monitor. HDMI sound is now functional. Changes to the WLAN code continue, and WLAN does function as well under the proper circumstances.&lt;br /&gt;
&lt;br /&gt;
=== rc4 ===&lt;br /&gt;
&lt;br /&gt;
-rc4 has a few omap4 related changes, but nothing specific to the PandaBoard. &lt;br /&gt;
&lt;br /&gt;
=== rc5 ===&lt;br /&gt;
&lt;br /&gt;
-rc5 does not have any OMAP or PandaBoard specific changes. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The WL12xx driver on a PandaBoard still needs the same patch as used for 3.1 and 3.2. When the driver isn't happy, the error messages are somewhat less than useful, however the drivers/firmware are being constantly improved and it would not be a good idea to have the driver support anything but the latest firmware.&lt;br /&gt;
With the modules built in, operation is not consistent. The PandaBoard ES does not need the patch.&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoard ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the [[PandaBoard_ES_uboot_howto| MLO/u-boot be specifically crafted for the 4460]]. The thermal management is not in the mainline 4430 code as yet and therefore the max clock frequency when running the OMAP4460 on the PandaBoard ES with the mainline kernel is 920MHz(same as the OMAP4430).&lt;br /&gt;
&lt;br /&gt;
== wlan12xx ==&lt;br /&gt;
&lt;br /&gt;
== wlan12xx patch ==&lt;br /&gt;
This patch is still necessary to resolve the issue noted in 3.2 and earlier&lt;br /&gt;
&lt;br /&gt;
[[Media:0001a-omap4-pandaboard-wlan-fix.patch|0001a-omap4-pandaboard-wlan-fix.patch]]&lt;br /&gt;
&lt;br /&gt;
Apply it like so: (from inside the kernel sources directory)&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001a-omap4-pandaboard-wlan-fix.patch&lt;br /&gt;
&lt;br /&gt;
NOTE: it applies with offsets which is ok.&lt;br /&gt;
&lt;br /&gt;
The latest wlan firmware is available from git: git://git.kernel.org/?p=linux/kernel/git/firmware/linux-firmware.git just copy the contents of the ti-connectivity folder to /lib/firmware/ti-connectivity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The patch is no longer necessary for the PandaBoard ES but does not seem to hurt if applied. In addition, the race issue that required building as a module has returned. As part of the code cleanup, the wl12xx and wl12xx_sdio drivers no longer depend on each other. This creates an issue with systems that do not use udev or mdev (with a somewhat fiddly &amp;amp; slow script) to load MODALIAS drivers. The quick solution is to modprobe both, the order no longer matters. Just modprobing wl12xx_sdio will no longer automatically load wl12xx.&lt;br /&gt;
&lt;br /&gt;
In -rc1 there is an issue with wl12xx_sdio building as a module, so the recommended way (as implememted in the .config) is to build wl12xx as a single module which includes wl12xx, wl12xx_sdio and wl12xx_core. This can then be modprobed on either PandaBoard (with patch) or PandaBoard ES. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
Building 3.5-rc1/rc4/rc5 is fairly straight forward.&lt;br /&gt;
Grab the 3.5-rc1/4/5 sources and use [[Media:config.3.5-rc1.1|config.3.5-rc1.1]], [[Media:config.3.5-rc4.1|config.3.5-rc4.1]] or [[Media:config.3.5-rc5.1|config.3.5-rc5.1]] as the .config &lt;br /&gt;
&lt;br /&gt;
The 3.5-rc1/4/5 .config enables Sound builtin and wl12xx as a single module. The builtin sound works, as does HDMI sound. Note that the HDMI monitor must be plugged in and enabled for the HDMI sound to work.&lt;br /&gt;
&lt;br /&gt;
Then compile like so:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=Path_to_your/arm-2010q1/bin/arm-none-linux-gnueabi- uImage&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== CPU Frequency Control ===&lt;br /&gt;
&lt;br /&gt;
The 3.5-rc5 .config also enables SmartReflex as well as OMAP frequency scaling. Default governor is set to performance so the CPU will come up at 1008MHz.&lt;br /&gt;
&lt;br /&gt;
Display the current cpu frequency.&lt;br /&gt;
&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq&lt;br /&gt;
 1008000&lt;br /&gt;
&lt;br /&gt;
Change to the ondemand governor which will reduce the cpu frequency to 300MHz when idle.&lt;br /&gt;
&lt;br /&gt;
 echo ondemand &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq&lt;br /&gt;
 300000&lt;br /&gt;
&lt;br /&gt;
The cpu governor seems to work, and on 4430 get stats, but not on 4460 ie. all zeros.&lt;br /&gt;
&lt;br /&gt;
 # ls /sys/devices/system/cpu/cpu0/cpufreq/stats/&lt;br /&gt;
 time_in_state  total_trans    trans_table&lt;br /&gt;
&lt;br /&gt;
For 4460:&lt;br /&gt;
&lt;br /&gt;
 # echo ondemand &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/stats/*&lt;br /&gt;
 300000 0&lt;br /&gt;
 600000 0&lt;br /&gt;
 800000 0&lt;br /&gt;
 1008000 0&lt;br /&gt;
 0&lt;br /&gt;
   From  :    To&lt;br /&gt;
         :    300000    600000    800000   1008000 &lt;br /&gt;
   300000:         0         0         0         0 &lt;br /&gt;
   600000:         0         0         0         0 &lt;br /&gt;
   800000:         0         0         0         0 &lt;br /&gt;
  1008000:         0         0         0         0 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for 4430:&lt;br /&gt;
&lt;br /&gt;
 # echo ondemand &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/stats/*&lt;br /&gt;
 300000 299&lt;br /&gt;
 600000 0&lt;br /&gt;
 800000 1&lt;br /&gt;
 1008000 1755&lt;br /&gt;
 2&lt;br /&gt;
   From  :    To&lt;br /&gt;
         :    300000    600000    800000   1008000 &lt;br /&gt;
   300000:         0         0         0         0 &lt;br /&gt;
   600000:         0         0         0         0 &lt;br /&gt;
   800000:         0         0         0         1 &lt;br /&gt;
  1008000:         1         0         0         0 &lt;br /&gt;
&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/stats/*&lt;br /&gt;
 300000 546&lt;br /&gt;
 600000 0&lt;br /&gt;
 800000 1&lt;br /&gt;
 1008000 1755&lt;br /&gt;
 2&lt;br /&gt;
   From  :    To&lt;br /&gt;
         :    300000    600000    800000   1008000 &lt;br /&gt;
   300000:         0         0         0         0 &lt;br /&gt;
   600000:         0         0         0         0 &lt;br /&gt;
   800000:         0         0         0         1 &lt;br /&gt;
  1008000:         1         0         0         0 &lt;br /&gt;
&lt;br /&gt;
=== i2cdetect ===&lt;br /&gt;
&lt;br /&gt;
You can run i2cdetect and the results should look like this:&lt;br /&gt;
&lt;br /&gt;
 # i2cdetect -y -r 1&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
 00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 40: -- -- -- -- -- -- -- -- UU UU UU UU -- -- -- -- &lt;br /&gt;
 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 70: -- -- -- -- -- -- -- --&lt;br /&gt;
&lt;br /&gt;
=== wlan ===&lt;br /&gt;
&lt;br /&gt;
Run the following commands after the PandaBoard is booted:&lt;br /&gt;
&lt;br /&gt;
 modprobe wl12xx    ** only if you built the wl12xx drivers a module as recommended&lt;br /&gt;
 ifconfig wlan0 up&lt;br /&gt;
 iwconfig wlan0 essid &amp;quot;Your AccessPoint Name&amp;quot;&lt;br /&gt;
 udhcpc -i wlan0&lt;br /&gt;
&lt;br /&gt;
If your network is set up to provide DHCP services, the PandaBoard will get all the &amp;quot;right stuff(tm)&amp;quot; and you will be able to access the Internet.&lt;br /&gt;
&lt;br /&gt;
 # ping www.google.com&lt;br /&gt;
 PING www.google.com (74.125.73.99): 56 data bytes&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=0 ttl=43 time=62.683 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=1 ttl=43 time=54.077 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=2 ttl=43 time=51.484 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=3 ttl=43 time=54.108 ms&lt;br /&gt;
&lt;br /&gt;
==== WEP ====&lt;br /&gt;
Setting up a WEP key is fairly straightforward and is achieved by adding the command:&lt;br /&gt;
&lt;br /&gt;
 iwconfig wlan0 key C7EE546141233ECCF3FDF68897&lt;br /&gt;
&lt;br /&gt;
after setting the essid&lt;br /&gt;
&lt;br /&gt;
NOTE: the command:&lt;br /&gt;
&lt;br /&gt;
 iwconfig wlan0 key s:panda &lt;br /&gt;
&lt;br /&gt;
would seem to set the key using the ascii passphrase &amp;quot;panda&amp;quot; However, the conversion is not implemented in iwlib (wireless-tools 30-pre9) and will result an a bogus key being set in the wlan.&lt;br /&gt;
&lt;br /&gt;
http://www.powerdog.com/wepkey.cgi can generate hex keys from passphrases and was used to generate C7EE546141233ECCF3FDF68897 from panda.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== USB Performance ===&lt;br /&gt;
&lt;br /&gt;
Insert a USB memory stick into one of the usb ports&lt;br /&gt;
&lt;br /&gt;
Run dmesg to see what sdx the stick was recognised as, then:&lt;br /&gt;
&lt;br /&gt;
 hdparam -tT /dev/sdx&lt;br /&gt;
&lt;br /&gt;
If you run the same command on a desktop Linux system, with the same USB memory stick, the PandaBoard's speed should roughly be the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PandaBoard]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_kernel_3_5_rcx</id>
		<title>Panda How to kernel 3 5 rcx</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_kernel_3_5_rcx"/>
				<updated>2012-07-01T14:32:19Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Kernel 3.5 merge window has closed and 3.5-rc1 has been released.&lt;br /&gt;
&lt;br /&gt;
You can download a tarball of the mainline kernel at http://kernel.org/&lt;br /&gt;
&lt;br /&gt;
or you can clone a copy of mainline kernel with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
cd linux&lt;br /&gt;
git checkout v3.5-rcx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Important Note '''&lt;br /&gt;
There has been a lot of work done on the HDMI interface and its related driver omapdrm. Between kernel 3.1 and 3.2-rc1 enough changed so that the Testing section on the HDMI interface has been removed from this How-To. The HDMI testing section below will return when the code stabilises. &lt;br /&gt;
&lt;br /&gt;
=== rc1 ===&lt;br /&gt;
&lt;br /&gt;
Many changes in OMAP and Panda specific code since 3.4 was released. The HDMI, DVI interfaces both work under certain circumstances and properly read the EDID info from the monitor. HDMI sound is now functional. Changes to the WLAN code continue, and WLAN does function as well under the proper circumstances.&lt;br /&gt;
&lt;br /&gt;
=== rc4 ===&lt;br /&gt;
&lt;br /&gt;
-rc4 has a few omap4 related changes, but nothing specific to the PandaBoard. &lt;br /&gt;
&lt;br /&gt;
=== rc5 ===&lt;br /&gt;
&lt;br /&gt;
-rc5 does not have any OMAP or PandaBoard specific changes. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The WL12xx driver on a PandaBoard still needs the same patch as used for 3.1 and 3.2. When the driver isn't happy, the error messages are somewhat less than useful, however the drivers/firmware are being constantly improved and it would not be a good idea to have the driver support anything but the latest firmware.&lt;br /&gt;
With the modules built in, operation is not consistent. The PandaBoard ES does not need the patch.&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoard ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the [[PandaBoard_ES_uboot_howto| MLO/u-boot be specifically crafted for the 4460]]. The thermal management is not in the mainline 4430 code as yet and therefore the max clock frequency when running the OMAP4460 on the PandaBoard ES with the mainline kernel is 920MHz(same as the OMAP4430).&lt;br /&gt;
&lt;br /&gt;
== wlan12xx ==&lt;br /&gt;
&lt;br /&gt;
== wlan12xx patch ==&lt;br /&gt;
This patch is still necessary to resolve the issue noted in 3.2 and earlier&lt;br /&gt;
&lt;br /&gt;
[[Media:0001a-omap4-pandaboard-wlan-fix.patch|0001a-omap4-pandaboard-wlan-fix.patch]]&lt;br /&gt;
&lt;br /&gt;
Apply it like so: (from inside the kernel sources directory)&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001a-omap4-pandaboard-wlan-fix.patch&lt;br /&gt;
&lt;br /&gt;
NOTE: it applies with offsets which is ok.&lt;br /&gt;
&lt;br /&gt;
The latest wlan firmware is available from git: git://git.kernel.org/?p=linux/kernel/git/firmware/linux-firmware.git just copy the contents of the ti-connectivity folder to /lib/firmware/ti-connectivity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The patch is no longer necessary for the PandaBoard ES but does not seem to hurt if applied. In addition, the race issue that required building as a module has returned. As part of the code cleanup, the wl12xx and wl12xx_sdio drivers no longer depend on each other. This creates an issue with systems that do not use udev or mdev (with a somewhat fiddly &amp;amp; slow script) to load MODALIAS drivers. The quick solution is to modprobe both, the order no longer matters. Just modprobing wl12xx_sdio will no longer automatically load wl12xx.&lt;br /&gt;
&lt;br /&gt;
In -rc1 there is an issue with wl12xx_sdio building as a module, so the recommended way (as implememted in the .config) is to build wl12xx as a single module which includes wl12xx, wl12xx_sdio and wl12xx_core. This can then be modprobed on either PandaBoard (with patch) or PandaBoard ES. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
Building 3.5-rc1/rc4/rc5 is fairly straight forward.&lt;br /&gt;
Grab the 3.5-rc1/4/5 sources and use [[Media:config.3.5-rc1.1|config.3.5-rc1.1]], [[Media:config.3.5-rc4.1|config.3.5-rc4.1]] or [[Media:config.3.5-rc5.1|config.3.5-rc5.1]] as the .config &lt;br /&gt;
&lt;br /&gt;
The 3.5-rc1/4/5 .config enables Sound builtin and wl12xx as a single module. The builtin sound works, as does HDMI sound. Note that the HDMI monitor must be plugged in and enabled for the HDMI sound to work.&lt;br /&gt;
&lt;br /&gt;
Then compile like so:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=Path_to_your/arm-2010q1/bin/arm-none-linux-gnueabi- uImage&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== CPU Frequency Control ===&lt;br /&gt;
&lt;br /&gt;
The 3.5-rc5 .config also enables SmartReflex as well as OMAP frequency scaling. Default governor is set to performance so the CPU will come up at 1008MHz.&lt;br /&gt;
&lt;br /&gt;
 echo ondemand &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor&lt;br /&gt;
&lt;br /&gt;
Will change to the ondemand governor and reduce the cpu frequency to 300MHz when idle.&lt;br /&gt;
&lt;br /&gt;
Display the current cpu frequency.&lt;br /&gt;
&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq&lt;br /&gt;
 1008000&lt;br /&gt;
&lt;br /&gt;
The cpu governor seems to work, and on 4430 get stats, but not on 4460 ie. all zeros.&lt;br /&gt;
&lt;br /&gt;
 # ls /sys/devices/system/cpu/cpu0/cpufreq/stats/&lt;br /&gt;
 time_in_state  total_trans    trans_table&lt;br /&gt;
&lt;br /&gt;
For 4460:&lt;br /&gt;
&lt;br /&gt;
 # echo ondemand &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/stats/*&lt;br /&gt;
 300000 0&lt;br /&gt;
 600000 0&lt;br /&gt;
 800000 0&lt;br /&gt;
 1008000 0&lt;br /&gt;
 0&lt;br /&gt;
   From  :    To&lt;br /&gt;
         :    300000    600000    800000   1008000 &lt;br /&gt;
   300000:         0         0         0         0 &lt;br /&gt;
   600000:         0         0         0         0 &lt;br /&gt;
   800000:         0         0         0         0 &lt;br /&gt;
  1008000:         0         0         0         0 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for 4430:&lt;br /&gt;
&lt;br /&gt;
 # echo ondemand &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/stats/*&lt;br /&gt;
 300000 299&lt;br /&gt;
 600000 0&lt;br /&gt;
 800000 1&lt;br /&gt;
 1008000 1755&lt;br /&gt;
 2&lt;br /&gt;
   From  :    To&lt;br /&gt;
         :    300000    600000    800000   1008000 &lt;br /&gt;
   300000:         0         0         0         0 &lt;br /&gt;
   600000:         0         0         0         0 &lt;br /&gt;
   800000:         0         0         0         1 &lt;br /&gt;
  1008000:         1         0         0         0 &lt;br /&gt;
&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/stats/*&lt;br /&gt;
 300000 546&lt;br /&gt;
 600000 0&lt;br /&gt;
 800000 1&lt;br /&gt;
 1008000 1755&lt;br /&gt;
 2&lt;br /&gt;
   From  :    To&lt;br /&gt;
         :    300000    600000    800000   1008000 &lt;br /&gt;
   300000:         0         0         0         0 &lt;br /&gt;
   600000:         0         0         0         0 &lt;br /&gt;
   800000:         0         0         0         1 &lt;br /&gt;
  1008000:         1         0         0         0 &lt;br /&gt;
&lt;br /&gt;
=== i2cdetect ===&lt;br /&gt;
&lt;br /&gt;
You can run i2cdetect and the results should look like this:&lt;br /&gt;
&lt;br /&gt;
 # i2cdetect -y -r 1&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
 00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 40: -- -- -- -- -- -- -- -- UU UU UU UU -- -- -- -- &lt;br /&gt;
 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 70: -- -- -- -- -- -- -- --&lt;br /&gt;
&lt;br /&gt;
=== wlan ===&lt;br /&gt;
&lt;br /&gt;
Run the following commands after the PandaBoard is booted:&lt;br /&gt;
&lt;br /&gt;
 modprobe wl12xx    ** only if you built the wl12xx drivers a module as recommended&lt;br /&gt;
 ifconfig wlan0 up&lt;br /&gt;
 iwconfig wlan0 essid &amp;quot;Your AccessPoint Name&amp;quot;&lt;br /&gt;
 udhcpc -i wlan0&lt;br /&gt;
&lt;br /&gt;
If your network is set up to provide DHCP services, the PandaBoard will get all the &amp;quot;right stuff(tm)&amp;quot; and you will be able to access the Internet.&lt;br /&gt;
&lt;br /&gt;
 # ping www.google.com&lt;br /&gt;
 PING www.google.com (74.125.73.99): 56 data bytes&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=0 ttl=43 time=62.683 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=1 ttl=43 time=54.077 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=2 ttl=43 time=51.484 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=3 ttl=43 time=54.108 ms&lt;br /&gt;
&lt;br /&gt;
==== WEP ====&lt;br /&gt;
Setting up a WEP key is fairly straightforward and is achieved by adding the command:&lt;br /&gt;
&lt;br /&gt;
 iwconfig wlan0 key C7EE546141233ECCF3FDF68897&lt;br /&gt;
&lt;br /&gt;
after setting the essid&lt;br /&gt;
&lt;br /&gt;
NOTE: the command:&lt;br /&gt;
&lt;br /&gt;
 iwconfig wlan0 key s:panda &lt;br /&gt;
&lt;br /&gt;
would seem to set the key using the ascii passphrase &amp;quot;panda&amp;quot; However, the conversion is not implemented in iwlib (wireless-tools 30-pre9) and will result an a bogus key being set in the wlan.&lt;br /&gt;
&lt;br /&gt;
http://www.powerdog.com/wepkey.cgi can generate hex keys from passphrases and was used to generate C7EE546141233ECCF3FDF68897 from panda.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== USB Performance ===&lt;br /&gt;
&lt;br /&gt;
Insert a USB memory stick into one of the usb ports&lt;br /&gt;
&lt;br /&gt;
Run dmesg to see what sdx the stick was recognised as, then:&lt;br /&gt;
&lt;br /&gt;
 hdparam -tT /dev/sdx&lt;br /&gt;
&lt;br /&gt;
If you run the same command on a desktop Linux system, with the same USB memory stick, the PandaBoard's speed should roughly be the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PandaBoard]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/PandaBoard</id>
		<title>PandaBoard</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/PandaBoard"/>
				<updated>2012-07-01T01:43:39Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://www.pandaboard.org PandaBoard] is an [[OMAP4430]] ([[Cortex]]-A9) based low cost development platform.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
* OMAP4 (Cortex-A9) CPU based open development platform.&lt;br /&gt;
** OMAP4430 Application processor&lt;br /&gt;
** 1GB low-power DDR2&lt;br /&gt;
** Display HDMI v1.3 Connector (Type A) to drive HD displays, DVI-D Connector (can drive a 2nd display, simultaneous display; requires HDMI to DVI-D adapter), LCD expansion header&lt;br /&gt;
** 3.5&amp;quot; audio in/out and HDMI Audio out&lt;br /&gt;
** Full size SD/MMC card&lt;br /&gt;
** Built in 802.11 &amp;amp; Bluetooth v2.1+EDR&lt;br /&gt;
** Onboard 10/100 Ethernet&lt;br /&gt;
** Expansion: 1xUSB OTG, 2xUSB HS host ports, General purpose expansion header (I2C, GPMC, USB, MMC, DSS, ETM)&lt;br /&gt;
** JTAG, UART/RS-232, 2 status LEDs, 1GPIO button&lt;br /&gt;
&lt;br /&gt;
More details can be found [http://pandaboard.org/content/platform here]&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Front&lt;br /&gt;
[[File:PandaBoard_front.png|320px]]&lt;br /&gt;
&lt;br /&gt;
A hi resolution picture of the PandaBoard EA1 front is available here: http://elinux.org/images/d/d4/Panda_front.jpg&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Back&lt;br /&gt;
[[File:Panda_back.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
= Availability =&lt;br /&gt;
PandaBoard are in production and can be ordered from [http://pandaboard.org/content/buy Worldwide distributors]. You can also easily identify the board you have using [http://omappedia.org/wiki/PandaBoard_Revisions Board revision id]&lt;br /&gt;
&lt;br /&gt;
== Rev A3 ==&lt;br /&gt;
Latest version of the board.&lt;br /&gt;
&lt;br /&gt;
== Rev A1/A2  ==&lt;br /&gt;
[http://omappedia.org/wiki/PandaBoard_Revisions#Rev_A2 Details]&lt;br /&gt;
&lt;br /&gt;
== Rev EA1/EA2 ==&lt;br /&gt;
These were limited number of 'Early Adopter' boards that built prior to production versions. [http://omappedia.org/wiki/PandaBoard_Revisions#Rev_EA1 more details]&lt;br /&gt;
&lt;br /&gt;
== Rev ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoare-ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the MLO/u-boot/kernel be specifically crafted for the 4460. The thermal management is not in the mainline 4430 code as yet and could cause unwanted thermal problems. So BEWARE of running any code built for the non -ES PandaBoard on the -ES model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Accessories =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_Bamboo|Bamboo Board]]&lt;br /&gt;
* [[BeagleBoard_Trainer|Trainer Board]]&lt;br /&gt;
* [https://specialcomp.com/pandaboard/order.htm Acrylic case]&lt;br /&gt;
* [http://bb-lvds.blogspot.com 10&amp;quot; LCD LVDS plug-and-play bundle with capacitance touchscreen and ambient light sensor]&lt;br /&gt;
*[[File:Beadaframe.jpg|200px|thumb|BeadaFrame]][http://www.esky-sh.com/bbs/viewtopic.php?f=19&amp;amp;t=468 BeadaFrame] 7&amp;quot; LCD display kit&lt;br /&gt;
** 7&amp;quot; 800x480 TFT LCD screen&lt;br /&gt;
** PWM Backlight control&lt;br /&gt;
** Resistive touch panel&lt;br /&gt;
** RTC time keeper &lt;br /&gt;
** Plastic frame&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Recommended Reading Material =&lt;br /&gt;
&lt;br /&gt;
* [[Embedded_Linux_System_Design_and_Development]]&lt;br /&gt;
* [[Embedded_linux_primer]]&lt;br /&gt;
* [[Building_Embedded_Linux_Systems]]&lt;br /&gt;
* [[Essential_Linux_Device_Drivers]]&lt;br /&gt;
* [[Linux_Device_Drivers]]&lt;br /&gt;
&lt;br /&gt;
= How To's =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_MLO_&amp;amp;_u-boot|How to build MLO and u-boot]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/23/2011'''&lt;br /&gt;
* [[Panda_How_to_Barebox|How to build Barebox]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 11/12/2011'''&lt;br /&gt;
* [[PandaBoard_ES_uboot_howto|How to build u-boot and SPL]] for PandaBoard and PandaBoard ES '''--&amp;gt;&amp;gt; Updated 12/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rel|How to build 3.2 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_3_rcx|How to build 3.3-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_3_rel|How to build 3.3 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/19/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_4_rel|How to build 3.4 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; NEW 6/3/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_5_rcx|How to build 3.5-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 6/30/2012'''&lt;br /&gt;
* [[Panda_How_to_add_2_USBs|How to add two additional USB connections]] to the PandaBoard&lt;br /&gt;
* [[Panda_How_to_add_Power_Switch|How to add a power switch]] to the PandaBoard '''--&amp;gt;&amp;gt; WIP'''&lt;br /&gt;
* [[PandaBoard Power Measurements]]&lt;br /&gt;
&lt;br /&gt;
== Older How To's ==&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_buildroot|How to build a minimal file system using buildroot]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel|How to build a kernel using the buildroot toolchain from above]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel_new|How to build 2.6.38-rcx kernels]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/15/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_38|How to build 2.6.38 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/16/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39|How to build 2.6.39-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/12/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39rel|How to build 2.6.39 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rel|How to build 3.0 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/29/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rcx|How to build 3.0-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/11/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rcx|How to build 3.1-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/5/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rel|How to build 3.1 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/31/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rcx|How to build 3.2-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
&lt;br /&gt;
= Community =&lt;br /&gt;
 &lt;br /&gt;
Website: [http://pandaboard.org http://pandaboard.org]&lt;br /&gt;
&lt;br /&gt;
IRC: #pandaboard @irc.freenode.net&lt;br /&gt;
&lt;br /&gt;
Mailing List: [http://groups.google.com/group/pandaboard pandaboard@googlegroups.com]&lt;br /&gt;
&lt;br /&gt;
[[category:OMAP]]&lt;br /&gt;
[[category:omap4430]]&lt;br /&gt;
[[category:PandaBoard]]&lt;br /&gt;
[[category:Development Boards]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_kernel_3_5_rcx</id>
		<title>Panda How to kernel 3 5 rcx</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_kernel_3_5_rcx"/>
				<updated>2012-07-01T01:43:15Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Kernel 3.5 merge window has closed and 3.5-rc1 has been released.&lt;br /&gt;
&lt;br /&gt;
You can download a tarball of the mainline kernel at http://kernel.org/&lt;br /&gt;
&lt;br /&gt;
or you can clone a copy of mainline kernel with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
cd linux&lt;br /&gt;
git checkout v3.5-rcx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Important Note '''&lt;br /&gt;
There has been a lot of work done on the HDMI interface and its related driver omapdrm. Between kernel 3.1 and 3.2-rc1 enough changed so that the Testing section on the HDMI interface has been removed from this How-To. The HDMI testing section below will return when the code stabilises. &lt;br /&gt;
&lt;br /&gt;
=== rc1 ===&lt;br /&gt;
&lt;br /&gt;
Many changes in OMAP and Panda specific code since 3.4 was released. The HDMI, DVI interfaces both work under certain circumstances and properly read the EDID info from the monitor. HDMI sound is now functional. Changes to the WLAN code continue, and WLAN does function as well under the proper circumstances.&lt;br /&gt;
&lt;br /&gt;
=== rc4 ===&lt;br /&gt;
&lt;br /&gt;
-rc4 has a few omap4 related changes, but nothing specific to the PandaBoard. &lt;br /&gt;
&lt;br /&gt;
=== rc5 ===&lt;br /&gt;
&lt;br /&gt;
-rc5 does not have any OMAP or PandaBoard specific changes. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The WL12xx driver on a PandaBoard still needs the same patch as used for 3.1 and 3.2. When the driver isn't happy, the error messages are somewhat less than useful, however the drivers/firmware are being constantly improved and it would not be a good idea to have the driver support anything but the latest firmware.&lt;br /&gt;
With the modules built in, operation is not consistent. The PandaBoard ES does not need the patch.&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoard ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the [[PandaBoard_ES_uboot_howto| MLO/u-boot be specifically crafted for the 4460]]. The thermal management is not in the mainline 4430 code as yet and therefore the max clock frequency when running the OMAP4460 on the PandaBoard ES with the mainline kernel is 920MHz(same as the OMAP4430).&lt;br /&gt;
&lt;br /&gt;
== wlan12xx ==&lt;br /&gt;
&lt;br /&gt;
== wlan12xx patch ==&lt;br /&gt;
This patch is still necessary to resolve the issue noted in 3.2 and earlier&lt;br /&gt;
&lt;br /&gt;
[[Media:0001a-omap4-pandaboard-wlan-fix.patch|0001a-omap4-pandaboard-wlan-fix.patch]]&lt;br /&gt;
&lt;br /&gt;
Apply it like so: (from inside the kernel sources directory)&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001a-omap4-pandaboard-wlan-fix.patch&lt;br /&gt;
&lt;br /&gt;
NOTE: it applies with offsets which is ok.&lt;br /&gt;
&lt;br /&gt;
The latest wlan firmware is available from git: git://git.kernel.org/?p=linux/kernel/git/firmware/linux-firmware.git just copy the contents of the ti-connectivity folder to /lib/firmware/ti-connectivity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The patch is no longer necessary for the PandaBoard ES but does not seem to hurt if applied. In addition, the race issue that required building as a module has returned. As part of the code cleanup, the wl12xx and wl12xx_sdio drivers no longer depend on each other. This creates an issue with systems that do not use udev or mdev (with a somewhat fiddly &amp;amp; slow script) to load MODALIAS drivers. The quick solution is to modprobe both, the order no longer matters. Just modprobing wl12xx_sdio will no longer automatically load wl12xx.&lt;br /&gt;
&lt;br /&gt;
In -rc1 there is an issue with wl12xx_sdio building as a module, so the recommended way (as implememted in the .config) is to build wl12xx as a single module which includes wl12xx, wl12xx_sdio and wl12xx_core. This can then be modprobed on either PandaBoard (with patch) or PandaBoard ES. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
Building 3.5-rc1/rc4/rc5 is fairly straight forward.&lt;br /&gt;
Grab the 3.5-rc1/4/5 sources and use [[Media:config.3.5-rc1.1|config.3.5-rc1.1]], [[Media:config.3.5-rc4.1|config.3.5-rc4.1]] or [[Media:config.3.5-rc5.1|config.3.5-rc5.1]] as the .config &lt;br /&gt;
&lt;br /&gt;
The 3.5-rc1/4/5 .config enables Sound builtin and wl12xx as a single module. The builtin sound works, as does HDMI sound. Note that the HDMI monitor must be plugged in and enabled for the HDMI sound to work.&lt;br /&gt;
&lt;br /&gt;
Then compile like so:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=Path_to_your/arm-2010q1/bin/arm-none-linux-gnueabi- uImage&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== CPU Frequency Control ===&lt;br /&gt;
&lt;br /&gt;
The 3.5-rc5 .config also enables SmartReflex as well as OMAP frequency scaling. Default governor is set to performance so the CPU will come up at 1008MHz.&lt;br /&gt;
&lt;br /&gt;
 echo ondemand &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor&lt;br /&gt;
&lt;br /&gt;
Will change to the ondemand governor and reduce the cpu frequency to 300MHz when idle.&lt;br /&gt;
&lt;br /&gt;
Display the current cpu frequency.&lt;br /&gt;
&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq&lt;br /&gt;
 1008000&lt;br /&gt;
&lt;br /&gt;
=== i2cdetect ===&lt;br /&gt;
&lt;br /&gt;
You can run i2cdetect and the results should look like this:&lt;br /&gt;
&lt;br /&gt;
 # i2cdetect -y -r 1&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
 00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 40: -- -- -- -- -- -- -- -- UU UU UU UU -- -- -- -- &lt;br /&gt;
 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 70: -- -- -- -- -- -- -- --&lt;br /&gt;
&lt;br /&gt;
=== wlan ===&lt;br /&gt;
&lt;br /&gt;
Run the following commands after the PandaBoard is booted:&lt;br /&gt;
&lt;br /&gt;
 modprobe wl12xx    ** only if you built the wl12xx drivers a module as recommended&lt;br /&gt;
 ifconfig wlan0 up&lt;br /&gt;
 iwconfig wlan0 essid &amp;quot;Your AccessPoint Name&amp;quot;&lt;br /&gt;
 udhcpc -i wlan0&lt;br /&gt;
&lt;br /&gt;
If your network is set up to provide DHCP services, the PandaBoard will get all the &amp;quot;right stuff(tm)&amp;quot; and you will be able to access the Internet.&lt;br /&gt;
&lt;br /&gt;
 # ping www.google.com&lt;br /&gt;
 PING www.google.com (74.125.73.99): 56 data bytes&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=0 ttl=43 time=62.683 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=1 ttl=43 time=54.077 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=2 ttl=43 time=51.484 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=3 ttl=43 time=54.108 ms&lt;br /&gt;
&lt;br /&gt;
==== WEP ====&lt;br /&gt;
Setting up a WEP key is fairly straightforward and is achieved by adding the command:&lt;br /&gt;
&lt;br /&gt;
 iwconfig wlan0 key C7EE546141233ECCF3FDF68897&lt;br /&gt;
&lt;br /&gt;
after setting the essid&lt;br /&gt;
&lt;br /&gt;
NOTE: the command:&lt;br /&gt;
&lt;br /&gt;
 iwconfig wlan0 key s:panda &lt;br /&gt;
&lt;br /&gt;
would seem to set the key using the ascii passphrase &amp;quot;panda&amp;quot; However, the conversion is not implemented in iwlib (wireless-tools 30-pre9) and will result an a bogus key being set in the wlan.&lt;br /&gt;
&lt;br /&gt;
http://www.powerdog.com/wepkey.cgi can generate hex keys from passphrases and was used to generate C7EE546141233ECCF3FDF68897 from panda.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== USB Performance ===&lt;br /&gt;
&lt;br /&gt;
Insert a USB memory stick into one of the usb ports&lt;br /&gt;
&lt;br /&gt;
Run dmesg to see what sdx the stick was recognised as, then:&lt;br /&gt;
&lt;br /&gt;
 hdparam -tT /dev/sdx&lt;br /&gt;
&lt;br /&gt;
If you run the same command on a desktop Linux system, with the same USB memory stick, the PandaBoard's speed should roughly be the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PandaBoard]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/File:Config.3.5-rc5.1</id>
		<title>File:Config.3.5-rc5.1</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/File:Config.3.5-rc5.1"/>
				<updated>2012-07-01T01:37:26Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: .config for kernel 3.5-rc5 enables SmartReflex as well as cpu frequency scaling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.config for kernel 3.5-rc5 enables SmartReflex as well as cpu frequency scaling&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_build_SDR</id>
		<title>Panda How to build SDR</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_build_SDR"/>
				<updated>2012-06-30T14:09:13Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
What I have done is still very much a work in progress. The PandaBoard,&lt;br /&gt;
OMAP4, platform is a very powerful and flexible system, but it has its&lt;br /&gt;
limitations. I have been doing work with the PandaBoard since about&lt;br /&gt;
November 2010, so I've seen the kernel and distributions move from&lt;br /&gt;
barely runable to very capable during that time.&lt;br /&gt;
&lt;br /&gt;
For my SDR work, I run a home built &amp;quot;distro&amp;quot; which I build with&lt;br /&gt;
buildroot. It has the advantages of Gentoo as everything is built from&lt;br /&gt;
source, but it is not quite &amp;quot;plug &amp;amp; play&amp;quot;. There is a lot of fiddling&lt;br /&gt;
that I had to do to get all the dependences and libraries that dspserver&lt;br /&gt;
and widget-server need. I am currently not running QtRadio on the&lt;br /&gt;
PandaBoard, and don't intend to, for a while at least. The DSP software&lt;br /&gt;
needs all the CPU power it can get.&lt;br /&gt;
  &lt;br /&gt;
The major problem that most folks have run into trying to get SDR&lt;br /&gt;
software running on a non-x86 platform is dealing with the lack of FPU.&lt;br /&gt;
Anything without an FPU is just a waste of time, software floating point&lt;br /&gt;
emulation is just tooooooooo slow. Custom code to do SDR with fixed&lt;br /&gt;
point arithmetic is possible and has been done. But, most recent efforts&lt;br /&gt;
to run something like ghpsdr or ghpsdr3-alex have met with dismal&lt;br /&gt;
failure due to the fact that folks will try to boot up Ubuntu on their&lt;br /&gt;
platform of choice, install the build-essentials, and try to build the&lt;br /&gt;
SDR software like they would on their desktop. While this may result in&lt;br /&gt;
a runnable piece of code, there is currently no support for an FPU. So&lt;br /&gt;
if the software runs at all, the DSP functions will not be able to keep&lt;br /&gt;
up with the incoming data.&lt;br /&gt;
&lt;br /&gt;
This is where I diverged from the mainstream. The key event was the&lt;br /&gt;
availability of FFTW3 3.3.1-beta1 which includes support for the neon&lt;br /&gt;
FPU that is present on the OMAP4 4430/4460/4470. Unfortunately ARM made&lt;br /&gt;
this co-processor an option on Cortex-A9 implementations, and Nvidia&lt;br /&gt;
chose not to have it on Tegra2, so what I wound up with is somewhat Ti&lt;br /&gt;
specific. Neon is allegedly in the Tegra3, so newer tablets (Google??) &lt;br /&gt;
may benefit. &lt;br /&gt;
&lt;br /&gt;
I was able to cross compile fftw3 and run several benchmarks on my&lt;br /&gt;
PandaBoard ES and was quite impressed with the result vs. what Vesprerix&lt;br /&gt;
had reported on with their implementation (fork) of fftw3. Once I was&lt;br /&gt;
convinced that the fft routines on which DTTSP depend were &amp;quot;good enough&amp;quot;&lt;br /&gt;
I proceeded to put together a buildroot build that was tuned to using&lt;br /&gt;
&amp;quot;-mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp&amp;quot;. There are lots of&lt;br /&gt;
fiddly cross-compiler options and libraries that have to be checked to&lt;br /&gt;
be sure they actually are using neon (this work has not been completed&lt;br /&gt;
yet).&lt;br /&gt;
After the cross environment was working I went about getting dspserver,&lt;br /&gt;
widget-server and all their dependencies cross-compiled, there were a&lt;br /&gt;
lot. The most troublesome was Codec2, which I still have to hand tweak&lt;br /&gt;
to get to cross-compile properly. My first effort has Codec2 support&lt;br /&gt;
patched out, but the current code does include it. The dspserver and DttSP&lt;br /&gt;
code is identical to what is in the git repository, except for the Makefile &lt;br /&gt;
which is customized to compile with my toolchain. I have modified the &lt;br /&gt;
widget-server code to remove some dead code and add calibration for the Si570.&lt;br /&gt;
&lt;br /&gt;
Recently (6/26/2012) I've cross-compiled everything for armhf which is all the&lt;br /&gt;
rage these days as folks have found that floating point emulation sucks rocks.&lt;br /&gt;
I earlier used softfp for compatibility sake, but am now fiddling with armhf which takes&lt;br /&gt;
a bit of fiddling with buildroots gcc makefile to get to work. Might get a 10% performance&lt;br /&gt;
boost.&lt;br /&gt;
&lt;br /&gt;
Another issue that I haven't dug into yet is Jack, it is necessary for&lt;br /&gt;
non-hpsdr protocol servers. Jack2 uses waf (a really old version 1.5.0 at that)&lt;br /&gt;
instead of make. I am able to cross compile Jack1 (0.121.3) since it uses make, &lt;br /&gt;
but Jack2 needs some help. Jack2 has had some allignment issues at it is very x86 centric.&lt;br /&gt;
Pulse audio and Port audio were no problem.&lt;br /&gt;
&lt;br /&gt;
There will be an sd card image that one can &amp;quot;dd&amp;quot; onto a blank card. (someday)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For SDR work, at least gcc 4.6.2 is a must, now using 4.7.1&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
I build the kernel and u-boot/SPL outside of buildroot, but use the buildroot toolchain. This may change in the near future, as buildroot will soon support the PandaBoard as a target. The latest buildroot can build SPL/MLO/u-boot/kernel and has a PandaBoard defconfig.&lt;br /&gt;
&lt;br /&gt;
== Kernel==&lt;br /&gt;
&lt;br /&gt;
=== kernel 3.3-rc2 .config ===&lt;br /&gt;
=== kernel 3.5-rc4 .config ===&lt;br /&gt;
&lt;br /&gt;
== u-boot/MLO/SPL ==&lt;br /&gt;
&lt;br /&gt;
== Buildroot Internal toolchain with uClibc  mfloat-abi=softfp ==&lt;br /&gt;
&lt;br /&gt;
Start by downloading buildroot and getting all the prerequisites installed on your build machine.&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.buildroot.net/buildroot buildroot-softfp&lt;br /&gt;
&lt;br /&gt;
Then apply the following patch from the main buildroot directory&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001_add_new_packages.patch&lt;br /&gt;
&lt;br /&gt;
Then replace the config files for buildroot, busybox, and uClibc like this&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0002_replace_configs.patch&lt;br /&gt;
&lt;br /&gt;
Build everything&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
After the build completes you will have a toolchain, packages and libraries except for codec2. This takes a bit of fiddling with to cross compile.&lt;br /&gt;
&lt;br /&gt;
Download http://freetel.svn.sourceforge.net/viewvc/freetel/codec2/?view=tar&lt;br /&gt;
&lt;br /&gt;
Untar in a convenient place, cd to that place, run ./configure, then make. This will build codec2/src/generate_codebook for your desktop platform, which will be needed later.&lt;br /&gt;
&lt;br /&gt;
Now run make menuconfig in the buildroot main dir, go to Package Selection for Target --&amp;gt; Libraries --&amp;gt; Other and select codec2&lt;br /&gt;
&lt;br /&gt;
Run make again from the main buildroot dir and wait till the build fails, which it should.&lt;br /&gt;
&lt;br /&gt;
Now copy the generate_codebook file from codec2/src/ to buildroot/output/build/codec2-289/src/&lt;br /&gt;
&lt;br /&gt;
The Makefile.am in /src will need to be modified as well as follows:&lt;br /&gt;
&lt;br /&gt;
comment out line 46 i.e.&lt;br /&gt;
&lt;br /&gt;
 #noinst_PROGRAMS = generate_codebook&lt;br /&gt;
&lt;br /&gt;
cd  to the root of codec2-289&lt;br /&gt;
&lt;br /&gt;
 make clean&lt;br /&gt;
 rm .stamp_configured&lt;br /&gt;
&lt;br /&gt;
Now back to the main buildroot dir and run make again. This will finish building and the codec2 library.&lt;br /&gt;
&lt;br /&gt;
=== buildroot .config ===&lt;br /&gt;
=== busybox .config ===&lt;br /&gt;
=== uClibc .config ===&lt;br /&gt;
&lt;br /&gt;
== Buildroot Internal toolchain with uClibc  mfloat-abi=hard ==&lt;br /&gt;
&lt;br /&gt;
Start by downloading buildroot and getting all the prerequisites installed on your build machine.&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.buildroot.net/buildroot buildroot-hf&lt;br /&gt;
&lt;br /&gt;
Building the whole shebang for hardfloat starts off simply enough but, buildroot support for hardfloat is somewhat broken,&lt;br /&gt;
&lt;br /&gt;
Apply the following patch and use with the supplied buildroot .config&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt;0001_fix_buildroot_uclibc_hardfloat.patch&lt;br /&gt;
&lt;br /&gt;
Don't try to change the floating point abi as this patch may be fragile enough to break everything.&lt;br /&gt;
&lt;br /&gt;
Then apply the following patch from the main buildroot directory&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001_add_new_packages.patch&lt;br /&gt;
&lt;br /&gt;
Then replace the config files for buildroot, busybox, and uClibc like this&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0002_replace_configs.patch&lt;br /&gt;
&lt;br /&gt;
This is just a place holder till I figure out how to do this properly&lt;br /&gt;
&lt;br /&gt;
Build everything&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
After the build completes you will have a toolchain, packages and libraries except for codec2. This takes a bit of fiddling with to cross compile.&lt;br /&gt;
&lt;br /&gt;
Download http://freetel.svn.sourceforge.net/viewvc/freetel/codec2/?view=tar&lt;br /&gt;
&lt;br /&gt;
Untar in a convenient place, cd to that place, run ./configure, then make. This will build codec2/src/generate_codebook for your desktop platform, which will be needed later.&lt;br /&gt;
&lt;br /&gt;
Now run make menuconfig in the buildroot main dir, go to Package Selection for Target --&amp;gt; Libraries --&amp;gt; Other and select codec2&lt;br /&gt;
&lt;br /&gt;
Run make again from the main buildroot dir and wait till the build fails, which it should.&lt;br /&gt;
&lt;br /&gt;
Now copy the generate_codebook file from codec2/src/ to buildroot/output/build/codec2-289/src/&lt;br /&gt;
&lt;br /&gt;
The Makefile.am in /src will need to be modified as well as follows:&lt;br /&gt;
&lt;br /&gt;
comment out line 46 i.e.&lt;br /&gt;
&lt;br /&gt;
 #noinst_PROGRAMS = generate_codebook&lt;br /&gt;
&lt;br /&gt;
cd  to the root of codec2-289&lt;br /&gt;
&lt;br /&gt;
 make clean&lt;br /&gt;
 rm .stamp_configured&lt;br /&gt;
&lt;br /&gt;
Now back to the main buildroot dir and run make again. This will finish building and the codec2 library.&lt;br /&gt;
&lt;br /&gt;
=== buildroot .config ===&lt;br /&gt;
=== busybox .config ===&lt;br /&gt;
=== uClibc .config ===&lt;br /&gt;
&lt;br /&gt;
== Buildroot Crosstool-ng toolchain with glibc ==&lt;br /&gt;
&lt;br /&gt;
=== buildroot .config ===&lt;br /&gt;
=== busybox .config ===&lt;br /&gt;
=== crosstool-ng config ===&lt;br /&gt;
&lt;br /&gt;
== uClibc vs glibc size and speed in a real world example ==&lt;br /&gt;
&lt;br /&gt;
After building the first PandaSDR system, I was curious as to how things might change if I used glibc. The first thing I did was do a bench mark on the floating point performance of both. uClibc was woefully inadequate in sin/cos &lt;br /&gt;
&lt;br /&gt;
http://gruntthepeon.free.fr/ssemath/neon_mathfun.html&lt;br /&gt;
&lt;br /&gt;
with this benchmark compiled with glibc the performance numbers matched closely with the website, however with uClibc the sinf/cosf numbers were off.&lt;br /&gt;
&lt;br /&gt;
Instead of &amp;quot;2.0 millions of vector evaluations/second -&amp;gt; 121 cycles/value&amp;quot; I got &amp;quot;.1 millions of vector evaluations/second -&amp;gt; 1333 cycles/value&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Based on that benchmark, I had buildroot build a new system with a crosstool-ng based toolchain using glibc 2.13. This was somewhat complicated since the gcc 4.6.2 implementation was EXPERIMENTAL. Numerous other problems were encountered, but after a while I was able to get the toolchain built and the packages compiled with neon support for cortex-a9. The SDR software dspserver and widget-server built without problems except for the lack of libgomp in the target rootfs. It ws built ok, and populated into the toolchain's staging area, it just didn't make into the final rootfs. After all was said &amp;amp; done I compared the size of the libraries and executables, glibc's libs were certainly bigger, but there were fewer of them. The packages executables and libs were about the same size. Overall the two rootfs's were very close to the same size at 32MBytes (uClibc), and 40MBytes (glibc), the largest difference being in /usr/share/locale (292KBytes vs 7.7MBytes). In operation the SDR code consumed about the same amount of cpu power too. More to come as I investigate further.&lt;br /&gt;
&lt;br /&gt;
Buildroot with uClibc was certainly easier to get running, but crossstool-ng with glibc more closely compares to what would be available in a &amp;quot;Distro&amp;quot; like ubuntu/angstrom/arch Linux. Performance without neon was not evaluated. Earlier linpack and fftw3 benchmarks showed that without neon floating performance was abysmal. Both builds had fiddly bits, but my lack of programming skill probably weighed in as well.&lt;br /&gt;
&lt;br /&gt;
Building buildroot with either uClibc or glibc (via crosstools-ng) builds all the host tools necessarry, whereas building crosstools-ng alone requires versions of host tools that you may not have on your machine. For example, my desktop 64bit Core i7 is running ubuntu karmic, it can't build crosstools-ng without updating lots of tools, but it can build buildroot with crosstools-ng. However it is currently not possible to change the crosstools-ng configuration in buildroot as it is with busybox or uClibc. It's an inconvenience, but not a show stopper. &lt;br /&gt;
&lt;br /&gt;
== rootfs ==&lt;br /&gt;
&lt;br /&gt;
=== Packages ===&lt;br /&gt;
&lt;br /&gt;
alsa-lib-1.0.24.1&lt;br /&gt;
&lt;br /&gt;
alsa-utils-1.0.24.2 &lt;br /&gt;
&lt;br /&gt;
busybox-1.19.3 &lt;br /&gt;
&lt;br /&gt;
codec2-289 &lt;br /&gt;
&lt;br /&gt;
dbus-1.4.16 &lt;br /&gt;
&lt;br /&gt;
dbus-glib-0.98 &lt;br /&gt;
&lt;br /&gt;
dropbear-2011.54 &lt;br /&gt;
&lt;br /&gt;
expat-2.0.1 &lt;br /&gt;
&lt;br /&gt;
fftw-3.3.1-beta1 &lt;br /&gt;
&lt;br /&gt;
gdb-7.3.1-target &lt;br /&gt;
&lt;br /&gt;
gdbserver-7.3.1 &lt;br /&gt;
&lt;br /&gt;
gettext-0.16.1 &lt;br /&gt;
&lt;br /&gt;
i2c-tools-3.0.3 &lt;br /&gt;
&lt;br /&gt;
input-event-daemon-v0.1.3 &lt;br /&gt;
&lt;br /&gt;
json-c-0.9 &lt;br /&gt;
&lt;br /&gt;
libconfig-1.4.8 &lt;br /&gt;
&lt;br /&gt;
libevent-2.0.14 &lt;br /&gt;
&lt;br /&gt;
libglib2-2.28.8 &lt;br /&gt;
&lt;br /&gt;
libogg-1.2.2 &lt;br /&gt;
&lt;br /&gt;
libsamplerate-0.1.8 &lt;br /&gt;
&lt;br /&gt;
libsndfile-1.0.25 &lt;br /&gt;
&lt;br /&gt;
libtool-2.2.10 &lt;br /&gt;
&lt;br /&gt;
libusb-1.0.8 &lt;br /&gt;
&lt;br /&gt;
libusb-compat-0.1.3 &lt;br /&gt;
&lt;br /&gt;
libxml2-2.7.8 &lt;br /&gt;
&lt;br /&gt;
ncurses-5.7 &lt;br /&gt;
&lt;br /&gt;
ortp-0.18.0 &lt;br /&gt;
&lt;br /&gt;
portaudio-V19 &lt;br /&gt;
&lt;br /&gt;
pulseaudio-1.0 &lt;br /&gt;
&lt;br /&gt;
speex-1.2rc1 &lt;br /&gt;
&lt;br /&gt;
wireless_tools-29 &lt;br /&gt;
&lt;br /&gt;
zlib-1.2.5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ghpsdr3-alex ==&lt;br /&gt;
&lt;br /&gt;
A good introductory guide to ghpsdr &amp;amp; ghpsdr-alex is available:&lt;br /&gt;
&lt;br /&gt;
http://openhpsdr.org/wiki/images/6/63/NewbieGuide.pdf&lt;br /&gt;
&lt;br /&gt;
Familiarity with ghpsdr-alex is useful before starting on cross-compiling bits &amp;amp; pieces of it to run on the PandaBoard.&lt;br /&gt;
&lt;br /&gt;
The normal ghpsdr3-alex package needs QtSDK installed as well a lot of graphic specific librarys. At present, this is beyond the scope of this How-To, and it will be left for another day to produce the GUI part of this, ie. QtRadio. The PandaBoard will only be running the minimal code necessary to have a functional SDR server radio. pulseaudio and portaudio are required for non hpsdr protocol servers, and have been built successfully, however at present they are not used for the widget-server and could be eliminated from the build. Only the widget-server has been tested so far.&lt;br /&gt;
&lt;br /&gt;
This code is built outside of buildroot, but using the buildroot created toolchain. This is done by adding a Makefile to dspserver, DttSP, and widget server. The Makefile has a hardcoded path to the toolchain, so it may (will) be necessary to alter it to fit individual circumstances.  &lt;br /&gt;
&lt;br /&gt;
The various parts of this package have been evolving for quite some time, the ghpsdr3-alex project is the most recent &amp;quot;fork&amp;quot; of the original ghpsdr3 software&lt;br /&gt;
&lt;br /&gt;
http://openhpsdr.org/wiki/index.php?title=Ghpsdr3&lt;br /&gt;
&lt;br /&gt;
https://github.com/alexlee188/ghpsdr3-alex&lt;br /&gt;
&lt;br /&gt;
Although this project is trying not to be a fork, in essence it is, as the code is going in a different direction than the original authors intended. Three cheers for open source....&lt;br /&gt;
&lt;br /&gt;
=== dttsp ===&lt;br /&gt;
&lt;br /&gt;
This code is very mature and does much of the heavy lifting, non fft processing for the SDR stack&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== fftw3 ===&lt;br /&gt;
&lt;br /&gt;
The latest beta of fftw3 added support for ARM neon floating point.&lt;br /&gt;
&lt;br /&gt;
http://www.fftw.org/&lt;br /&gt;
&lt;br /&gt;
This is where the heavy lifting part of the DttSP happens. Somewhat independently evolved by the fftw3 authors and Vesperix&lt;br /&gt;
&lt;br /&gt;
http://www.vesperix.com/arm/fftw-arm/&lt;br /&gt;
&lt;br /&gt;
fftw3 3.3.1-beta1 is a critical part of the SDR stack. Without neon support, SDR on ARM v7-a is not possible.   &lt;br /&gt;
&lt;br /&gt;
=== widget-server ===&lt;br /&gt;
&lt;br /&gt;
The SDR-Widget project &lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/sdr-widget/&lt;br /&gt;
&lt;br /&gt;
http://www.yoyodyneconsulting.ca/pages/SDR-Widget.html&lt;br /&gt;
&lt;br /&gt;
Sought to develop an Atmel AVR AT32UC3A3256 based USB UAC2 sound &amp;quot;card&amp;quot;. Able to digitize at 24bits and 192000 samples/second, this project provided a &amp;quot;standard of comparison&amp;quot; noise floor of better than -130dbm. Subsequent firmware development allowed a single firmware image to support UAC1, UAC2 and hpsdr protocols, allowing Linux, MacOSX, and Windows users to benefit.  &lt;br /&gt;
&lt;br /&gt;
The widget-server driver supports the hpsdr protocol allowing all users 24bit 192000 samples/second operation. The following patch removes some dead code and allows claibration of the Si570 VFO chip. This is the direct interface to the SDR harware, and provides a standard ABI to the upper layer, dspserver&lt;br /&gt;
&lt;br /&gt;
==== patch to orig ====&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== dspserver ===&lt;br /&gt;
&lt;br /&gt;
The dspserver program is the &amp;quot;middle-ware&amp;quot; between the hardware interface code, many different hardware radios are supported, through different &amp;quot;driver&amp;quot; programs:&lt;br /&gt;
&lt;br /&gt;
hiqsdr http://www.hiqsdr.org/&lt;br /&gt;
&lt;br /&gt;
perseus http://microtelecom.it/perseus/&lt;br /&gt;
&lt;br /&gt;
sdriq http://www.rfspace.com/RFSPACE/SDR-IQ.html&lt;br /&gt;
&lt;br /&gt;
softrock http://www.softrockradio.org/&lt;br /&gt;
&lt;br /&gt;
widget-server http://www.yoyodyneconsulting.ca/pages/SDR-Widget.html&lt;br /&gt;
&lt;br /&gt;
hpsdrsvr http://openhpsdr.org/index.php&lt;br /&gt;
&lt;br /&gt;
sdr1000 http://www.flex-radio.com/Products.aspx?topic=sdr1k&lt;br /&gt;
&lt;br /&gt;
usrp http://www.ettus.com/&lt;br /&gt;
&lt;br /&gt;
dspserver includes DttSP and both must be compiled with neon enabled. The toolchains built by buildroot and the associated libraries all need this enabled.&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== QtRadio ===&lt;br /&gt;
&lt;br /&gt;
QtRadio is the GUI interface for the SDR package. In the PandaBoard implementation, no such layer exists. In the future, once ubuntu is stabilised with full GPU acceleration, a GUI might be possible. OpenCL and/or OpenGL are essential. &lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=qn479WawT3U&amp;amp;feature=youtu.be&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ==&lt;br /&gt;
&lt;br /&gt;
Tested with PandaBoard EA3 and PandaBoard ES EB3.&lt;br /&gt;
&lt;br /&gt;
== SDR Widget Lite Alpha ==&lt;br /&gt;
&lt;br /&gt;
The Widget Lite Alpha boards were capture only, the Widget Beta includes audio out and supports the same common firmware and protocol as the Alpha board.&lt;br /&gt;
&lt;br /&gt;
== SDR Widget Beta ==&lt;br /&gt;
&lt;br /&gt;
http://www.yoyodyneconsulting.ca/images/SDR_Widget_Lite_Alpha2_w_LCD.JPG&lt;br /&gt;
&lt;br /&gt;
== SoftRock Lite+USB Xtall v9.0 ==&lt;br /&gt;
&lt;br /&gt;
http://wb5rvz.com/sdr/RX_V9_0/&lt;br /&gt;
&lt;br /&gt;
http://pages.cs.wisc.edu/~timc/e/sdr.html&lt;br /&gt;
&lt;br /&gt;
== RTL-SDR ==&lt;br /&gt;
&lt;br /&gt;
=== mod to directly control the Si570 from the Widget ===&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_build_SDR</id>
		<title>Panda How to build SDR</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_build_SDR"/>
				<updated>2012-06-30T01:58:14Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
What I have done is still very much a work in progress. The PandaBoard,&lt;br /&gt;
OMAP4, platform is a very powerful and flexible system, but it has its&lt;br /&gt;
limitations. I have been doing work with the PandaBoard since about&lt;br /&gt;
November 2010, so I've seen the kernel and distributions move from&lt;br /&gt;
barely runable to very capable during that time.&lt;br /&gt;
&lt;br /&gt;
For my SDR work, I run a home built &amp;quot;distro&amp;quot; which I build with&lt;br /&gt;
buildroot. It has the advantages of Gentoo as everything is built from&lt;br /&gt;
source, but it is not quite &amp;quot;plug &amp;amp; play&amp;quot;. There is a lot of fiddling&lt;br /&gt;
that I had to do to get all the dependences and libraries that dspserver&lt;br /&gt;
and widget-server need. I am currently not running QtRadio on the&lt;br /&gt;
PandaBoard, and don't intend to, for a while at least. The DSP software&lt;br /&gt;
needs all the CPU power it can get.&lt;br /&gt;
  &lt;br /&gt;
The major problem that most folks have run into trying to get SDR&lt;br /&gt;
software running on a non-x86 platform is dealing with the lack of FPU.&lt;br /&gt;
Anything without an FPU is just a waste of time, software floating point&lt;br /&gt;
emulation is just tooooooooo slow. Custom code to do SDR with fixed&lt;br /&gt;
point arithmetic is possible and has been done. But, most recent efforts&lt;br /&gt;
to run something like ghpsdr or ghpsdr3-alex have met with dismal&lt;br /&gt;
failure due to the fact that folks will try to boot up Ubuntu on their&lt;br /&gt;
platform of choice, install the build-essentials, and try to build the&lt;br /&gt;
SDR software like they would on their desktop. While this may result in&lt;br /&gt;
a runnable piece of code, there is currently no support for an FPU. So&lt;br /&gt;
if the software runs at all, the DSP functions will not be able to keep&lt;br /&gt;
up with the incoming data.&lt;br /&gt;
&lt;br /&gt;
This is where I diverged from the mainstream. The key event was the&lt;br /&gt;
availability of FFTW3 3.3.1-beta1 which includes support for the neon&lt;br /&gt;
FPU that is present on the OMAP4 4430/4460/4470. Unfortunately ARM made&lt;br /&gt;
this co-processor an option on Cortex-A9 implementations, and Nvidia&lt;br /&gt;
chose not to have it on Tegra2, so what I wound up with is somewhat Ti&lt;br /&gt;
specific. Neon is allegedly in the Tegra3, so newer tablets (Google??) &lt;br /&gt;
may benefit. &lt;br /&gt;
&lt;br /&gt;
I was able to cross compile fftw3 and run several benchmarks on my&lt;br /&gt;
PandaBoard ES and was quite impressed with the result vs. what Vesprerix&lt;br /&gt;
had reported on with their implementation (fork) of fftw3. Once I was&lt;br /&gt;
convinced that the fft routines on which DTTSP depend were &amp;quot;good enough&amp;quot;&lt;br /&gt;
I proceeded to put together a buildroot build that was tuned to using&lt;br /&gt;
&amp;quot;-mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp&amp;quot;. There are lots of&lt;br /&gt;
fiddly cross-compiler options and libraries that have to be checked to&lt;br /&gt;
be sure they actually are using neon (this work has not been completed&lt;br /&gt;
yet).&lt;br /&gt;
After the cross environment was working I went about getting dspserver,&lt;br /&gt;
widget-server and all their dependencies cross-compiled, there were a&lt;br /&gt;
lot. The most troublesome was Codec2, which I still have to hand tweak&lt;br /&gt;
to get to cross-compile properly. My first effort has Codec2 support&lt;br /&gt;
patched out, but the current code does include it. The dspserver and DttSP&lt;br /&gt;
code is identical to what is in the git repository, except for the Makefile &lt;br /&gt;
which is customized to compile with my toolchain. I have modified the &lt;br /&gt;
widget-server code to remove some dead code and add calibration for the Si570.&lt;br /&gt;
&lt;br /&gt;
Recently (6/26/2012) I've cross-compiled everything for armhf which is all the&lt;br /&gt;
rage these days as folks have found that floating point emulation sucks rocks.&lt;br /&gt;
I earlier used softfp for compatibility sake, but am now fiddling with armhf which takes&lt;br /&gt;
a bit of fiddling with buildroots gcc makefile to get to work. Might get a 10% performance&lt;br /&gt;
boost.&lt;br /&gt;
&lt;br /&gt;
Another issue that I haven't dug into yet is Jack, it is necessary for&lt;br /&gt;
non-hpsdr protocol servers. Jack2 uses waf (a really old version 1.5.0 at that)&lt;br /&gt;
instead of make. I am able to cross compile Jack1 (0.121.3) since it uses make, &lt;br /&gt;
but Jack2 needs some help. Jack2 has had some allignment issues at it is very x86 centric.&lt;br /&gt;
Pulse audio and Port audio were no problem.&lt;br /&gt;
&lt;br /&gt;
There will be an sd card image that one can &amp;quot;dd&amp;quot; onto a blank card. (someday)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For SDR work, at least gcc 4.6.2 is a must, now using 4.7.1&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
I build the kernel and u-boot/SPL outside of buildroot, but use the buildroot toolchain. This may change in the near future, as buildroot will soon support the PandaBoard as a target. The latest buildroot can build SPL/MLO/u-boot/kernel and has a PandaBoard defconfig.&lt;br /&gt;
&lt;br /&gt;
== Kernel==&lt;br /&gt;
&lt;br /&gt;
=== kernel 3.3-rc2 .config ===&lt;br /&gt;
=== kernel 3.5-rc4 .config ===&lt;br /&gt;
&lt;br /&gt;
== u-boot/MLO/SPL ==&lt;br /&gt;
&lt;br /&gt;
== Buildroot Internal toolchain with uClibc  mfloat-abi=softfp ==&lt;br /&gt;
&lt;br /&gt;
Start by downloading buildroot and getting all the prerequisites installed on your build machine.&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.buildroot.net/buildroot buildroot-softfp&lt;br /&gt;
&lt;br /&gt;
Then apply the following patch from the main buildroot directory&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001_add_new_packages.patch&lt;br /&gt;
&lt;br /&gt;
Then replace the config files for buildroot, busybox, and uClibc like this&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0002_replace_configs.patch&lt;br /&gt;
&lt;br /&gt;
Build everything&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
After the build completes you will have a toolchain, packages and libraries except for codec2. This takes a bit of fiddling with to cross compile.&lt;br /&gt;
&lt;br /&gt;
Download http://freetel.svn.sourceforge.net/viewvc/freetel/codec2/?view=tar&lt;br /&gt;
&lt;br /&gt;
Untar in a convenient place, cd to that place, run ./configure, then make. This will build codec2/src/generate_codebook for your desktop platform, which will be needed later.&lt;br /&gt;
&lt;br /&gt;
Now run make menuconfig in the buildroot main dir, go to Package Selection for Target --&amp;gt; Libraries --&amp;gt; Other and select codec2&lt;br /&gt;
&lt;br /&gt;
Run make again from the main buildroot dir and wait till the build fails, which it should.&lt;br /&gt;
&lt;br /&gt;
Now copy the generate_codebook file from codec2/src/ to buildroot/output/build/codec2-289/src/&lt;br /&gt;
&lt;br /&gt;
The Makefile.in in /src will need to be modified as well as follows:&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
Now back to the main buildroot dir and run make again. This will finish building and the codec2 library.&lt;br /&gt;
&lt;br /&gt;
=== buildroot .config ===&lt;br /&gt;
=== busybox .config ===&lt;br /&gt;
=== uClibc .config ===&lt;br /&gt;
&lt;br /&gt;
== Buildroot Internal toolchain with uClibc  mfloat-abi=hard ==&lt;br /&gt;
&lt;br /&gt;
Start by downloading buildroot and getting all the prerequisites installed on your build machine.&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.buildroot.net/buildroot buildroot-hf&lt;br /&gt;
&lt;br /&gt;
Building the whole shebang for hardfloat starts off simply enough but, buildroot support for hardfloat is somewhat broken,&lt;br /&gt;
&lt;br /&gt;
Apply the following patch and use with the supplied buildroot .config&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt;0001_fix_buildroot_uclibc_hardfloat.patch&lt;br /&gt;
&lt;br /&gt;
Don't try to change the floating point abi as this patch may be fragile enough to break everything.&lt;br /&gt;
&lt;br /&gt;
Then apply the following patch from the main buildroot directory&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001_add_new_packages.patch&lt;br /&gt;
&lt;br /&gt;
Then replace the config files for buildroot, busybox, and uClibc like this&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0002_replace_configs.patch&lt;br /&gt;
&lt;br /&gt;
This is just a place holder till I figure out how to do this properly&lt;br /&gt;
&lt;br /&gt;
Build everything&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
After the build completes you will have a toolchain, packages and libraries except for codec2. This takes a bit of fiddling with to cross compile.&lt;br /&gt;
&lt;br /&gt;
Download http://freetel.svn.sourceforge.net/viewvc/freetel/codec2/?view=tar&lt;br /&gt;
&lt;br /&gt;
Untar in a convenient place, cd to that place, run ./configure, then make. This will build codec2/src/generate_codebook for your desktop platform, which will be needed later.&lt;br /&gt;
&lt;br /&gt;
Now run make menuconfig in the buildroot main dir, go to Package Selection for Target --&amp;gt; Libraries --&amp;gt; Other and select codec2&lt;br /&gt;
&lt;br /&gt;
Run make again from the main buildroot dir and wait till the build fails, which it should.&lt;br /&gt;
&lt;br /&gt;
Now copy the generate_codebook file from codec2/src/ to buildroot/output/build/codec2-289/src/&lt;br /&gt;
&lt;br /&gt;
Now back to the main buildroot dir and run make again. This will finish building and the codec2 library.&lt;br /&gt;
&lt;br /&gt;
=== buildroot .config ===&lt;br /&gt;
=== busybox .config ===&lt;br /&gt;
=== uClibc .config ===&lt;br /&gt;
&lt;br /&gt;
== Buildroot Crosstool-ng toolchain with glibc ==&lt;br /&gt;
&lt;br /&gt;
=== buildroot .config ===&lt;br /&gt;
=== busybox .config ===&lt;br /&gt;
=== crosstool-ng config ===&lt;br /&gt;
&lt;br /&gt;
== uClibc vs glibc size and speed in a real world example ==&lt;br /&gt;
&lt;br /&gt;
After building the first PandaSDR system, I was curious as to how things might change if I used glibc. The first thing I did was do a bench mark on the floating point performance of both. uClibc was woefully inadequate in sin/cos &lt;br /&gt;
&lt;br /&gt;
http://gruntthepeon.free.fr/ssemath/neon_mathfun.html&lt;br /&gt;
&lt;br /&gt;
with this benchmark compiled with glibc the performance numbers matched closely with the website, however with uClibc the sinf/cosf numbers were off.&lt;br /&gt;
&lt;br /&gt;
Instead of &amp;quot;2.0 millions of vector evaluations/second -&amp;gt; 121 cycles/value&amp;quot; I got &amp;quot;.1 millions of vector evaluations/second -&amp;gt; 1333 cycles/value&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Based on that benchmark, I had buildroot build a new system with a crosstool-ng based toolchain using glibc 2.13. This was somewhat complicated since the gcc 4.6.2 implementation was EXPERIMENTAL. Numerous other problems were encountered, but after a while I was able to get the toolchain built and the packages compiled with neon support for cortex-a9. The SDR software dspserver and widget-server built without problems except for the lack of libgomp in the target rootfs. It ws built ok, and populated into the toolchain's staging area, it just didn't make into the final rootfs. After all was said &amp;amp; done I compared the size of the libraries and executables, glibc's libs were certainly bigger, but there were fewer of them. The packages executables and libs were about the same size. Overall the two rootfs's were very close to the same size at 32MBytes (uClibc), and 40MBytes (glibc), the largest difference being in /usr/share/locale (292KBytes vs 7.7MBytes). In operation the SDR code consumed about the same amount of cpu power too. More to come as I investigate further.&lt;br /&gt;
&lt;br /&gt;
Buildroot with uClibc was certainly easier to get running, but crossstool-ng with glibc more closely compares to what would be available in a &amp;quot;Distro&amp;quot; like ubuntu/angstrom/arch Linux. Performance without neon was not evaluated. Earlier linpack and fftw3 benchmarks showed that without neon floating performance was abysmal. Both builds had fiddly bits, but my lack of programming skill probably weighed in as well.&lt;br /&gt;
&lt;br /&gt;
Building buildroot with either uClibc or glibc (via crosstools-ng) builds all the host tools necessarry, whereas building crosstools-ng alone requires versions of host tools that you may not have on your machine. For example, my desktop 64bit Core i7 is running ubuntu karmic, it can't build crosstools-ng without updating lots of tools, but it can build buildroot with crosstools-ng. However it is currently not possible to change the crosstools-ng configuration in buildroot as it is with busybox or uClibc. It's an inconvenience, but not a show stopper. &lt;br /&gt;
&lt;br /&gt;
== rootfs ==&lt;br /&gt;
&lt;br /&gt;
=== Packages ===&lt;br /&gt;
&lt;br /&gt;
alsa-lib-1.0.24.1&lt;br /&gt;
&lt;br /&gt;
alsa-utils-1.0.24.2 &lt;br /&gt;
&lt;br /&gt;
busybox-1.19.3 &lt;br /&gt;
&lt;br /&gt;
codec2-289 &lt;br /&gt;
&lt;br /&gt;
dbus-1.4.16 &lt;br /&gt;
&lt;br /&gt;
dbus-glib-0.98 &lt;br /&gt;
&lt;br /&gt;
dropbear-2011.54 &lt;br /&gt;
&lt;br /&gt;
expat-2.0.1 &lt;br /&gt;
&lt;br /&gt;
fftw-3.3.1-beta1 &lt;br /&gt;
&lt;br /&gt;
gdb-7.3.1-target &lt;br /&gt;
&lt;br /&gt;
gdbserver-7.3.1 &lt;br /&gt;
&lt;br /&gt;
gettext-0.16.1 &lt;br /&gt;
&lt;br /&gt;
i2c-tools-3.0.3 &lt;br /&gt;
&lt;br /&gt;
input-event-daemon-v0.1.3 &lt;br /&gt;
&lt;br /&gt;
json-c-0.9 &lt;br /&gt;
&lt;br /&gt;
libconfig-1.4.8 &lt;br /&gt;
&lt;br /&gt;
libevent-2.0.14 &lt;br /&gt;
&lt;br /&gt;
libglib2-2.28.8 &lt;br /&gt;
&lt;br /&gt;
libogg-1.2.2 &lt;br /&gt;
&lt;br /&gt;
libsamplerate-0.1.8 &lt;br /&gt;
&lt;br /&gt;
libsndfile-1.0.25 &lt;br /&gt;
&lt;br /&gt;
libtool-2.2.10 &lt;br /&gt;
&lt;br /&gt;
libusb-1.0.8 &lt;br /&gt;
&lt;br /&gt;
libusb-compat-0.1.3 &lt;br /&gt;
&lt;br /&gt;
libxml2-2.7.8 &lt;br /&gt;
&lt;br /&gt;
ncurses-5.7 &lt;br /&gt;
&lt;br /&gt;
ortp-0.18.0 &lt;br /&gt;
&lt;br /&gt;
portaudio-V19 &lt;br /&gt;
&lt;br /&gt;
pulseaudio-1.0 &lt;br /&gt;
&lt;br /&gt;
speex-1.2rc1 &lt;br /&gt;
&lt;br /&gt;
wireless_tools-29 &lt;br /&gt;
&lt;br /&gt;
zlib-1.2.5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ghpsdr3-alex ==&lt;br /&gt;
&lt;br /&gt;
A good introductory guide to ghpsdr &amp;amp; ghpsdr-alex is available:&lt;br /&gt;
&lt;br /&gt;
http://openhpsdr.org/wiki/images/6/63/NewbieGuide.pdf&lt;br /&gt;
&lt;br /&gt;
Familiarity with ghpsdr-alex is useful before starting on cross-compiling bits &amp;amp; pieces of it to run on the PandaBoard.&lt;br /&gt;
&lt;br /&gt;
The normal ghpsdr3-alex package needs QtSDK installed as well a lot of graphic specific librarys. At present, this is beyond the scope of this How-To, and it will be left for another day to produce the GUI part of this, ie. QtRadio. The PandaBoard will only be running the minimal code necessary to have a functional SDR server radio. pulseaudio and portaudio are required for non hpsdr protocol servers, and have been built successfully, however at present they are not used for the widget-server and could be eliminated from the build. Only the widget-server has been tested so far.&lt;br /&gt;
&lt;br /&gt;
This code is built outside of buildroot, but using the buildroot created toolchain. This is done by adding a Makefile to dspserver, DttSP, and widget server. The Makefile has a hardcoded path to the toolchain, so it may (will) be necessary to alter it to fit individual circumstances.  &lt;br /&gt;
&lt;br /&gt;
The various parts of this package have been evolving for quite some time, the ghpsdr3-alex project is the most recent &amp;quot;fork&amp;quot; of the original ghpsdr3 software&lt;br /&gt;
&lt;br /&gt;
http://openhpsdr.org/wiki/index.php?title=Ghpsdr3&lt;br /&gt;
&lt;br /&gt;
https://github.com/alexlee188/ghpsdr3-alex&lt;br /&gt;
&lt;br /&gt;
Although this project is trying not to be a fork, in essence it is, as the code is going in a different direction than the original authors intended. Three cheers for open source....&lt;br /&gt;
&lt;br /&gt;
=== dttsp ===&lt;br /&gt;
&lt;br /&gt;
This code is very mature and does much of the heavy lifting, non fft processing for the SDR stack&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== fftw3 ===&lt;br /&gt;
&lt;br /&gt;
The latest beta of fftw3 added support for ARM neon floating point.&lt;br /&gt;
&lt;br /&gt;
http://www.fftw.org/&lt;br /&gt;
&lt;br /&gt;
This is where the heavy lifting part of the DttSP happens. Somewhat independently evolved by the fftw3 authors and Vesperix&lt;br /&gt;
&lt;br /&gt;
http://www.vesperix.com/arm/fftw-arm/&lt;br /&gt;
&lt;br /&gt;
fftw3 3.3.1-beta1 is a critical part of the SDR stack. Without neon support, SDR on ARM v7-a is not possible.   &lt;br /&gt;
&lt;br /&gt;
=== widget-server ===&lt;br /&gt;
&lt;br /&gt;
The SDR-Widget project &lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/sdr-widget/&lt;br /&gt;
&lt;br /&gt;
http://www.yoyodyneconsulting.ca/pages/SDR-Widget.html&lt;br /&gt;
&lt;br /&gt;
Sought to develop an Atmel AVR AT32UC3A3256 based USB UAC2 sound &amp;quot;card&amp;quot;. Able to digitize at 24bits and 192000 samples/second, this project provided a &amp;quot;standard of comparison&amp;quot; noise floor of better than -130dbm. Subsequent firmware development allowed a single firmware image to support UAC1, UAC2 and hpsdr protocols, allowing Linux, MacOSX, and Windows users to benefit.  &lt;br /&gt;
&lt;br /&gt;
The widget-server driver supports the hpsdr protocol allowing all users 24bit 192000 samples/second operation. The following patch removes some dead code and allows claibration of the Si570 VFO chip. This is the direct interface to the SDR harware, and provides a standard ABI to the upper layer, dspserver&lt;br /&gt;
&lt;br /&gt;
==== patch to orig ====&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== dspserver ===&lt;br /&gt;
&lt;br /&gt;
The dspserver program is the &amp;quot;middle-ware&amp;quot; between the hardware interface code, many different hardware radios are supported, through different &amp;quot;driver&amp;quot; programs:&lt;br /&gt;
&lt;br /&gt;
hiqsdr http://www.hiqsdr.org/&lt;br /&gt;
&lt;br /&gt;
perseus http://microtelecom.it/perseus/&lt;br /&gt;
&lt;br /&gt;
sdriq http://www.rfspace.com/RFSPACE/SDR-IQ.html&lt;br /&gt;
&lt;br /&gt;
softrock http://www.softrockradio.org/&lt;br /&gt;
&lt;br /&gt;
widget-server http://www.yoyodyneconsulting.ca/pages/SDR-Widget.html&lt;br /&gt;
&lt;br /&gt;
hpsdrsvr http://openhpsdr.org/index.php&lt;br /&gt;
&lt;br /&gt;
sdr1000 http://www.flex-radio.com/Products.aspx?topic=sdr1k&lt;br /&gt;
&lt;br /&gt;
usrp http://www.ettus.com/&lt;br /&gt;
&lt;br /&gt;
dspserver includes DttSP and both must be compiled with neon enabled. The toolchains built by buildroot and the associated libraries all need this enabled.&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== QtRadio ===&lt;br /&gt;
&lt;br /&gt;
QtRadio is the GUI interface for the SDR package. In the PandaBoard implementation, no such layer exists. In the future, once ubuntu is stabilised with full GPU acceleration, a GUI might be possible. OpenCL and/or OpenGL are essential. &lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=qn479WawT3U&amp;amp;feature=youtu.be&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ==&lt;br /&gt;
&lt;br /&gt;
Tested with PandaBoard EA3 and PandaBoard ES EB3.&lt;br /&gt;
&lt;br /&gt;
== SDR Widget Lite Alpha ==&lt;br /&gt;
&lt;br /&gt;
The Widget Lite Alpha boards were capture only, the Widget Beta includes audio out and supports the same common firmware and protocol as the Alpha board.&lt;br /&gt;
&lt;br /&gt;
== SDR Widget Beta ==&lt;br /&gt;
&lt;br /&gt;
http://www.yoyodyneconsulting.ca/images/SDR_Widget_Lite_Alpha2_w_LCD.JPG&lt;br /&gt;
&lt;br /&gt;
== SoftRock Lite+USB Xtall v9.0 ==&lt;br /&gt;
&lt;br /&gt;
http://wb5rvz.com/sdr/RX_V9_0/&lt;br /&gt;
&lt;br /&gt;
http://pages.cs.wisc.edu/~timc/e/sdr.html&lt;br /&gt;
&lt;br /&gt;
== RTL-SDR ==&lt;br /&gt;
&lt;br /&gt;
=== mod to directly control the Si570 from the Widget ===&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_build_SDR</id>
		<title>Panda How to build SDR</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_build_SDR"/>
				<updated>2012-06-27T01:29:31Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
What I have done is still very much a work in progress. The PandaBoard,&lt;br /&gt;
OMAP4, platform is a very powerful and flexible system, but it has its&lt;br /&gt;
limitations. I have been doing work with the PandaBoard since about&lt;br /&gt;
November 2010, so I've seen the kernel and distributions move from&lt;br /&gt;
barely runable to very capable during that time.&lt;br /&gt;
&lt;br /&gt;
For my SDR work, I run a home built &amp;quot;distro&amp;quot; which I build with&lt;br /&gt;
buildroot. It has the advantages of Gentoo as everything is built from&lt;br /&gt;
source, but it is not quite &amp;quot;plug &amp;amp; play&amp;quot;. There is a lot of fiddling&lt;br /&gt;
that I had to do to get all the dependences and libraries that dspserver&lt;br /&gt;
and widget-server need. I am currently not running QtRadio on the&lt;br /&gt;
PandaBoard, and don't intend to, for a while at least. The DSP software&lt;br /&gt;
needs all the CPU power it can get.&lt;br /&gt;
  &lt;br /&gt;
The major problem that most folks have run into trying to get SDR&lt;br /&gt;
software running on a non-x86 platform is dealing with the lack of FPU.&lt;br /&gt;
Anything without an FPU is just a waste of time, software floating point&lt;br /&gt;
emulation is just tooooooooo slow. Custom code to do SDR with fixed&lt;br /&gt;
point arithmetic is possible and has been done. But, most recent efforts&lt;br /&gt;
to run something like ghpsdr or ghpsdr3-alex have met with dismal&lt;br /&gt;
failure due to the fact that folks will try to boot up Ubuntu on their&lt;br /&gt;
platform of choice, install the build-essentials, and try to build the&lt;br /&gt;
SDR software like they would on their desktop. While this may result in&lt;br /&gt;
a runnable piece of code, there is currently no support for an FPU. So&lt;br /&gt;
if the software runs at all, the DSP functions will not be able to keep&lt;br /&gt;
up with the incoming data.&lt;br /&gt;
&lt;br /&gt;
This is where I diverged from the mainstream. The key event was the&lt;br /&gt;
availability of FFTW3 3.3.1-beta1 which includes support for the neon&lt;br /&gt;
FPU that is present on the OMAP4 4430/4460/4470. Unfortunately ARM made&lt;br /&gt;
this co-processor an option on Cortex-A9 implementations, and Nvidia&lt;br /&gt;
chose not to have it on Tegra2, so what I wound up with is somewhat Ti&lt;br /&gt;
specific. Neon is allegedly in the Tegra3, so newer tablets (Google??) &lt;br /&gt;
may benefit. &lt;br /&gt;
&lt;br /&gt;
I was able to cross compile fftw3 and run several benchmarks on my&lt;br /&gt;
PandaBoard ES and was quite impressed with the result vs. what Vesprerix&lt;br /&gt;
had reported on with their implementation (fork) of fftw3. Once I was&lt;br /&gt;
convinced that the fft routines on which DTTSP depend were &amp;quot;good enough&amp;quot;&lt;br /&gt;
I proceeded to put together a buildroot build that was tuned to using&lt;br /&gt;
&amp;quot;-mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp&amp;quot;. There are lots of&lt;br /&gt;
fiddly cross-compiler options and libraries that have to be checked to&lt;br /&gt;
be sure they actually are using neon (this work has not been completed&lt;br /&gt;
yet).&lt;br /&gt;
After the cross environment was working I went about getting dspserver,&lt;br /&gt;
widget-server and all their dependencies cross-compiled, there were a&lt;br /&gt;
lot. The most troublesome was Codec2, which I still have to hand tweak&lt;br /&gt;
to get to cross-compile properly. My first effort has Codec2 support&lt;br /&gt;
patched out, but the current code does include it. The dspserver and DttSP&lt;br /&gt;
code is identical to what is in the git repository, except for the Makefile &lt;br /&gt;
which is customized to compile with my toolchain. I have modified the &lt;br /&gt;
widget-server code to remove some dead code and add calibration for the Si570.&lt;br /&gt;
&lt;br /&gt;
Recently (6/26/2012) I've cross-compiled everything for armhf which is all the&lt;br /&gt;
rage these days as folks have found that floating point emulation sucks rocks.&lt;br /&gt;
I earlier used softfp for compatibility sake, but am now fiddling with armhf which takes&lt;br /&gt;
a bit of fiddling with buildroots gcc makefile to get to work. Might get a 10% performance&lt;br /&gt;
boost.&lt;br /&gt;
&lt;br /&gt;
Another issue that I haven't dug into yet is Jack, it is necessary for&lt;br /&gt;
non-hpsdr protocol servers. Jack2 uses waf (a really old version 1.5.0 at that)&lt;br /&gt;
instead of make. I am able to cross compile Jack1 (0.121.3) since it uses make, &lt;br /&gt;
but Jack2 needs some help. Jack2 has had some allignment issues at it is very x86 centric.&lt;br /&gt;
Pulse audio and Port audio were no problem.&lt;br /&gt;
&lt;br /&gt;
There will be an sd card image that one can &amp;quot;dd&amp;quot; onto a blank card. (someday)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For SDR work, at least gcc 4.6.2 is a must, now using 4.7.1&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
I build the kernel and u-boot/SPL outside of buildroot, but use the buildroot toolchain. This may change in the near future, as buildroot will soon support the PandaBoard as a target. The latest buildroot can build SPL/MLO/u-boot/kernel and has a PandaBoard defconfig.&lt;br /&gt;
&lt;br /&gt;
== Kernel==&lt;br /&gt;
&lt;br /&gt;
=== kernel 3.3-rc2 .config ===&lt;br /&gt;
=== kernel 3.5-rc4 .config ===&lt;br /&gt;
&lt;br /&gt;
== u-boot/MLO/SPL ==&lt;br /&gt;
&lt;br /&gt;
== Buildroot Internal toolchain with uClibc  mfloat-abi=softfp ==&lt;br /&gt;
&lt;br /&gt;
Start by downloading buildroot and getting all the prerequisites installed on your build machine.&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.buildroot.net/buildroot buildroot-softfp&lt;br /&gt;
&lt;br /&gt;
Then apply the following patch from the main buildroot directory&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001_add_new_packages.patch&lt;br /&gt;
&lt;br /&gt;
Then replace the config files for buildroot, busybox, and uClibc like this&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0002_replace_configs.patch&lt;br /&gt;
&lt;br /&gt;
Build everything&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
After the build completes you will have a toolchain, packages and libraries except for codec2. This takes a bit of fiddling with to cross compile.&lt;br /&gt;
&lt;br /&gt;
Download http://freetel.svn.sourceforge.net/viewvc/freetel/codec2/?view=tar&lt;br /&gt;
&lt;br /&gt;
Untar in a convenient place, cd to that place, run ./configure, then make. This will build codec2/src/generate_codebook for your desktop platform, which will be needed later.&lt;br /&gt;
&lt;br /&gt;
Now run make menuconfig in the buildroot main dir, go to Package Selection for Target --&amp;gt; Libraries --&amp;gt; Other and select codec2&lt;br /&gt;
&lt;br /&gt;
Run make again from the main buildroot dir and wait till the build fails, which it should.&lt;br /&gt;
&lt;br /&gt;
Now copy the generate_codebook file from codec2/src/ to buildroot/output/build/codec2-289/src/&lt;br /&gt;
&lt;br /&gt;
Now back to the main buildroot dir and run make again. This will finish building and the codec2 library.&lt;br /&gt;
&lt;br /&gt;
=== buildroot .config ===&lt;br /&gt;
=== busybox .config ===&lt;br /&gt;
=== uClibc .config ===&lt;br /&gt;
&lt;br /&gt;
== Buildroot Internal toolchain with uClibc  mfloat-abi=hard ==&lt;br /&gt;
&lt;br /&gt;
Start by downloading buildroot and getting all the prerequisites installed on your build machine.&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.buildroot.net/buildroot buildroot-hf&lt;br /&gt;
&lt;br /&gt;
Building the whole shebang for hardfloat starts off simply enough but, buildroot support for hardfloat is somewhat broken,&lt;br /&gt;
&lt;br /&gt;
Apply the following patch and use with the supplied buildroot .config&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt;0001_fix_buildroot_uclibc_hardfloat.patch&lt;br /&gt;
&lt;br /&gt;
Don't try to change the floating point abi as this patch may be fragile enough to break everything.&lt;br /&gt;
&lt;br /&gt;
Then apply the following patch from the main buildroot directory&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001_add_new_packages.patch&lt;br /&gt;
&lt;br /&gt;
Then replace the config files for buildroot, busybox, and uClibc like this&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0002_replace_configs.patch&lt;br /&gt;
&lt;br /&gt;
This is just a place holder till I figure out how to do this properly&lt;br /&gt;
&lt;br /&gt;
Build everything&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
After the build completes you will have a toolchain, packages and libraries except for codec2. This takes a bit of fiddling with to cross compile.&lt;br /&gt;
&lt;br /&gt;
Download http://freetel.svn.sourceforge.net/viewvc/freetel/codec2/?view=tar&lt;br /&gt;
&lt;br /&gt;
Untar in a convenient place, cd to that place, run ./configure, then make. This will build codec2/src/generate_codebook for your desktop platform, which will be needed later.&lt;br /&gt;
&lt;br /&gt;
Now run make menuconfig in the buildroot main dir, go to Package Selection for Target --&amp;gt; Libraries --&amp;gt; Other and select codec2&lt;br /&gt;
&lt;br /&gt;
Run make again from the main buildroot dir and wait till the build fails, which it should.&lt;br /&gt;
&lt;br /&gt;
Now copy the generate_codebook file from codec2/src/ to buildroot/output/build/codec2-289/src/&lt;br /&gt;
&lt;br /&gt;
Now back to the main buildroot dir and run make again. This will finish building and the codec2 library.&lt;br /&gt;
&lt;br /&gt;
=== buildroot .config ===&lt;br /&gt;
=== busybox .config ===&lt;br /&gt;
=== uClibc .config ===&lt;br /&gt;
&lt;br /&gt;
== Buildroot Crosstool-ng toolchain with glibc ==&lt;br /&gt;
&lt;br /&gt;
=== buildroot .config ===&lt;br /&gt;
=== busybox .config ===&lt;br /&gt;
=== crosstool-ng config ===&lt;br /&gt;
&lt;br /&gt;
== uClibc vs glibc size and speed in a real world example ==&lt;br /&gt;
&lt;br /&gt;
After building the first PandaSDR system, I was curious as to how things might change if I used glibc. The first thing I did was do a bench mark on the floating point performance of both. uClibc was woefully inadequate in sin/cos &lt;br /&gt;
&lt;br /&gt;
http://gruntthepeon.free.fr/ssemath/neon_mathfun.html&lt;br /&gt;
&lt;br /&gt;
with this benchmark compiled with glibc the performance numbers matched closely with the website, however with uClibc the sinf/cosf numbers were off.&lt;br /&gt;
&lt;br /&gt;
Instead of &amp;quot;2.0 millions of vector evaluations/second -&amp;gt; 121 cycles/value&amp;quot; I got &amp;quot;.1 millions of vector evaluations/second -&amp;gt; 1333 cycles/value&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Based on that benchmark, I had buildroot build a new system with a crosstool-ng based toolchain using glibc 2.13. This was somewhat complicated since the gcc 4.6.2 implementation was EXPERIMENTAL. Numerous other problems were encountered, but after a while I was able to get the toolchain built and the packages compiled with neon support for cortex-a9. The SDR software dspserver and widget-server built without problems except for the lack of libgomp in the target rootfs. It ws built ok, and populated into the toolchain's staging area, it just didn't make into the final rootfs. After all was said &amp;amp; done I compared the size of the libraries and executables, glibc's libs were certainly bigger, but there were fewer of them. The packages executables and libs were about the same size. Overall the two rootfs's were very close to the same size at 32MBytes (uClibc), and 40MBytes (glibc), the largest difference being in /usr/share/locale (292KBytes vs 7.7MBytes). In operation the SDR code consumed about the same amount of cpu power too. More to come as I investigate further.&lt;br /&gt;
&lt;br /&gt;
Buildroot with uClibc was certainly easier to get running, but crossstool-ng with glibc more closely compares to what would be available in a &amp;quot;Distro&amp;quot; like ubuntu/angstrom/arch Linux. Performance without neon was not evaluated. Earlier linpack and fftw3 benchmarks showed that without neon floating performance was abysmal. Both builds had fiddly bits, but my lack of programming skill probably weighed in as well.&lt;br /&gt;
&lt;br /&gt;
Building buildroot with either uClibc or glibc (via crosstools-ng) builds all the host tools necessarry, whereas building crosstools-ng alone requires versions of host tools that you may not have on your machine. For example, my desktop 64bit Core i7 is running ubuntu karmic, it can't build crosstools-ng without updating lots of tools, but it can build buildroot with crosstools-ng. However it is currently not possible to change the crosstools-ng configuration in buildroot as it is with busybox or uClibc. It's an inconvenience, but not a show stopper. &lt;br /&gt;
&lt;br /&gt;
== rootfs ==&lt;br /&gt;
&lt;br /&gt;
=== Packages ===&lt;br /&gt;
&lt;br /&gt;
alsa-lib-1.0.24.1&lt;br /&gt;
&lt;br /&gt;
alsa-utils-1.0.24.2 &lt;br /&gt;
&lt;br /&gt;
busybox-1.19.3 &lt;br /&gt;
&lt;br /&gt;
codec2-289 &lt;br /&gt;
&lt;br /&gt;
dbus-1.4.16 &lt;br /&gt;
&lt;br /&gt;
dbus-glib-0.98 &lt;br /&gt;
&lt;br /&gt;
dropbear-2011.54 &lt;br /&gt;
&lt;br /&gt;
expat-2.0.1 &lt;br /&gt;
&lt;br /&gt;
fftw-3.3.1-beta1 &lt;br /&gt;
&lt;br /&gt;
gdb-7.3.1-target &lt;br /&gt;
&lt;br /&gt;
gdbserver-7.3.1 &lt;br /&gt;
&lt;br /&gt;
gettext-0.16.1 &lt;br /&gt;
&lt;br /&gt;
i2c-tools-3.0.3 &lt;br /&gt;
&lt;br /&gt;
input-event-daemon-v0.1.3 &lt;br /&gt;
&lt;br /&gt;
json-c-0.9 &lt;br /&gt;
&lt;br /&gt;
libconfig-1.4.8 &lt;br /&gt;
&lt;br /&gt;
libevent-2.0.14 &lt;br /&gt;
&lt;br /&gt;
libglib2-2.28.8 &lt;br /&gt;
&lt;br /&gt;
libogg-1.2.2 &lt;br /&gt;
&lt;br /&gt;
libsamplerate-0.1.8 &lt;br /&gt;
&lt;br /&gt;
libsndfile-1.0.25 &lt;br /&gt;
&lt;br /&gt;
libtool-2.2.10 &lt;br /&gt;
&lt;br /&gt;
libusb-1.0.8 &lt;br /&gt;
&lt;br /&gt;
libusb-compat-0.1.3 &lt;br /&gt;
&lt;br /&gt;
libxml2-2.7.8 &lt;br /&gt;
&lt;br /&gt;
ncurses-5.7 &lt;br /&gt;
&lt;br /&gt;
ortp-0.18.0 &lt;br /&gt;
&lt;br /&gt;
portaudio-V19 &lt;br /&gt;
&lt;br /&gt;
pulseaudio-1.0 &lt;br /&gt;
&lt;br /&gt;
speex-1.2rc1 &lt;br /&gt;
&lt;br /&gt;
wireless_tools-29 &lt;br /&gt;
&lt;br /&gt;
zlib-1.2.5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ghpsdr3-alex ==&lt;br /&gt;
&lt;br /&gt;
A good introductory guide to ghpsdr &amp;amp; ghpsdr-alex is available:&lt;br /&gt;
&lt;br /&gt;
http://openhpsdr.org/wiki/images/6/63/NewbieGuide.pdf&lt;br /&gt;
&lt;br /&gt;
Familiarity with ghpsdr-alex is useful before starting on cross-compiling bits &amp;amp; pieces of it to run on the PandaBoard.&lt;br /&gt;
&lt;br /&gt;
The normal ghpsdr3-alex package needs QtSDK installed as well a lot of graphic specific librarys. At present, this is beyond the scope of this How-To, and it will be left for another day to produce the GUI part of this, ie. QtRadio. The PandaBoard will only be running the minimal code necessary to have a functional SDR server radio. pulseaudio and portaudio are required for non hpsdr protocol servers, and have been built successfully, however at present they are not used for the widget-server and could be eliminated from the build. Only the widget-server has been tested so far.&lt;br /&gt;
&lt;br /&gt;
This code is built outside of buildroot, but using the buildroot created toolchain. This is done by adding a Makefile to dspserver, DttSP, and widget server. The Makefile has a hardcoded path to the toolchain, so it may (will) be necessary to alter it to fit individual circumstances.  &lt;br /&gt;
&lt;br /&gt;
The various parts of this package have been evolving for quite some time, the ghpsdr3-alex project is the most recent &amp;quot;fork&amp;quot; of the original ghpsdr3 software&lt;br /&gt;
&lt;br /&gt;
http://openhpsdr.org/wiki/index.php?title=Ghpsdr3&lt;br /&gt;
&lt;br /&gt;
https://github.com/alexlee188/ghpsdr3-alex&lt;br /&gt;
&lt;br /&gt;
Although this project is trying not to be a fork, in essence it is, as the code is going in a different direction than the original authors intended. Three cheers for open source....&lt;br /&gt;
&lt;br /&gt;
=== dttsp ===&lt;br /&gt;
&lt;br /&gt;
This code is very mature and does much of the heavy lifting, non fft processing for the SDR stack&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== fftw3 ===&lt;br /&gt;
&lt;br /&gt;
The latest beta of fftw3 added support for ARM neon floating point.&lt;br /&gt;
&lt;br /&gt;
http://www.fftw.org/&lt;br /&gt;
&lt;br /&gt;
This is where the heavy lifting part of the DttSP happens. Somewhat independently evolved by the fftw3 authors and Vesperix&lt;br /&gt;
&lt;br /&gt;
http://www.vesperix.com/arm/fftw-arm/&lt;br /&gt;
&lt;br /&gt;
fftw3 3.3.1-beta1 is a critical part of the SDR stack. Without neon support, SDR on ARM v7-a is not possible.   &lt;br /&gt;
&lt;br /&gt;
=== widget-server ===&lt;br /&gt;
&lt;br /&gt;
The SDR-Widget project &lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/sdr-widget/&lt;br /&gt;
&lt;br /&gt;
http://www.yoyodyneconsulting.ca/pages/SDR-Widget.html&lt;br /&gt;
&lt;br /&gt;
Sought to develop an Atmel AVR AT32UC3A3256 based USB UAC2 sound &amp;quot;card&amp;quot;. Able to digitize at 24bits and 192000 samples/second, this project provided a &amp;quot;standard of comparison&amp;quot; noise floor of better than -130dbm. Subsequent firmware development allowed a single firmware image to support UAC1, UAC2 and hpsdr protocols, allowing Linux, MacOSX, and Windows users to benefit.  &lt;br /&gt;
&lt;br /&gt;
The widget-server driver supports the hpsdr protocol allowing all users 24bit 192000 samples/second operation. The following patch removes some dead code and allows claibration of the Si570 VFO chip. This is the direct interface to the SDR harware, and provides a standard ABI to the upper layer, dspserver&lt;br /&gt;
&lt;br /&gt;
==== patch to orig ====&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== dspserver ===&lt;br /&gt;
&lt;br /&gt;
The dspserver program is the &amp;quot;middle-ware&amp;quot; between the hardware interface code, many different hardware radios are supported, through different &amp;quot;driver&amp;quot; programs:&lt;br /&gt;
&lt;br /&gt;
hiqsdr http://www.hiqsdr.org/&lt;br /&gt;
&lt;br /&gt;
perseus http://microtelecom.it/perseus/&lt;br /&gt;
&lt;br /&gt;
sdriq http://www.rfspace.com/RFSPACE/SDR-IQ.html&lt;br /&gt;
&lt;br /&gt;
softrock http://www.softrockradio.org/&lt;br /&gt;
&lt;br /&gt;
widget-server http://www.yoyodyneconsulting.ca/pages/SDR-Widget.html&lt;br /&gt;
&lt;br /&gt;
hpsdrsvr http://openhpsdr.org/index.php&lt;br /&gt;
&lt;br /&gt;
sdr1000 http://www.flex-radio.com/Products.aspx?topic=sdr1k&lt;br /&gt;
&lt;br /&gt;
usrp http://www.ettus.com/&lt;br /&gt;
&lt;br /&gt;
dspserver includes DttSP and both must be compiled with neon enabled. The toolchains built by buildroot and the associated libraries all need this enabled.&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== QtRadio ===&lt;br /&gt;
&lt;br /&gt;
QtRadio is the GUI interface for the SDR package. In the PandaBoard implementation, no such layer exists. In the future, once ubuntu is stabilised with full GPU acceleration, a GUI might be possible. OpenCL and/or OpenGL are essential. &lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=qn479WawT3U&amp;amp;feature=youtu.be&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ==&lt;br /&gt;
&lt;br /&gt;
Tested with PandaBoard EA3 and PandaBoard ES EB3.&lt;br /&gt;
&lt;br /&gt;
== SDR Widget Lite Alpha ==&lt;br /&gt;
&lt;br /&gt;
The Widget Lite Alpha boards were capture only, the Widget Beta includes audio out and supports the same common firmware and protocol as the Alpha board.&lt;br /&gt;
&lt;br /&gt;
== SDR Widget Beta ==&lt;br /&gt;
&lt;br /&gt;
http://www.yoyodyneconsulting.ca/images/SDR_Widget_Lite_Alpha2_w_LCD.JPG&lt;br /&gt;
&lt;br /&gt;
== SoftRock Lite+USB Xtall v9.0 ==&lt;br /&gt;
&lt;br /&gt;
http://wb5rvz.com/sdr/RX_V9_0/&lt;br /&gt;
&lt;br /&gt;
http://pages.cs.wisc.edu/~timc/e/sdr.html&lt;br /&gt;
&lt;br /&gt;
== RTL-SDR ==&lt;br /&gt;
&lt;br /&gt;
=== mod to directly control the Si570 from the Widget ===&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_build_SDR</id>
		<title>Panda How to build SDR</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_build_SDR"/>
				<updated>2012-06-27T01:27:39Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
What I have done is still very much a work in progress. The PandaBoard,&lt;br /&gt;
OMAP4, platform is a very powerful and flexible system, but it has its&lt;br /&gt;
limitations. I have been doing work with the PandaBoard since about&lt;br /&gt;
November 2010, so I've seen the kernel and distributions move from&lt;br /&gt;
barely runable to very capable during that time.&lt;br /&gt;
&lt;br /&gt;
For my SDR work, I run a home built &amp;quot;distro&amp;quot; which I build with&lt;br /&gt;
buildroot. It has the advantages of Gentoo as everything is built from&lt;br /&gt;
source, but it is not quite &amp;quot;plug &amp;amp; play&amp;quot;. There is a lot of fiddling&lt;br /&gt;
that I had to do to get all the dependences and libraries that dspserver&lt;br /&gt;
and widget-server need. I am currently not running QtRadio on the&lt;br /&gt;
PandaBoard, and don't intend to, for a while at least. The DSP software&lt;br /&gt;
needs all the CPU power it can get.&lt;br /&gt;
  &lt;br /&gt;
The major problem that most folks have run into trying to get SDR&lt;br /&gt;
software running on a non-x86 platform is dealing with the lack of FPU.&lt;br /&gt;
Anything without an FPU is just a waste of time, software floating point&lt;br /&gt;
emulation is just tooooooooo slow. Custom code to do SDR with fixed&lt;br /&gt;
point arithmetic is possible and has been done. But, most recent efforts&lt;br /&gt;
to run something like ghpsdr or ghpsdr3-alex have met with dismal&lt;br /&gt;
failure due to the fact that folks will try to boot up Ubuntu on their&lt;br /&gt;
platform of choice, install the build-essentials, and try to build the&lt;br /&gt;
SDR software like they would on their desktop. While this may result in&lt;br /&gt;
a runnable piece of code, there is currently no support for an FPU. So&lt;br /&gt;
if the software runs at all, the DSP functions will not be able to keep&lt;br /&gt;
up with the incoming data.&lt;br /&gt;
&lt;br /&gt;
This is where I diverged from the mainstream. The key event was the&lt;br /&gt;
availability of FFTW3 3.3.1-beta1 which includes support for the neon&lt;br /&gt;
FPU that is present on the OMAP4 4430/4460/4470. Unfortunately ARM made&lt;br /&gt;
this co-processor an option on Cortex-A9 implementations, and Nvidia&lt;br /&gt;
chose not to have it on Tegra2, so what I wound up with is somewhat Ti&lt;br /&gt;
specific.&lt;br /&gt;
&lt;br /&gt;
I was able to cross compile fftw3 and run several benchmarks on my&lt;br /&gt;
PandaBoard ES and was quite impressed with the result vs. what Vesprerix&lt;br /&gt;
had reported on with their implementation (fork) of fftw3. Once I was&lt;br /&gt;
convinced that the fft routines on which DTTSP depend were &amp;quot;good enough&amp;quot;&lt;br /&gt;
I proceeded to put together a buildroot build that was tuned to using&lt;br /&gt;
&amp;quot;-mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp&amp;quot;. There are lots of&lt;br /&gt;
fiddly cross-compiler options and libraries that have to be checked to&lt;br /&gt;
be sure they actually are using neon (this work has not been completed&lt;br /&gt;
yet).&lt;br /&gt;
After the cross environment was working I went about getting dspserver,&lt;br /&gt;
widget-server and all their dependencies cross-compiled, there were a&lt;br /&gt;
lot. The most troublesome was Codec2, which I still have to hand tweak&lt;br /&gt;
to get to cross-compile properly. My first effort has Codec2 support&lt;br /&gt;
patched out, but the current code does include it. The dspserver and DttSP&lt;br /&gt;
code is identical to what is in the git repository, except for the Makefile &lt;br /&gt;
which is customized to compile with my toolchain. I have modified the &lt;br /&gt;
widget-server code to remove some dead code and add calibration for the Si570.&lt;br /&gt;
&lt;br /&gt;
Recently (6/26/2012) I've cross-compiled everything for armhf which is all the&lt;br /&gt;
rage these days as folks have found that floating point emulation sucks rocks.&lt;br /&gt;
I earlier used softfp for compatibility sake, but am now fiddling with armhf which takes&lt;br /&gt;
a bit of fiddling with buildroots gcc makefile to get to work. Might get a 10% performance&lt;br /&gt;
boost.&lt;br /&gt;
&lt;br /&gt;
Another issue that I haven't dug into yet is Jack, it is necessary for&lt;br /&gt;
non-hpsdr protocol servers. Jack2 uses waf (a really old version 1.5.0 at that)&lt;br /&gt;
instead of make. I am able to cross compile Jack1 (0.121.3) since it uses make, &lt;br /&gt;
but Jack2 needs some help. Jack2 has had some allignment issues at it is very x86 centric.&lt;br /&gt;
Pulse audio and Port audio were no problem.&lt;br /&gt;
&lt;br /&gt;
There will be an sd card image that one can &amp;quot;dd&amp;quot; onto a blank card. (someday)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For SDR work, at least gcc 4.6.2 is a must, now using 4.7.1&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
I build the kernel and u-boot/SPL outside of buildroot, but use the buildroot toolchain. This may change in the near future, as buildroot will soon support the PandaBoard as a target. The latest buildroot can build SPL/MLO/u-boot/kernel and has a PandaBoard defconfig.&lt;br /&gt;
&lt;br /&gt;
== Kernel==&lt;br /&gt;
&lt;br /&gt;
=== kernel 3.3-rc2 .config ===&lt;br /&gt;
=== kernel 3.5-rc4 .config ===&lt;br /&gt;
&lt;br /&gt;
== u-boot/MLO/SPL ==&lt;br /&gt;
&lt;br /&gt;
== Buildroot Internal toolchain with uClibc  mfloat-abi=softfp ==&lt;br /&gt;
&lt;br /&gt;
Start by downloading buildroot and getting all the prerequisites installed on your build machine.&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.buildroot.net/buildroot buildroot-softfp&lt;br /&gt;
&lt;br /&gt;
Then apply the following patch from the main buildroot directory&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001_add_new_packages.patch&lt;br /&gt;
&lt;br /&gt;
Then replace the config files for buildroot, busybox, and uClibc like this&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0002_replace_configs.patch&lt;br /&gt;
&lt;br /&gt;
Build everything&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
After the build completes you will have a toolchain, packages and libraries except for codec2. This takes a bit of fiddling with to cross compile.&lt;br /&gt;
&lt;br /&gt;
Download http://freetel.svn.sourceforge.net/viewvc/freetel/codec2/?view=tar&lt;br /&gt;
&lt;br /&gt;
Untar in a convenient place, cd to that place, run ./configure, then make. This will build codec2/src/generate_codebook for your desktop platform, which will be needed later.&lt;br /&gt;
&lt;br /&gt;
Now run make menuconfig in the buildroot main dir, go to Package Selection for Target --&amp;gt; Libraries --&amp;gt; Other and select codec2&lt;br /&gt;
&lt;br /&gt;
Run make again from the main buildroot dir and wait till the build fails, which it should.&lt;br /&gt;
&lt;br /&gt;
Now copy the generate_codebook file from codec2/src/ to buildroot/output/build/codec2-289/src/&lt;br /&gt;
&lt;br /&gt;
Now back to the main buildroot dir and run make again. This will finish building and the codec2 library.&lt;br /&gt;
&lt;br /&gt;
=== buildroot .config ===&lt;br /&gt;
=== busybox .config ===&lt;br /&gt;
=== uClibc .config ===&lt;br /&gt;
&lt;br /&gt;
== Buildroot Internal toolchain with uClibc  mfloat-abi=hard ==&lt;br /&gt;
&lt;br /&gt;
Start by downloading buildroot and getting all the prerequisites installed on your build machine.&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.buildroot.net/buildroot buildroot-hf&lt;br /&gt;
&lt;br /&gt;
Building the whole shebang for hardfloat starts off simply enough but, buildroot support for hardfloat is somewhat broken,&lt;br /&gt;
&lt;br /&gt;
Apply the following patch and use with the supplied buildroot .config&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt;0001_fix_buildroot_uclibc_hardfloat.patch&lt;br /&gt;
&lt;br /&gt;
Don't try to change the floating point abi as this patch may be fragile enough to break everything.&lt;br /&gt;
&lt;br /&gt;
Then apply the following patch from the main buildroot directory&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001_add_new_packages.patch&lt;br /&gt;
&lt;br /&gt;
Then replace the config files for buildroot, busybox, and uClibc like this&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0002_replace_configs.patch&lt;br /&gt;
&lt;br /&gt;
This is just a place holder till I figure out how to do this properly&lt;br /&gt;
&lt;br /&gt;
Build everything&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
After the build completes you will have a toolchain, packages and libraries except for codec2. This takes a bit of fiddling with to cross compile.&lt;br /&gt;
&lt;br /&gt;
Download http://freetel.svn.sourceforge.net/viewvc/freetel/codec2/?view=tar&lt;br /&gt;
&lt;br /&gt;
Untar in a convenient place, cd to that place, run ./configure, then make. This will build codec2/src/generate_codebook for your desktop platform, which will be needed later.&lt;br /&gt;
&lt;br /&gt;
Now run make menuconfig in the buildroot main dir, go to Package Selection for Target --&amp;gt; Libraries --&amp;gt; Other and select codec2&lt;br /&gt;
&lt;br /&gt;
Run make again from the main buildroot dir and wait till the build fails, which it should.&lt;br /&gt;
&lt;br /&gt;
Now copy the generate_codebook file from codec2/src/ to buildroot/output/build/codec2-289/src/&lt;br /&gt;
&lt;br /&gt;
Now back to the main buildroot dir and run make again. This will finish building and the codec2 library.&lt;br /&gt;
&lt;br /&gt;
=== buildroot .config ===&lt;br /&gt;
=== busybox .config ===&lt;br /&gt;
=== uClibc .config ===&lt;br /&gt;
&lt;br /&gt;
== Buildroot Crosstool-ng toolchain with glibc ==&lt;br /&gt;
&lt;br /&gt;
=== buildroot .config ===&lt;br /&gt;
=== busybox .config ===&lt;br /&gt;
=== crosstool-ng config ===&lt;br /&gt;
&lt;br /&gt;
== uClibc vs glibc size and speed in a real world example ==&lt;br /&gt;
&lt;br /&gt;
After building the first PandaSDR system, I was curious as to how things might change if I used glibc. The first thing I did was do a bench mark on the floating point performance of both. uClibc was woefully inadequate in sin/cos &lt;br /&gt;
&lt;br /&gt;
http://gruntthepeon.free.fr/ssemath/neon_mathfun.html&lt;br /&gt;
&lt;br /&gt;
with this benchmark compiled with glibc the performance numbers matched closely with the website, however with uClibc the sinf/cosf numbers were off.&lt;br /&gt;
&lt;br /&gt;
Instead of &amp;quot;2.0 millions of vector evaluations/second -&amp;gt; 121 cycles/value&amp;quot; I got &amp;quot;.1 millions of vector evaluations/second -&amp;gt; 1333 cycles/value&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Based on that benchmark, I had buildroot build a new system with a crosstool-ng based toolchain using glibc 2.13. This was somewhat complicated since the gcc 4.6.2 implementation was EXPERIMENTAL. Numerous other problems were encountered, but after a while I was able to get the toolchain built and the packages compiled with neon support for cortex-a9. The SDR software dspserver and widget-server built without problems except for the lack of libgomp in the target rootfs. It ws built ok, and populated into the toolchain's staging area, it just didn't make into the final rootfs. After all was said &amp;amp; done I compared the size of the libraries and executables, glibc's libs were certainly bigger, but there were fewer of them. The packages executables and libs were about the same size. Overall the two rootfs's were very close to the same size at 32MBytes (uClibc), and 40MBytes (glibc), the largest difference being in /usr/share/locale (292KBytes vs 7.7MBytes). In operation the SDR code consumed about the same amount of cpu power too. More to come as I investigate further.&lt;br /&gt;
&lt;br /&gt;
Buildroot with uClibc was certainly easier to get running, but crossstool-ng with glibc more closely compares to what would be available in a &amp;quot;Distro&amp;quot; like ubuntu/angstrom/arch Linux. Performance without neon was not evaluated. Earlier linpack and fftw3 benchmarks showed that without neon floating performance was abysmal. Both builds had fiddly bits, but my lack of programming skill probably weighed in as well.&lt;br /&gt;
&lt;br /&gt;
Building buildroot with either uClibc or glibc (via crosstools-ng) builds all the host tools necessarry, whereas building crosstools-ng alone requires versions of host tools that you may not have on your machine. For example, my desktop 64bit Core i7 is running ubuntu karmic, it can't build crosstools-ng without updating lots of tools, but it can build buildroot with crosstools-ng. However it is currently not possible to change the crosstools-ng configuration in buildroot as it is with busybox or uClibc. It's an inconvenience, but not a show stopper. &lt;br /&gt;
&lt;br /&gt;
== rootfs ==&lt;br /&gt;
&lt;br /&gt;
=== Packages ===&lt;br /&gt;
&lt;br /&gt;
alsa-lib-1.0.24.1&lt;br /&gt;
&lt;br /&gt;
alsa-utils-1.0.24.2 &lt;br /&gt;
&lt;br /&gt;
busybox-1.19.3 &lt;br /&gt;
&lt;br /&gt;
codec2-289 &lt;br /&gt;
&lt;br /&gt;
dbus-1.4.16 &lt;br /&gt;
&lt;br /&gt;
dbus-glib-0.98 &lt;br /&gt;
&lt;br /&gt;
dropbear-2011.54 &lt;br /&gt;
&lt;br /&gt;
expat-2.0.1 &lt;br /&gt;
&lt;br /&gt;
fftw-3.3.1-beta1 &lt;br /&gt;
&lt;br /&gt;
gdb-7.3.1-target &lt;br /&gt;
&lt;br /&gt;
gdbserver-7.3.1 &lt;br /&gt;
&lt;br /&gt;
gettext-0.16.1 &lt;br /&gt;
&lt;br /&gt;
i2c-tools-3.0.3 &lt;br /&gt;
&lt;br /&gt;
input-event-daemon-v0.1.3 &lt;br /&gt;
&lt;br /&gt;
json-c-0.9 &lt;br /&gt;
&lt;br /&gt;
libconfig-1.4.8 &lt;br /&gt;
&lt;br /&gt;
libevent-2.0.14 &lt;br /&gt;
&lt;br /&gt;
libglib2-2.28.8 &lt;br /&gt;
&lt;br /&gt;
libogg-1.2.2 &lt;br /&gt;
&lt;br /&gt;
libsamplerate-0.1.8 &lt;br /&gt;
&lt;br /&gt;
libsndfile-1.0.25 &lt;br /&gt;
&lt;br /&gt;
libtool-2.2.10 &lt;br /&gt;
&lt;br /&gt;
libusb-1.0.8 &lt;br /&gt;
&lt;br /&gt;
libusb-compat-0.1.3 &lt;br /&gt;
&lt;br /&gt;
libxml2-2.7.8 &lt;br /&gt;
&lt;br /&gt;
ncurses-5.7 &lt;br /&gt;
&lt;br /&gt;
ortp-0.18.0 &lt;br /&gt;
&lt;br /&gt;
portaudio-V19 &lt;br /&gt;
&lt;br /&gt;
pulseaudio-1.0 &lt;br /&gt;
&lt;br /&gt;
speex-1.2rc1 &lt;br /&gt;
&lt;br /&gt;
wireless_tools-29 &lt;br /&gt;
&lt;br /&gt;
zlib-1.2.5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ghpsdr3-alex ==&lt;br /&gt;
&lt;br /&gt;
A good introductory guide to ghpsdr &amp;amp; ghpsdr-alex is available:&lt;br /&gt;
&lt;br /&gt;
http://openhpsdr.org/wiki/images/6/63/NewbieGuide.pdf&lt;br /&gt;
&lt;br /&gt;
Familiarity with ghpsdr-alex is useful before starting on cross-compiling bits &amp;amp; pieces of it to run on the PandaBoard.&lt;br /&gt;
&lt;br /&gt;
The normal ghpsdr3-alex package needs QtSDK installed as well a lot of graphic specific librarys. At present, this is beyond the scope of this How-To, and it will be left for another day to produce the GUI part of this, ie. QtRadio. The PandaBoard will only be running the minimal code necessary to have a functional SDR server radio. pulseaudio and portaudio are required for non hpsdr protocol servers, and have been built successfully, however at present they are not used for the widget-server and could be eliminated from the build. Only the widget-server has been tested so far.&lt;br /&gt;
&lt;br /&gt;
This code is built outside of buildroot, but using the buildroot created toolchain. This is done by adding a Makefile to dspserver, DttSP, and widget server. The Makefile has a hardcoded path to the toolchain, so it may (will) be necessary to alter it to fit individual circumstances.  &lt;br /&gt;
&lt;br /&gt;
The various parts of this package have been evolving for quite some time, the ghpsdr3-alex project is the most recent &amp;quot;fork&amp;quot; of the original ghpsdr3 software&lt;br /&gt;
&lt;br /&gt;
http://openhpsdr.org/wiki/index.php?title=Ghpsdr3&lt;br /&gt;
&lt;br /&gt;
https://github.com/alexlee188/ghpsdr3-alex&lt;br /&gt;
&lt;br /&gt;
Although this project is trying not to be a fork, in essence it is, as the code is going in a different direction than the original authors intended. Three cheers for open source....&lt;br /&gt;
&lt;br /&gt;
=== dttsp ===&lt;br /&gt;
&lt;br /&gt;
This code is very mature and does much of the heavy lifting, non fft processing for the SDR stack&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== fftw3 ===&lt;br /&gt;
&lt;br /&gt;
The latest beta of fftw3 added support for ARM neon floating point.&lt;br /&gt;
&lt;br /&gt;
http://www.fftw.org/&lt;br /&gt;
&lt;br /&gt;
This is where the heavy lifting part of the DttSP happens. Somewhat independently evolved by the fftw3 authors and Vesperix&lt;br /&gt;
&lt;br /&gt;
http://www.vesperix.com/arm/fftw-arm/&lt;br /&gt;
&lt;br /&gt;
fftw3 3.3.1-beta1 is a critical part of the SDR stack. Without neon support, SDR on ARM v7-a is not possible.   &lt;br /&gt;
&lt;br /&gt;
=== widget-server ===&lt;br /&gt;
&lt;br /&gt;
The SDR-Widget project &lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/sdr-widget/&lt;br /&gt;
&lt;br /&gt;
http://www.yoyodyneconsulting.ca/pages/SDR-Widget.html&lt;br /&gt;
&lt;br /&gt;
Sought to develop an Atmel AVR AT32UC3A3256 based USB UAC2 sound &amp;quot;card&amp;quot;. Able to digitize at 24bits and 192000 samples/second, this project provided a &amp;quot;standard of comparison&amp;quot; noise floor of better than -130dbm. Subsequent firmware development allowed a single firmware image to support UAC1, UAC2 and hpsdr protocols, allowing Linux, MacOSX, and Windows users to benefit.  &lt;br /&gt;
&lt;br /&gt;
The widget-server driver supports the hpsdr protocol allowing all users 24bit 192000 samples/second operation. The following patch removes some dead code and allows claibration of the Si570 VFO chip. This is the direct interface to the SDR harware, and provides a standard ABI to the upper layer, dspserver&lt;br /&gt;
&lt;br /&gt;
==== patch to orig ====&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== dspserver ===&lt;br /&gt;
&lt;br /&gt;
The dspserver program is the &amp;quot;middle-ware&amp;quot; between the hardware interface code, many different hardware radios are supported, through different &amp;quot;driver&amp;quot; programs:&lt;br /&gt;
&lt;br /&gt;
hiqsdr http://www.hiqsdr.org/&lt;br /&gt;
&lt;br /&gt;
perseus http://microtelecom.it/perseus/&lt;br /&gt;
&lt;br /&gt;
sdriq http://www.rfspace.com/RFSPACE/SDR-IQ.html&lt;br /&gt;
&lt;br /&gt;
softrock http://www.softrockradio.org/&lt;br /&gt;
&lt;br /&gt;
widget-server http://www.yoyodyneconsulting.ca/pages/SDR-Widget.html&lt;br /&gt;
&lt;br /&gt;
hpsdrsvr http://openhpsdr.org/index.php&lt;br /&gt;
&lt;br /&gt;
sdr1000 http://www.flex-radio.com/Products.aspx?topic=sdr1k&lt;br /&gt;
&lt;br /&gt;
usrp http://www.ettus.com/&lt;br /&gt;
&lt;br /&gt;
dspserver includes DttSP and both must be compiled with neon enabled. The toolchains built by buildroot and the associated libraries all need this enabled.&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== QtRadio ===&lt;br /&gt;
&lt;br /&gt;
QtRadio is the GUI interface for the SDR package. In the PandaBoard implementation, no such layer exists. In the future, once ubuntu is stabilised with full GPU acceleration, a GUI might be possible. OpenCL and/or OpenGL are essential. &lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=qn479WawT3U&amp;amp;feature=youtu.be&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ==&lt;br /&gt;
&lt;br /&gt;
Tested with PandaBoard EA3 and PandaBoard ES EB3.&lt;br /&gt;
&lt;br /&gt;
== SDR Widget Lite Alpha ==&lt;br /&gt;
&lt;br /&gt;
The Widget Lite Alpha boards were capture only, the Widget Beta includes audio out and supports the same common firmware and protocol as the Alpha board.&lt;br /&gt;
&lt;br /&gt;
== SDR Widget Beta ==&lt;br /&gt;
&lt;br /&gt;
http://www.yoyodyneconsulting.ca/images/SDR_Widget_Lite_Alpha2_w_LCD.JPG&lt;br /&gt;
&lt;br /&gt;
== SoftRock Lite+USB Xtall v9.0 ==&lt;br /&gt;
&lt;br /&gt;
http://wb5rvz.com/sdr/RX_V9_0/&lt;br /&gt;
&lt;br /&gt;
http://pages.cs.wisc.edu/~timc/e/sdr.html&lt;br /&gt;
&lt;br /&gt;
== RTL-SDR ==&lt;br /&gt;
&lt;br /&gt;
=== mod to directly control the Si570 from the Widget ===&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/PandaBoard</id>
		<title>PandaBoard</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/PandaBoard"/>
				<updated>2012-06-25T18:18:43Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://www.pandaboard.org PandaBoard] is an [[OMAP4430]] ([[Cortex]]-A9) based low cost development platform.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
* OMAP4 (Cortex-A9) CPU based open development platform.&lt;br /&gt;
** OMAP4430 Application processor&lt;br /&gt;
** 1GB low-power DDR2&lt;br /&gt;
** Display HDMI v1.3 Connector (Type A) to drive HD displays, DVI-D Connector (can drive a 2nd display, simultaneous display; requires HDMI to DVI-D adapter), LCD expansion header&lt;br /&gt;
** 3.5&amp;quot; audio in/out and HDMI Audio out&lt;br /&gt;
** Full size SD/MMC card&lt;br /&gt;
** Built in 802.11 &amp;amp; Bluetooth v2.1+EDR&lt;br /&gt;
** Onboard 10/100 Ethernet&lt;br /&gt;
** Expansion: 1xUSB OTG, 2xUSB HS host ports, General purpose expansion header (I2C, GPMC, USB, MMC, DSS, ETM)&lt;br /&gt;
** JTAG, UART/RS-232, 2 status LEDs, 1GPIO button&lt;br /&gt;
&lt;br /&gt;
More details can be found [http://pandaboard.org/content/platform here]&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Front&lt;br /&gt;
[[File:PandaBoard_front.png|320px]]&lt;br /&gt;
&lt;br /&gt;
A hi resolution picture of the PandaBoard EA1 front is available here: http://elinux.org/images/d/d4/Panda_front.jpg&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Back&lt;br /&gt;
[[File:Panda_back.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
= Availability =&lt;br /&gt;
PandaBoard are in production and can be ordered from [http://pandaboard.org/content/buy Worldwide distributors]. You can also easily identify the board you have using [http://omappedia.org/wiki/PandaBoard_Revisions Board revision id]&lt;br /&gt;
&lt;br /&gt;
== Rev A3 ==&lt;br /&gt;
Latest version of the board.&lt;br /&gt;
&lt;br /&gt;
== Rev A1/A2  ==&lt;br /&gt;
[http://omappedia.org/wiki/PandaBoard_Revisions#Rev_A2 Details]&lt;br /&gt;
&lt;br /&gt;
== Rev EA1/EA2 ==&lt;br /&gt;
These were limited number of 'Early Adopter' boards that built prior to production versions. [http://omappedia.org/wiki/PandaBoard_Revisions#Rev_EA1 more details]&lt;br /&gt;
&lt;br /&gt;
== Rev ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoare-ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the MLO/u-boot/kernel be specifically crafted for the 4460. The thermal management is not in the mainline 4430 code as yet and could cause unwanted thermal problems. So BEWARE of running any code built for the non -ES PandaBoard on the -ES model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Accessories =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_Bamboo|Bamboo Board]]&lt;br /&gt;
* [[BeagleBoard_Trainer|Trainer Board]]&lt;br /&gt;
* [https://specialcomp.com/pandaboard/order.htm Acrylic case]&lt;br /&gt;
* [http://bb-lvds.blogspot.com 10&amp;quot; LCD LVDS plug-and-play bundle with capacitance touchscreen and ambient light sensor]&lt;br /&gt;
*[[File:Beadaframe.jpg|200px|thumb|BeadaFrame]][http://www.esky-sh.com/bbs/viewtopic.php?f=19&amp;amp;t=468 BeadaFrame] 7&amp;quot; LCD display kit&lt;br /&gt;
** 7&amp;quot; 800x480 TFT LCD screen&lt;br /&gt;
** PWM Backlight control&lt;br /&gt;
** Resistive touch panel&lt;br /&gt;
** RTC time keeper &lt;br /&gt;
** Plastic frame&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Recommended Reading Material =&lt;br /&gt;
&lt;br /&gt;
* [[Embedded_Linux_System_Design_and_Development]]&lt;br /&gt;
* [[Embedded_linux_primer]]&lt;br /&gt;
* [[Building_Embedded_Linux_Systems]]&lt;br /&gt;
* [[Essential_Linux_Device_Drivers]]&lt;br /&gt;
* [[Linux_Device_Drivers]]&lt;br /&gt;
&lt;br /&gt;
= How To's =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_MLO_&amp;amp;_u-boot|How to build MLO and u-boot]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/23/2011'''&lt;br /&gt;
* [[Panda_How_to_Barebox|How to build Barebox]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 11/12/2011'''&lt;br /&gt;
* [[PandaBoard_ES_uboot_howto|How to build u-boot and SPL]] for PandaBoard and PandaBoard ES '''--&amp;gt;&amp;gt; Updated 12/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rel|How to build 3.2 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_3_rcx|How to build 3.3-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_3_rel|How to build 3.3 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/19/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_4_rel|How to build 3.4 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; NEW 6/3/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_5_rcx|How to build 3.5-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 6/25/2012'''&lt;br /&gt;
* [[Panda_How_to_add_2_USBs|How to add two additional USB connections]] to the PandaBoard&lt;br /&gt;
* [[Panda_How_to_add_Power_Switch|How to add a power switch]] to the PandaBoard '''--&amp;gt;&amp;gt; WIP'''&lt;br /&gt;
* [[PandaBoard Power Measurements]]&lt;br /&gt;
&lt;br /&gt;
== Older How To's ==&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_buildroot|How to build a minimal file system using buildroot]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel|How to build a kernel using the buildroot toolchain from above]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel_new|How to build 2.6.38-rcx kernels]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/15/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_38|How to build 2.6.38 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/16/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39|How to build 2.6.39-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/12/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39rel|How to build 2.6.39 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rel|How to build 3.0 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/29/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rcx|How to build 3.0-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/11/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rcx|How to build 3.1-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/5/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rel|How to build 3.1 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/31/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rcx|How to build 3.2-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
&lt;br /&gt;
= Community =&lt;br /&gt;
 &lt;br /&gt;
Website: [http://pandaboard.org http://pandaboard.org]&lt;br /&gt;
&lt;br /&gt;
IRC: #pandaboard @irc.freenode.net&lt;br /&gt;
&lt;br /&gt;
Mailing List: [http://groups.google.com/group/pandaboard pandaboard@googlegroups.com]&lt;br /&gt;
&lt;br /&gt;
[[category:OMAP]]&lt;br /&gt;
[[category:omap4430]]&lt;br /&gt;
[[category:PandaBoard]]&lt;br /&gt;
[[category:Development Boards]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_kernel_3_5_rcx</id>
		<title>Panda How to kernel 3 5 rcx</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_kernel_3_5_rcx"/>
				<updated>2012-06-25T18:17:04Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Kernel 3.5 merge window has closed and 3.5-rc1 has been released.&lt;br /&gt;
&lt;br /&gt;
You can download a tarball of the mainline kernel at http://kernel.org/&lt;br /&gt;
&lt;br /&gt;
or you can clone a copy of mainline kernel with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
cd linux&lt;br /&gt;
git checkout v3.5-rcx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Important Note '''&lt;br /&gt;
There has been a lot of work done on the HDMI interface and its related driver omapdrm. Between kernel 3.1 and 3.2-rc1 enough changed so that the Testing section on the HDMI interface has been removed from this How-To. The HDMI testing section below will return when the code stabilises. &lt;br /&gt;
&lt;br /&gt;
=== rc1 ===&lt;br /&gt;
&lt;br /&gt;
Many changes in OMAP and Panda specific code since 3.4 was released. The HDMI, DVI interfaces both work under certain circumstances and properly read the EDID info from the monitor. HDMI sound is now functional. Changes to the WLAN code continue, and WLAN does function as well under the proper circumstances.&lt;br /&gt;
&lt;br /&gt;
=== rc4 ===&lt;br /&gt;
&lt;br /&gt;
-rc4 has a few omap4 related changes, but nothing specific to the PandaBoard. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The WL12xx driver on a PandaBoard still needs the same patch as used for 3.1 and 3.2. When the driver isn't happy, the error messages are somewhat less than useful, however the drivers/firmware are being constantly improved and it would not be a good idea to have the driver support anything but the latest firmware.&lt;br /&gt;
With the modules built in, operation is not consistent. The PandaBoard ES does not need the patch.&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoard ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the [[PandaBoard_ES_uboot_howto| MLO/u-boot be specifically crafted for the 4460]]. The thermal management is not in the mainline 4430 code as yet and therefore the max clock frequency when running the OMAP4460 on the PandaBoard ES with the mainline kernel is 920MHz(same as the OMAP4430).&lt;br /&gt;
&lt;br /&gt;
== wlan12xx ==&lt;br /&gt;
&lt;br /&gt;
== wlan12xx patch ==&lt;br /&gt;
This patch is still necessary to resolve the issue noted in 3.2 and earlier&lt;br /&gt;
&lt;br /&gt;
[[Media:0001a-omap4-pandaboard-wlan-fix.patch|0001a-omap4-pandaboard-wlan-fix.patch]]&lt;br /&gt;
&lt;br /&gt;
Apply it like so: (from inside the kernel sources directory)&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001a-omap4-pandaboard-wlan-fix.patch&lt;br /&gt;
&lt;br /&gt;
NOTE: it applies with offsets which is ok.&lt;br /&gt;
&lt;br /&gt;
The latest wlan firmware is available from git: git://git.kernel.org/?p=linux/kernel/git/firmware/linux-firmware.git just copy the contents of the ti-connectivity folder to /lib/firmware/ti-connectivity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The patch is no longer necessary for the PandaBoard ES but does not seem to hurt if applied. In addition, the race issue that required building as a module has returned. As part of the code cleanup, the wl12xx and wl12xx_sdio drivers no longer depend on each other. This creates an issue with systems that do not use udev or mdev (with a somewhat fiddly &amp;amp; slow script) to load MODALIAS drivers. The quick solution is to modprobe both, the order no longer matters. Just modprobing wl12xx_sdio will no longer automatically load wl12xx.&lt;br /&gt;
&lt;br /&gt;
In -rc1 there is an issue with wl12xx_sdio building as a module, so the recommended way (as implememted in the .config) is to build wl12xx as a single module which includes wl12xx, wl12xx_sdio and wl12xx_core. This can then be modprobed on either PandaBoard (with patch) or PandaBoard ES. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
Building 3.5-rc1/rc4 is fairly straight forward.&lt;br /&gt;
&lt;br /&gt;
Grab the 3.5-rc1/4 sources and use [[Media:config.3.5-rc1.1|config.3.5-rc1.1]] or [[Media:config.3.5-rc4.1|config.3.5-rc4.1]] as the .config &lt;br /&gt;
&lt;br /&gt;
The 3.5-rc1/4 .config enables Sound builtin and wl12xx as a single module. The builtin sound works, as does HDMI sound. Note that the HDMI monitor must be plugged in and enabled for the HDMI sound to work.&lt;br /&gt;
&lt;br /&gt;
Then compile like so:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=Path_to_your/arm-2010q1/bin/arm-none-linux-gnueabi- uImage&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== i2cdetect ===&lt;br /&gt;
&lt;br /&gt;
You can run i2cdetect and the results should look like this:&lt;br /&gt;
&lt;br /&gt;
 # i2cdetect -y -r 1&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
 00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 40: -- -- -- -- -- -- -- -- UU UU UU UU -- -- -- -- &lt;br /&gt;
 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 70: -- -- -- -- -- -- -- --&lt;br /&gt;
&lt;br /&gt;
=== wlan ===&lt;br /&gt;
&lt;br /&gt;
Run the following commands after the PandaBoard is booted:&lt;br /&gt;
&lt;br /&gt;
 modprobe wl12xx    ** only if you built the wl12xx drivers a module as recommended&lt;br /&gt;
 ifconfig wlan0 up&lt;br /&gt;
 iwconfig wlan0 essid &amp;quot;Your AccessPoint Name&amp;quot;&lt;br /&gt;
 udhcpc -i wlan0&lt;br /&gt;
&lt;br /&gt;
If your network is set up to provide DHCP services, the PandaBoard will get all the &amp;quot;right stuff(tm)&amp;quot; and you will be able to access the Internet.&lt;br /&gt;
&lt;br /&gt;
 # ping www.google.com&lt;br /&gt;
 PING www.google.com (74.125.73.99): 56 data bytes&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=0 ttl=43 time=62.683 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=1 ttl=43 time=54.077 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=2 ttl=43 time=51.484 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=3 ttl=43 time=54.108 ms&lt;br /&gt;
&lt;br /&gt;
==== WEP ====&lt;br /&gt;
Setting up a WEP key is fairly straightforward and is achieved by adding the command:&lt;br /&gt;
&lt;br /&gt;
 iwconfig wlan0 key C7EE546141233ECCF3FDF68897&lt;br /&gt;
&lt;br /&gt;
after setting the essid&lt;br /&gt;
&lt;br /&gt;
NOTE: the command:&lt;br /&gt;
&lt;br /&gt;
 iwconfig wlan0 key s:panda &lt;br /&gt;
&lt;br /&gt;
would seem to set the key using the ascii passphrase &amp;quot;panda&amp;quot; However, the conversion is not implemented in iwlib (wireless-tools 30-pre9) and will result an a bogus key being set in the wlan.&lt;br /&gt;
&lt;br /&gt;
http://www.powerdog.com/wepkey.cgi can generate hex keys from passphrases and was used to generate C7EE546141233ECCF3FDF68897 from panda.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== USB Performance ===&lt;br /&gt;
&lt;br /&gt;
Insert a USB memory stick into one of the usb ports&lt;br /&gt;
&lt;br /&gt;
Run dmesg to see what sdx the stick was recognised as, then:&lt;br /&gt;
&lt;br /&gt;
 hdparam -tT /dev/sdx&lt;br /&gt;
&lt;br /&gt;
If you run the same command on a desktop Linux system, with the same USB memory stick, the PandaBoard's speed should roughly be the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PandaBoard]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/File:Config.3.5-rc4.1</id>
		<title>File:Config.3.5-rc4.1</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/File:Config.3.5-rc4.1"/>
				<updated>2012-06-25T18:16:08Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: .config for 3.5-rc4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.config for 3.5-rc4&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/PandaBoard</id>
		<title>PandaBoard</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/PandaBoard"/>
				<updated>2012-06-03T19:37:03Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: /* How To's */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://www.pandaboard.org PandaBoard] is an [[OMAP4430]] ([[Cortex]]-A9) based low cost development platform.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
* OMAP4 (Cortex-A9) CPU based open development platform.&lt;br /&gt;
** OMAP4430 Application processor&lt;br /&gt;
** 1GB low-power DDR2&lt;br /&gt;
** Display HDMI v1.3 Connector (Type A) to drive HD displays, DVI-D Connector (can drive a 2nd display, simultaneous display; requires HDMI to DVI-D adapter), LCD expansion header&lt;br /&gt;
** 3.5&amp;quot; audio in/out and HDMI Audio out&lt;br /&gt;
** Full size SD/MMC card&lt;br /&gt;
** Built in 802.11 &amp;amp; Bluetooth v2.1+EDR&lt;br /&gt;
** Onboard 10/100 Ethernet&lt;br /&gt;
** Expansion: 1xUSB OTG, 2xUSB HS host ports, General purpose expansion header (I2C, GPMC, USB, MMC, DSS, ETM)&lt;br /&gt;
** JTAG, UART/RS-232, 2 status LEDs, 1GPIO button&lt;br /&gt;
&lt;br /&gt;
More details can be found [http://pandaboard.org/content/platform here]&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Front&lt;br /&gt;
[[File:PandaBoard_front.png|320px]]&lt;br /&gt;
&lt;br /&gt;
A hi resolution picture of the PandaBoard EA1 front is available here: http://elinux.org/images/d/d4/Panda_front.jpg&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Back&lt;br /&gt;
[[File:Panda_back.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
= Availability =&lt;br /&gt;
PandaBoard are in production and can be ordered from [http://pandaboard.org/content/buy Worldwide distributors]. You can also easily identify the board you have using [http://omappedia.org/wiki/PandaBoard_Revisions Board revision id]&lt;br /&gt;
&lt;br /&gt;
== Rev A3 ==&lt;br /&gt;
Latest version of the board.&lt;br /&gt;
&lt;br /&gt;
== Rev A1/A2  ==&lt;br /&gt;
[http://omappedia.org/wiki/PandaBoard_Revisions#Rev_A2 Details]&lt;br /&gt;
&lt;br /&gt;
== Rev EA1/EA2 ==&lt;br /&gt;
These were limited number of 'Early Adopter' boards that built prior to production versions. [http://omappedia.org/wiki/PandaBoard_Revisions#Rev_EA1 more details]&lt;br /&gt;
&lt;br /&gt;
== Rev ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoare-ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the MLO/u-boot/kernel be specifically crafted for the 4460. The thermal management is not in the mainline 4430 code as yet and could cause unwanted thermal problems. So BEWARE of running any code built for the non -ES PandaBoard on the -ES model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Accessories =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_Bamboo|Bamboo Board]]&lt;br /&gt;
* [[BeagleBoard_Trainer|Trainer Board]]&lt;br /&gt;
* [https://specialcomp.com/pandaboard/order.htm Acrylic case]&lt;br /&gt;
* [http://bb-lvds.blogspot.com 10&amp;quot; LCD LVDS plug-and-play bundle with capacitance touchscreen and ambient light sensor]&lt;br /&gt;
*[[File:Beadaframe.jpg|200px|thumb|BeadaFrame]][http://www.esky-sh.com/bbs/viewtopic.php?f=19&amp;amp;t=468 BeadaFrame] 7&amp;quot; LCD display kit&lt;br /&gt;
** 7&amp;quot; 800x480 TFT LCD screen&lt;br /&gt;
** PWM Backlight control&lt;br /&gt;
** Resistive touch panel&lt;br /&gt;
** RTC time keeper &lt;br /&gt;
** Plastic frame&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Recommended Reading Material =&lt;br /&gt;
&lt;br /&gt;
* [[Embedded_Linux_System_Design_and_Development]]&lt;br /&gt;
* [[Embedded_linux_primer]]&lt;br /&gt;
* [[Building_Embedded_Linux_Systems]]&lt;br /&gt;
* [[Essential_Linux_Device_Drivers]]&lt;br /&gt;
* [[Linux_Device_Drivers]]&lt;br /&gt;
&lt;br /&gt;
= How To's =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_MLO_&amp;amp;_u-boot|How to build MLO and u-boot]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/23/2011'''&lt;br /&gt;
* [[Panda_How_to_Barebox|How to build Barebox]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 11/12/2011'''&lt;br /&gt;
* [[PandaBoard_ES_uboot_howto|How to build u-boot and SPL]] for PandaBoard and PandaBoard ES '''--&amp;gt;&amp;gt; Updated 12/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rel|How to build 3.2 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_3_rcx|How to build 3.3-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_3_rel|How to build 3.3 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/19/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_4_rel|How to build 3.4 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; NEW 6/3/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_5_rcx|How to build 3.5-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; NEW 6/3/2012'''&lt;br /&gt;
* [[Panda_How_to_add_2_USBs|How to add two additional USB connections]] to the PandaBoard&lt;br /&gt;
* [[Panda_How_to_add_Power_Switch|How to add a power switch]] to the PandaBoard '''--&amp;gt;&amp;gt; WIP'''&lt;br /&gt;
* [[PandaBoard Power Measurements]]&lt;br /&gt;
&lt;br /&gt;
== Older How To's ==&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_buildroot|How to build a minimal file system using buildroot]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel|How to build a kernel using the buildroot toolchain from above]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel_new|How to build 2.6.38-rcx kernels]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/15/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_38|How to build 2.6.38 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/16/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39|How to build 2.6.39-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/12/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39rel|How to build 2.6.39 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rel|How to build 3.0 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/29/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rcx|How to build 3.0-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/11/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rcx|How to build 3.1-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/5/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rel|How to build 3.1 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/31/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rcx|How to build 3.2-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
&lt;br /&gt;
= Community =&lt;br /&gt;
 &lt;br /&gt;
Website: [http://pandaboard.org http://pandaboard.org]&lt;br /&gt;
&lt;br /&gt;
IRC: #pandaboard @irc.freenode.net&lt;br /&gt;
&lt;br /&gt;
Mailing List: [http://groups.google.com/group/pandaboard pandaboard@googlegroups.com]&lt;br /&gt;
&lt;br /&gt;
[[category:OMAP]]&lt;br /&gt;
[[category:omap4430]]&lt;br /&gt;
[[category:PandaBoard]]&lt;br /&gt;
[[category:Development Boards]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_kernel_3_4_rel</id>
		<title>Panda How to kernel 3 4 rel</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_kernel_3_4_rel"/>
				<updated>2012-06-03T19:34:31Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: Replaced content with &amp;quot;== Introduction ==
Kernel 3.4 has been released

You can download a tarball of the mainline kernel at http://kernel.org/

or you can clone a copy of mainline kernel with:

&amp;lt;p...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Kernel 3.4 has been released&lt;br /&gt;
&lt;br /&gt;
You can download a tarball of the mainline kernel at http://kernel.org/&lt;br /&gt;
&lt;br /&gt;
or you can clone a copy of mainline kernel with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
cd linux&lt;br /&gt;
git checkout v3.4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3.5-rc1 ==&lt;br /&gt;
&lt;br /&gt;
Kernel 3.5-rc1 has been released. Its functionality even at the -rc1 stage is as good or better than 3.4. &lt;br /&gt;
&lt;br /&gt;
Please refer to the 3.5-rcx series for more info.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PandaBoard]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/PandaBoard</id>
		<title>PandaBoard</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/PandaBoard"/>
				<updated>2012-06-03T19:28:41Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: /* How To's */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://www.pandaboard.org PandaBoard] is an [[OMAP4430]] ([[Cortex]]-A9) based low cost development platform.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
* OMAP4 (Cortex-A9) CPU based open development platform.&lt;br /&gt;
** OMAP4430 Application processor&lt;br /&gt;
** 1GB low-power DDR2&lt;br /&gt;
** Display HDMI v1.3 Connector (Type A) to drive HD displays, DVI-D Connector (can drive a 2nd display, simultaneous display; requires HDMI to DVI-D adapter), LCD expansion header&lt;br /&gt;
** 3.5&amp;quot; audio in/out and HDMI Audio out&lt;br /&gt;
** Full size SD/MMC card&lt;br /&gt;
** Built in 802.11 &amp;amp; Bluetooth v2.1+EDR&lt;br /&gt;
** Onboard 10/100 Ethernet&lt;br /&gt;
** Expansion: 1xUSB OTG, 2xUSB HS host ports, General purpose expansion header (I2C, GPMC, USB, MMC, DSS, ETM)&lt;br /&gt;
** JTAG, UART/RS-232, 2 status LEDs, 1GPIO button&lt;br /&gt;
&lt;br /&gt;
More details can be found [http://pandaboard.org/content/platform here]&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Front&lt;br /&gt;
[[File:PandaBoard_front.png|320px]]&lt;br /&gt;
&lt;br /&gt;
A hi resolution picture of the PandaBoard EA1 front is available here: http://elinux.org/images/d/d4/Panda_front.jpg&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Back&lt;br /&gt;
[[File:Panda_back.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
= Availability =&lt;br /&gt;
PandaBoard are in production and can be ordered from [http://pandaboard.org/content/buy Worldwide distributors]. You can also easily identify the board you have using [http://omappedia.org/wiki/PandaBoard_Revisions Board revision id]&lt;br /&gt;
&lt;br /&gt;
== Rev A3 ==&lt;br /&gt;
Latest version of the board.&lt;br /&gt;
&lt;br /&gt;
== Rev A1/A2  ==&lt;br /&gt;
[http://omappedia.org/wiki/PandaBoard_Revisions#Rev_A2 Details]&lt;br /&gt;
&lt;br /&gt;
== Rev EA1/EA2 ==&lt;br /&gt;
These were limited number of 'Early Adopter' boards that built prior to production versions. [http://omappedia.org/wiki/PandaBoard_Revisions#Rev_EA1 more details]&lt;br /&gt;
&lt;br /&gt;
== Rev ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoare-ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the MLO/u-boot/kernel be specifically crafted for the 4460. The thermal management is not in the mainline 4430 code as yet and could cause unwanted thermal problems. So BEWARE of running any code built for the non -ES PandaBoard on the -ES model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Accessories =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_Bamboo|Bamboo Board]]&lt;br /&gt;
* [[BeagleBoard_Trainer|Trainer Board]]&lt;br /&gt;
* [https://specialcomp.com/pandaboard/order.htm Acrylic case]&lt;br /&gt;
* [http://bb-lvds.blogspot.com 10&amp;quot; LCD LVDS plug-and-play bundle with capacitance touchscreen and ambient light sensor]&lt;br /&gt;
*[[File:Beadaframe.jpg|200px|thumb|BeadaFrame]][http://www.esky-sh.com/bbs/viewtopic.php?f=19&amp;amp;t=468 BeadaFrame] 7&amp;quot; LCD display kit&lt;br /&gt;
** 7&amp;quot; 800x480 TFT LCD screen&lt;br /&gt;
** PWM Backlight control&lt;br /&gt;
** Resistive touch panel&lt;br /&gt;
** RTC time keeper &lt;br /&gt;
** Plastic frame&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Recommended Reading Material =&lt;br /&gt;
&lt;br /&gt;
* [[Embedded_Linux_System_Design_and_Development]]&lt;br /&gt;
* [[Embedded_linux_primer]]&lt;br /&gt;
* [[Building_Embedded_Linux_Systems]]&lt;br /&gt;
* [[Essential_Linux_Device_Drivers]]&lt;br /&gt;
* [[Linux_Device_Drivers]]&lt;br /&gt;
&lt;br /&gt;
= How To's =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_MLO_&amp;amp;_u-boot|How to build MLO and u-boot]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/23/2011'''&lt;br /&gt;
* [[Panda_How_to_Barebox|How to build Barebox]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 11/12/2011'''&lt;br /&gt;
* [[PandaBoard_ES_uboot_howto|How to build u-boot and SPL]] for PandaBoard and PandaBoard ES '''--&amp;gt;&amp;gt; Updated 12/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rel|How to build 3.2 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_3_rcx|How to build 3.3-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_3_rel|How to build 3.3 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/19/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_4_rel|How to build 3.4 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; WIP'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_5_rcx|How to build 3.5-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; NEW 6/3/2012'''&lt;br /&gt;
* [[Panda_How_to_add_2_USBs|How to add two additional USB connections]] to the PandaBoard&lt;br /&gt;
* [[Panda_How_to_add_Power_Switch|How to add a power switch]] to the PandaBoard '''--&amp;gt;&amp;gt; WIP'''&lt;br /&gt;
* [[PandaBoard Power Measurements]]&lt;br /&gt;
&lt;br /&gt;
== Older How To's ==&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_buildroot|How to build a minimal file system using buildroot]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel|How to build a kernel using the buildroot toolchain from above]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel_new|How to build 2.6.38-rcx kernels]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/15/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_38|How to build 2.6.38 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/16/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39|How to build 2.6.39-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/12/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39rel|How to build 2.6.39 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rel|How to build 3.0 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/29/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rcx|How to build 3.0-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/11/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rcx|How to build 3.1-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/5/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rel|How to build 3.1 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/31/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rcx|How to build 3.2-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
&lt;br /&gt;
= Community =&lt;br /&gt;
 &lt;br /&gt;
Website: [http://pandaboard.org http://pandaboard.org]&lt;br /&gt;
&lt;br /&gt;
IRC: #pandaboard @irc.freenode.net&lt;br /&gt;
&lt;br /&gt;
Mailing List: [http://groups.google.com/group/pandaboard pandaboard@googlegroups.com]&lt;br /&gt;
&lt;br /&gt;
[[category:OMAP]]&lt;br /&gt;
[[category:omap4430]]&lt;br /&gt;
[[category:PandaBoard]]&lt;br /&gt;
[[category:Development Boards]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/PandaBoard</id>
		<title>PandaBoard</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/PandaBoard"/>
				<updated>2012-06-03T19:27:56Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://www.pandaboard.org PandaBoard] is an [[OMAP4430]] ([[Cortex]]-A9) based low cost development platform.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
* OMAP4 (Cortex-A9) CPU based open development platform.&lt;br /&gt;
** OMAP4430 Application processor&lt;br /&gt;
** 1GB low-power DDR2&lt;br /&gt;
** Display HDMI v1.3 Connector (Type A) to drive HD displays, DVI-D Connector (can drive a 2nd display, simultaneous display; requires HDMI to DVI-D adapter), LCD expansion header&lt;br /&gt;
** 3.5&amp;quot; audio in/out and HDMI Audio out&lt;br /&gt;
** Full size SD/MMC card&lt;br /&gt;
** Built in 802.11 &amp;amp; Bluetooth v2.1+EDR&lt;br /&gt;
** Onboard 10/100 Ethernet&lt;br /&gt;
** Expansion: 1xUSB OTG, 2xUSB HS host ports, General purpose expansion header (I2C, GPMC, USB, MMC, DSS, ETM)&lt;br /&gt;
** JTAG, UART/RS-232, 2 status LEDs, 1GPIO button&lt;br /&gt;
&lt;br /&gt;
More details can be found [http://pandaboard.org/content/platform here]&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Front&lt;br /&gt;
[[File:PandaBoard_front.png|320px]]&lt;br /&gt;
&lt;br /&gt;
A hi resolution picture of the PandaBoard EA1 front is available here: http://elinux.org/images/d/d4/Panda_front.jpg&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Back&lt;br /&gt;
[[File:Panda_back.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
= Availability =&lt;br /&gt;
PandaBoard are in production and can be ordered from [http://pandaboard.org/content/buy Worldwide distributors]. You can also easily identify the board you have using [http://omappedia.org/wiki/PandaBoard_Revisions Board revision id]&lt;br /&gt;
&lt;br /&gt;
== Rev A3 ==&lt;br /&gt;
Latest version of the board.&lt;br /&gt;
&lt;br /&gt;
== Rev A1/A2  ==&lt;br /&gt;
[http://omappedia.org/wiki/PandaBoard_Revisions#Rev_A2 Details]&lt;br /&gt;
&lt;br /&gt;
== Rev EA1/EA2 ==&lt;br /&gt;
These were limited number of 'Early Adopter' boards that built prior to production versions. [http://omappedia.org/wiki/PandaBoard_Revisions#Rev_EA1 more details]&lt;br /&gt;
&lt;br /&gt;
== Rev ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoare-ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the MLO/u-boot/kernel be specifically crafted for the 4460. The thermal management is not in the mainline 4430 code as yet and could cause unwanted thermal problems. So BEWARE of running any code built for the non -ES PandaBoard on the -ES model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Accessories =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_Bamboo|Bamboo Board]]&lt;br /&gt;
* [[BeagleBoard_Trainer|Trainer Board]]&lt;br /&gt;
* [https://specialcomp.com/pandaboard/order.htm Acrylic case]&lt;br /&gt;
* [http://bb-lvds.blogspot.com 10&amp;quot; LCD LVDS plug-and-play bundle with capacitance touchscreen and ambient light sensor]&lt;br /&gt;
*[[File:Beadaframe.jpg|200px|thumb|BeadaFrame]][http://www.esky-sh.com/bbs/viewtopic.php?f=19&amp;amp;t=468 BeadaFrame] 7&amp;quot; LCD display kit&lt;br /&gt;
** 7&amp;quot; 800x480 TFT LCD screen&lt;br /&gt;
** PWM Backlight control&lt;br /&gt;
** Resistive touch panel&lt;br /&gt;
** RTC time keeper &lt;br /&gt;
** Plastic frame&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Recommended Reading Material =&lt;br /&gt;
&lt;br /&gt;
* [[Embedded_Linux_System_Design_and_Development]]&lt;br /&gt;
* [[Embedded_linux_primer]]&lt;br /&gt;
* [[Building_Embedded_Linux_Systems]]&lt;br /&gt;
* [[Essential_Linux_Device_Drivers]]&lt;br /&gt;
* [[Linux_Device_Drivers]]&lt;br /&gt;
&lt;br /&gt;
= How To's =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_MLO_&amp;amp;_u-boot|How to build MLO and u-boot]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/23/2011'''&lt;br /&gt;
* [[Panda_How_to_Barebox|How to build Barebox]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 11/12/2011'''&lt;br /&gt;
* [[PandaBoard_ES_uboot_howto|How to build u-boot and SPL]] for PandaBoard and PandaBoard ES '''--&amp;gt;&amp;gt; Updated 12/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rel|How to build 3.2 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_3_rcx|How to build 3.3-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_3_rel|How to build 3.3 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/19/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_4_rel|How to build 3.4 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; WIP'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_5_rcx|How to build 3.5-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; NEW 6/3/1012'''&lt;br /&gt;
* [[Panda_How_to_add_2_USBs|How to add two additional USB connections]] to the PandaBoard&lt;br /&gt;
* [[Panda_How_to_add_Power_Switch|How to add a power switch]] to the PandaBoard '''--&amp;gt;&amp;gt; WIP'''&lt;br /&gt;
* [[PandaBoard Power Measurements]]&lt;br /&gt;
&lt;br /&gt;
== Older How To's ==&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_buildroot|How to build a minimal file system using buildroot]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel|How to build a kernel using the buildroot toolchain from above]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel_new|How to build 2.6.38-rcx kernels]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/15/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_38|How to build 2.6.38 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/16/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39|How to build 2.6.39-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/12/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39rel|How to build 2.6.39 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rel|How to build 3.0 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/29/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rcx|How to build 3.0-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/11/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rcx|How to build 3.1-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/5/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rel|How to build 3.1 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/31/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rcx|How to build 3.2-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
&lt;br /&gt;
= Community =&lt;br /&gt;
 &lt;br /&gt;
Website: [http://pandaboard.org http://pandaboard.org]&lt;br /&gt;
&lt;br /&gt;
IRC: #pandaboard @irc.freenode.net&lt;br /&gt;
&lt;br /&gt;
Mailing List: [http://groups.google.com/group/pandaboard pandaboard@googlegroups.com]&lt;br /&gt;
&lt;br /&gt;
[[category:OMAP]]&lt;br /&gt;
[[category:omap4430]]&lt;br /&gt;
[[category:PandaBoard]]&lt;br /&gt;
[[category:Development Boards]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_kernel_3_5_rcx</id>
		<title>Panda How to kernel 3 5 rcx</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_kernel_3_5_rcx"/>
				<updated>2012-06-03T19:26:51Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Kernel 3.5 merge widow has closed and 3.5-rc1 has been released.&lt;br /&gt;
&lt;br /&gt;
You can download a tarball of the mainline kernel at http://kernel.org/&lt;br /&gt;
&lt;br /&gt;
or you can clone a copy of mainline kernel with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
cd linux&lt;br /&gt;
git checkout v3.5-rcx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Important Note '''&lt;br /&gt;
There has been a lot of work done on the HDMI interface and its related driver omapdrm. Between kernel 3.1 and 3.2-rc1 enough changed so that the Testing section on the HDMI interface has been removed from this How-To. The HDMI testing section below will return when the code stabilises. &lt;br /&gt;
&lt;br /&gt;
=== rc1 ===&lt;br /&gt;
&lt;br /&gt;
Many changes in OMAP and Panda specific code since 3.4 was released. The HDMI, DVI interfaces both work and under certain circumstances and properly read the EDID info from the monitor. HDMI sound is now functional. Changes to the WLAN code continue, and WLAN does function as well under the proper circumstances.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The WL12xx driver on a PandaBoard still needs the same patch as used for 3.1 and 3.2. when the driver isn't happy, the error messages are somewhat less than useful, however the drivers/firmware are being constantly improved and it would not be a good idea to have the driver support anything but the latest firmware.&lt;br /&gt;
With the modules built in, operation is not consistent. The PandaBoard ES does not need the patch.&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoard ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the [[PandaBoard_ES_uboot_howto| MLO/u-boot be specifically crafted for the 4460]]. The thermal management is not in the mainline 4430 code as yet and therefore the max clock frequency when running the OMAP4460 on the PandaBoard ES with the mainline kernel is 920MHz(same as the OMAP4430).&lt;br /&gt;
&lt;br /&gt;
== wlan12xx ==&lt;br /&gt;
&lt;br /&gt;
== wlan12xx patch ==&lt;br /&gt;
This patch is still necessary to resolve the issue noted in 3.2 and earlier&lt;br /&gt;
&lt;br /&gt;
[[Media:0001a-omap4-pandaboard-wlan-fix.patch|0001a-omap4-pandaboard-wlan-fix.patch]]&lt;br /&gt;
&lt;br /&gt;
Apply it like so: (from inside the kernel sources directory)&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001a-omap4-pandaboard-wlan-fix.patch&lt;br /&gt;
&lt;br /&gt;
NOTE: it applies with offsets which is ok.&lt;br /&gt;
&lt;br /&gt;
The latest wlan firmware is available from git: git://git.kernel.org/?p=linux/kernel/git/firmware/linux-firmware.git just copy the contents of the ti-connectivity folder to /lib/firmware/ti-connectivity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The patch is no longer necessary for the PandaBoard ES but does not seem to hurt if applied. In addition, the race issue that required building as a module has returned. As part of the code cleanup, the wl12xx and wl12xx_sdio drivers no longer depend on each other. This creates an issue with systems that do not use udev or mdev (with a somewhat fiddly &amp;amp; slow script) to load MODALIAS drivers. The quick solution is to modprobe both, the order no longer matters. Just modprobing wl12xx_sdio will no longer automatically load wl12xx.&lt;br /&gt;
&lt;br /&gt;
In -rc1 there is an issue with wl12xx_sdio building as a module, so the recommended way (as implememted in the .config) is to build wl12xx as a single module which includes wl12xx, wl12xx_sdio and wl12xx_core. This can then be modprobed on either PandaBoard (with patch) or PandaBoard ES. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
Building 3.5-rc1 is fairly straight forward.&lt;br /&gt;
&lt;br /&gt;
Grab the 3.5-rc1 sources and use [[Media:config.3.5-rc1.1|config.3.5-rc1.1]] as the .config &lt;br /&gt;
&lt;br /&gt;
The 3.5-rc1 .config enables Sound builtin and wl12xx as a single module. The builtin sound works, as does HDMI sound.&lt;br /&gt;
&lt;br /&gt;
Then compile like so:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=Path_to_your/arm-2010q1/bin/arm-none-linux-gnueabi- uImage&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== i2cdetect ===&lt;br /&gt;
&lt;br /&gt;
You can run i2cdetect and the results should look like this:&lt;br /&gt;
&lt;br /&gt;
 # i2cdetect -y -r 1&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
 00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 40: -- -- -- -- -- -- -- -- UU UU UU UU -- -- -- -- &lt;br /&gt;
 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 70: -- -- -- -- -- -- -- --&lt;br /&gt;
&lt;br /&gt;
=== wlan ===&lt;br /&gt;
&lt;br /&gt;
Run the following commands after the PandaBoard is booted:&lt;br /&gt;
&lt;br /&gt;
 modprobe wl12xx    ** only if you built the wl12xx drivers a module as recommended&lt;br /&gt;
 ifconfig wlan0 up&lt;br /&gt;
 iwconfig wlan0 essid &amp;quot;Your AccessPoint Name&amp;quot;&lt;br /&gt;
 udhcpc -i wlan0&lt;br /&gt;
&lt;br /&gt;
If your network is set up to provide DHCP services, the PandaBoard will get all the &amp;quot;right stuff(tm)&amp;quot; and you will be able to access the Internet.&lt;br /&gt;
&lt;br /&gt;
 # ping www.google.com&lt;br /&gt;
 PING www.google.com (74.125.73.99): 56 data bytes&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=0 ttl=43 time=62.683 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=1 ttl=43 time=54.077 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=2 ttl=43 time=51.484 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=3 ttl=43 time=54.108 ms&lt;br /&gt;
&lt;br /&gt;
=== USB Performance ===&lt;br /&gt;
&lt;br /&gt;
Insert a USB memory stick into one of the usb ports&lt;br /&gt;
&lt;br /&gt;
Run dmesg to see what sdx the stick was recognised as, then:&lt;br /&gt;
&lt;br /&gt;
 hdparam -tT /dev/sdx&lt;br /&gt;
&lt;br /&gt;
If you run the same command on a desktop Linux system, with the same USB memory stick, the PandaBoard's speed should roughly be the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PandaBoard]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_kernel_3_5_rcx</id>
		<title>Panda How to kernel 3 5 rcx</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_kernel_3_5_rcx"/>
				<updated>2012-06-03T19:08:23Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Kernel 3.5 merge widow has closed and 3.5-rc1 has been released.&lt;br /&gt;
&lt;br /&gt;
You can download a tarball of the mainline kernel at http://kernel.org/&lt;br /&gt;
&lt;br /&gt;
or you can clone a copy of mainline kernel with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
cd linux&lt;br /&gt;
git checkout v3.5-rcx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Important Note '''&lt;br /&gt;
There has been a lot of work done on the HDMI interface and its related driver omapdrm. Between kernel 3.1 and 3.2-rc1 enough changed so that the Testing section on the HDMI interface has been removed from this How-To. The HDMI testing section below will return when the code stabilises. &lt;br /&gt;
&lt;br /&gt;
=== rc1 ===&lt;br /&gt;
&lt;br /&gt;
Many changes in OMAP and Panda specific code since 3.4 was released. The HDMI, DVI interfaces both work and under certain circumstances and properly read the EDID info from the monitor. HDMI sound is now functional. Changes to the WLAN code continue, and WLAN does function as well under the proper circumstances.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The WL12xx driver on a PandaBoard still needs the same patch as used for 3.1 and 3.2. when the driver isn't happy, the error messages are somewhat less than useful, however the drivers/firmware are being constantly improved and it would not be a good idea to have the driver support anything but the latest firmware.&lt;br /&gt;
With the modules built in, operation is not consistent. The PandaBoard ES does not need the patch.&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoard ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the [[PandaBoard_ES_uboot_howto| MLO/u-boot be specifically crafted for the 4460]]. The thermal management is not in the mainline 4430 code as yet and therefore the max clock frequency when running the OMAP4460 on the PandaBoard ES with the mainline kernel is 920MHz(same as the OMAP4430).&lt;br /&gt;
&lt;br /&gt;
== wlan12xx ==&lt;br /&gt;
&lt;br /&gt;
== wlan12xx patch ==&lt;br /&gt;
This patch is still necessary to resolve the issue noted in 3.2 and earlier&lt;br /&gt;
&lt;br /&gt;
[[Media:0001a-omap4-pandaboard-wlan-fix.patch|0001a-omap4-pandaboard-wlan-fix.patch]]&lt;br /&gt;
&lt;br /&gt;
Apply it like so: (from inside the kernel sources directory)&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001a-omap4-pandaboard-wlan-fix.patch&lt;br /&gt;
&lt;br /&gt;
The latest wlan firmware is available from git: git://git.kernel.org/?p=linux/kernel/git/firmware/linux-firmware.git just copy the contents of the ti-connectivity folder to /lib/firmware/ti-connectivity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The patch is no longer necessary for the PandaBoard ES but does not seem to hurt if applied. In addition, the race issue that required building as a module has returned. As part of the code cleanup, the wl12xx and wl12xx_sdio drivers no longer depend on each other. This creates an issue with systems that do not use udev or mdev (with as somewhat fiddly &amp;amp; slow script) to load MODALIAS drivers. The quick solution is to modprobe both, the order no longer matters. Just modprobing wl12xx_sdio will no longer automatically load wl12xx. It is suggested that these 2 drivers be built as modules. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
Building 3.5-rc1 is fairly straight forward.&lt;br /&gt;
&lt;br /&gt;
Grab the 3.5-rc1 sources and use [[Media:config.3.5-rc1.1|config.3.5-rc1.1]] as the .config &lt;br /&gt;
&lt;br /&gt;
The 3.5-rc1 .config enables Sound builtin and wl12xx as a single module. The builtin sound works, as does HDMI sound.&lt;br /&gt;
&lt;br /&gt;
Then compile like so:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=Path_to_your/arm-2010q1/bin/arm-none-linux-gnueabi- uImage&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== i2cdetect ===&lt;br /&gt;
&lt;br /&gt;
You can run i2cdetect and the results should look like this:&lt;br /&gt;
&lt;br /&gt;
 # i2cdetect -y -r 1&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
 00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 40: -- -- -- -- -- -- -- -- UU UU UU UU -- -- -- -- &lt;br /&gt;
 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 70: -- -- -- -- -- -- -- --&lt;br /&gt;
&lt;br /&gt;
=== wlan ===&lt;br /&gt;
&lt;br /&gt;
Run the following commands after the PandaBoard is booted:&lt;br /&gt;
&lt;br /&gt;
 modprobe wl12xx    ** only if you built the wl12xx drivers as modules&lt;br /&gt;
 ifconfig wlan0 up&lt;br /&gt;
 iwconfig wlan0 essid &amp;quot;Your AccessPoint Name&amp;quot;&lt;br /&gt;
 udhcpc -i wlan0&lt;br /&gt;
&lt;br /&gt;
If your network is set up to provide DHCP services, the PandaBoard will get all the &amp;quot;right stuff(tm)&amp;quot; and you will be able to access the Internet.&lt;br /&gt;
&lt;br /&gt;
 # ping www.google.com&lt;br /&gt;
 PING www.google.com (74.125.73.99): 56 data bytes&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=0 ttl=43 time=62.683 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=1 ttl=43 time=54.077 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=2 ttl=43 time=51.484 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=3 ttl=43 time=54.108 ms&lt;br /&gt;
&lt;br /&gt;
=== USB Performance ===&lt;br /&gt;
&lt;br /&gt;
Insert a USB memory stick into one of the usb ports&lt;br /&gt;
&lt;br /&gt;
Run dmesg to see what sdx the stick was recognised as, then:&lt;br /&gt;
&lt;br /&gt;
 hdparam -tT /dev/sdx&lt;br /&gt;
&lt;br /&gt;
If you run the same command on a desktop Linux system, with the same USB memory stick, the PandaBoard's speed should roughly be the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PandaBoard]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/File:Config.3.5-rc1.1</id>
		<title>File:Config.3.5-rc1.1</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/File:Config.3.5-rc1.1"/>
				<updated>2012-06-03T19:02:31Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: .config for 3.5-rc1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.config for 3.5-rc1&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_kernel_3_4_rel</id>
		<title>Panda How to kernel 3 4 rel</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_kernel_3_4_rel"/>
				<updated>2012-06-03T18:42:59Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: Created page with &amp;quot;== Introduction == Kernel 3.4 has been released  You can download a tarball of the mainline kernel at http://kernel.org/  or you can clone a copy of mainline kernel with:  &amp;lt;pre&amp;gt; ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Kernel 3.4 has been released&lt;br /&gt;
&lt;br /&gt;
You can download a tarball of the mainline kernel at http://kernel.org/&lt;br /&gt;
&lt;br /&gt;
or you can clone a copy of mainline kernel with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
cd linux&lt;br /&gt;
git checkout v3.4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Important Note '''&lt;br /&gt;
There has been a lot of work done on the HDMI interface and its related driver omapdrm. Between kernel 3.1 and 3.2-rc1 enough changed so that the Testing section on the HDMI interface is no longer correct. The hdmi init functions are no longer in arch/arm/mach_omap2/board-omap4panda.c. When this situation stabilises, the HDMI testing section below will be updated. &lt;br /&gt;
&lt;br /&gt;
The entire 3.4-rcx series was plagued with problems which were only resolved in the final days of the cycle, that's why there were no How-To's on building the intermediate -rcx series. Kernel 3.4 works, although there is considerable work going on in the HDMI/DVI/DSS area as well a sound and power management.&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoard ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the [[PandaBoard_ES_uboot_howto| MLO/u-boot be specifically crafted for the 4460]]. The thermal management is not in the mainline 4430 code as yet and therefore the max clock frequency when running the OMAP4460 on the PandaBoard ES with the mainline kernel is 920MHz(same as the OMAP4430).&lt;br /&gt;
&lt;br /&gt;
== wlan12xx ==&lt;br /&gt;
&lt;br /&gt;
== wlan12xx patch ==&lt;br /&gt;
This patch is still necessary to resolve the issue noted in 3.0, 3.1 and 3.2, the code was moved to twl_common.c.&lt;br /&gt;
&lt;br /&gt;
[[Media:0001a-omap4-pandaboard-wlan-fix.patch|0001a-omap4-pandaboard-wlan-fix.patch]]&lt;br /&gt;
&lt;br /&gt;
Apply it like so: (from inside the kernel sources directory)&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001a-omap4-pandaboard-wlan-fix.patch&lt;br /&gt;
&lt;br /&gt;
The latest wlan firmware is available from git: git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git just copy the contents of the ti-connectivity folder to /lib/firmware/ti-connectivity.&lt;br /&gt;
&lt;br /&gt;
The patch is no longer necessary for the PandaBoard ES but does not seem to hurt if applied. In addition, the race issue that required building as a module has returned. As part of the code cleanup, the wl12xx and wl12xx_sdio drivers no longer depend on each other. This creates an issue with systems that do not use udev or mdev (with as somewhat fiddly &amp;amp; slow script) to load MODALIAS drivers. The quick solution is to modprobe both, the order no longer matters. Just modprobing wl12xx_sdio will no longer automatically load wl12xx. It is suggested that these 2 drivers be built as modules. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
Building 3.3 is fairly straight forward.&lt;br /&gt;
&lt;br /&gt;
Grab the 3.3 sources and use [[Media:config.3.3.1|config.3.3.1]] as the .config &lt;br /&gt;
&lt;br /&gt;
The 3.3 .config enables Sound builtin and wl12xx as modules. The builtin sound does not presently work, but the enabled configuration allows USB sound devices, which function properly.&lt;br /&gt;
&lt;br /&gt;
Then compile like so:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=Path_to_your/arm-2010q1/bin/arm-none-linux-gnueabi- uImage&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== fbtest on DVI Port ===&lt;br /&gt;
&lt;br /&gt;
After booting run fbtest to see a nice test pattern from the dvi port.&lt;br /&gt;
&lt;br /&gt;
[[File:fbtest.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
=== Switching primary display to the HDMI port  --&amp;gt; Currently not functional &amp;lt;-- ===&lt;br /&gt;
Make sure that a monitor is plugged into the HDMI port before doing the following:&lt;br /&gt;
&lt;br /&gt;
 # Enable HDMI&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/display1/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Disable overlay0 (an overlay must be disabled before changing its properties)&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Set the manager of overlay0 to display1 which is HDMI&lt;br /&gt;
 echo &amp;quot;tv&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/manager&lt;br /&gt;
 &lt;br /&gt;
 # Enable overlay0&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
&lt;br /&gt;
And content on overlay 0 of primary lcd would be transferred to HDMI. It works similarly for all other overlay's.&lt;br /&gt;
&lt;br /&gt;
=== Switching primary display to the DVI port ===&lt;br /&gt;
&lt;br /&gt;
See: http://omappedia.org/wiki/Bootargs_for_enabling_display for lots of useful info on the display subsystem. Be aware that the display, manager and overlay numbers don't match the panda configuration.&lt;br /&gt;
&lt;br /&gt;
Make sure that a monitor is plugged into the DVI port before doing the following:&lt;br /&gt;
&lt;br /&gt;
 # Disable HDMI&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/display1/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Disable overlay0 (an overlay must be disabled before changing its properties)&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Set the manager of overlay0 to display0 which is DVI&lt;br /&gt;
 echo &amp;quot;lcd2&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/manager&lt;br /&gt;
 &lt;br /&gt;
 # Enable overlay0&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
&lt;br /&gt;
The above commands should be run from the serial console and the cable should be in the destination port before running the commands.&lt;br /&gt;
&lt;br /&gt;
=== fbtest on HDMI Port --&amp;gt; Currently not functional &amp;lt;-- ===&lt;br /&gt;
&lt;br /&gt;
Run fbtest to see a nice test pattern from the HDMI port.&lt;br /&gt;
&lt;br /&gt;
[[File:fbtest2.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
=== i2cdetect ===&lt;br /&gt;
&lt;br /&gt;
You can run i2cdetect and the results should look like this:&lt;br /&gt;
&lt;br /&gt;
 # i2cdetect -y -r 1&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
 00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 40: -- -- -- -- -- -- -- -- UU UU UU UU -- -- -- -- &lt;br /&gt;
 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 70: -- -- -- -- -- -- -- --&lt;br /&gt;
&lt;br /&gt;
=== wlan ===&lt;br /&gt;
&lt;br /&gt;
Run the following commands after the PandaBoard is booted:&lt;br /&gt;
&lt;br /&gt;
 modprobe wl12xx    ** only if you built the wl12xx drivers as modules&lt;br /&gt;
 modprobe wl12xx_sdio    ** only if you built the wl12xx drivers as module&lt;br /&gt;
 ifconfig wlan0 up&lt;br /&gt;
 iwconfig wlan0 essid &amp;quot;Your AccessPoint Name&amp;quot;&lt;br /&gt;
 udhcpc -i wlan0&lt;br /&gt;
&lt;br /&gt;
If your network is set up to provide DHCP services, the PandaBoard will get all the &amp;quot;right stuff(tm)&amp;quot; and you will be able to access the Internet.&lt;br /&gt;
&lt;br /&gt;
 # ping www.google.com&lt;br /&gt;
 PING www.google.com (74.125.73.99): 56 data bytes&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=0 ttl=43 time=62.683 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=1 ttl=43 time=54.077 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=2 ttl=43 time=51.484 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=3 ttl=43 time=54.108 ms&lt;br /&gt;
&lt;br /&gt;
=== USB Performance ===&lt;br /&gt;
&lt;br /&gt;
Insert a USB memory stick into one of the usb ports&lt;br /&gt;
&lt;br /&gt;
Run dmesg to see what sdx the stick was recognised as, then:&lt;br /&gt;
&lt;br /&gt;
 hdparam -tT /dev/sdx&lt;br /&gt;
&lt;br /&gt;
If you run the same command on a desktop Linux system, with the same USB memory stick, the PandaBoard's speed should roughly be the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PandaBoard]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_kernel_3_5_rcx</id>
		<title>Panda How to kernel 3 5 rcx</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_kernel_3_5_rcx"/>
				<updated>2012-06-03T18:42:45Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: Created page with &amp;quot;== Introduction == Kernel 3.5 merge widow has closed and 3.5-rc1 has been released.  You can download a tarball of the mainline kernel at http://kernel.org/  or you can clone a c...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Kernel 3.5 merge widow has closed and 3.5-rc1 has been released.&lt;br /&gt;
&lt;br /&gt;
You can download a tarball of the mainline kernel at http://kernel.org/&lt;br /&gt;
&lt;br /&gt;
or you can clone a copy of mainline kernel with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
cd linux&lt;br /&gt;
git checkout v3.5-rc1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Important Note '''&lt;br /&gt;
There has been a lot of work done on the HDMI interface and its related driver omapdrm. Between kernel 3.1 and 3.2-rc1 enough changed so that the Testing section on the HDMI interface is no longer correct. The hdmi init functions are no longer in arch/arm/mach_omap2/board-omap4panda.c. When this situation stabilises, the HDMI testing section below will be updated. &lt;br /&gt;
&lt;br /&gt;
=== rc1 ===&lt;br /&gt;
&lt;br /&gt;
''' The following seems to be only true for the PandaBoard ES. Tests with a PandaBoard EA3 confirm that the patch is still needed '''&lt;br /&gt;
&lt;br /&gt;
The WLAN no longer requires a patch! The WL12xx driver needs current firmware. When the driver isn't happy, the error messages are somewhat less than useful, however the drivers/firmware are being constantly improved and it would not be a good idea to have the driver support anything but the latest firmware. Still a work in progress.&lt;br /&gt;
&lt;br /&gt;
=== rc4 ===&lt;br /&gt;
&lt;br /&gt;
resolve nebulous 'Error setting wl12xx data' fix to PandaBoard. &amp;quot;This should be fixed properly for the next merge window so we don't&lt;br /&gt;
issue error messages merely because a driver is not configured.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Devicetree-enabled kernels crash during boot due to the UART driver (http://www.spinics.net/lists/linux-omap/msg64921.html). A patch has been proposed and was  merged into the release codebase.&lt;br /&gt;
&lt;br /&gt;
=== rc7 ===&lt;br /&gt;
&lt;br /&gt;
The WL12xx driver still needs the same patch as used for 3.1 and 3.2. when the driver isn't happy, the error messages are somewhat less than useful, however the drivers/firmware are being constantly improved and it would not be a good idea to have the driver support anything but the latest firmware.&lt;br /&gt;
The race issue that required building as a module has returned and with the modules built in, operation is not consistant.&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoard ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the [[PandaBoard_ES_uboot_howto| MLO/u-boot be specifically crafted for the 4460]]. The thermal management is not in the mainline 4430 code as yet and therefore the max clock frequency when running the OMAP4460 on the PandaBoard ES with the mainline kernel is 920MHz(same as the OMAP4430).&lt;br /&gt;
&lt;br /&gt;
== wlan12xx ==&lt;br /&gt;
&lt;br /&gt;
== wlan12xx patch ==&lt;br /&gt;
This patch is still necessary to resolve the issue noted in 3.0, 3.1 and 3.2, the code was moved to twl_common.c.&lt;br /&gt;
&lt;br /&gt;
[[Media:0001a-omap4-pandaboard-wlan-fix.patch|0001a-omap4-pandaboard-wlan-fix.patch]]&lt;br /&gt;
&lt;br /&gt;
Apply it like so: (from inside the kernel sources directory)&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001a-omap4-pandaboard-wlan-fix.patch&lt;br /&gt;
&lt;br /&gt;
The latest wlan firmware is available from git: git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git just copy the contents of the ti-connectivity folder to /lib/firmware/ti-connectivity.&lt;br /&gt;
&lt;br /&gt;
The patch is no longer necessary for the PandaBoard ES but does not seem to hurt if applied. In addition, the race issue that required building as a module has returned. As part of the code cleanup, the wl12xx and wl12xx_sdio drivers no longer depend on each other. This creates an issue with systems that do not use udev or mdev (with as somewhat fiddly &amp;amp; slow script) to load MODALIAS drivers. The quick solution is to modprobe both, the order no longer matters. Just modprobing wl12xx_sdio will no longer automatically load wl12xx. It is suggested that these 2 drivers be built as modules. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
Building 3.3 is fairly straight forward.&lt;br /&gt;
&lt;br /&gt;
Grab the 3.3 sources and use [[Media:config.3.3.1|config.3.3.1]] as the .config &lt;br /&gt;
&lt;br /&gt;
The 3.3 .config enables Sound builtin and wl12xx as modules. The builtin sound does not presently work, but the enabled configuration allows USB sound devices, which function properly.&lt;br /&gt;
&lt;br /&gt;
Then compile like so:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=Path_to_your/arm-2010q1/bin/arm-none-linux-gnueabi- uImage&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== fbtest on DVI Port ===&lt;br /&gt;
&lt;br /&gt;
After booting run fbtest to see a nice test pattern from the dvi port.&lt;br /&gt;
&lt;br /&gt;
[[File:fbtest.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
=== Switching primary display to the HDMI port  --&amp;gt; Currently not functional &amp;lt;-- ===&lt;br /&gt;
Make sure that a monitor is plugged into the HDMI port before doing the following:&lt;br /&gt;
&lt;br /&gt;
 # Enable HDMI&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/display1/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Disable overlay0 (an overlay must be disabled before changing its properties)&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Set the manager of overlay0 to display1 which is HDMI&lt;br /&gt;
 echo &amp;quot;tv&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/manager&lt;br /&gt;
 &lt;br /&gt;
 # Enable overlay0&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
&lt;br /&gt;
And content on overlay 0 of primary lcd would be transferred to HDMI. It works similarly for all other overlay's.&lt;br /&gt;
&lt;br /&gt;
=== Switching primary display to the DVI port ===&lt;br /&gt;
&lt;br /&gt;
See: http://omappedia.org/wiki/Bootargs_for_enabling_display for lots of useful info on the display subsystem. Be aware that the display, manager and overlay numbers don't match the panda configuration.&lt;br /&gt;
&lt;br /&gt;
Make sure that a monitor is plugged into the DVI port before doing the following:&lt;br /&gt;
&lt;br /&gt;
 # Disable HDMI&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/display1/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Disable overlay0 (an overlay must be disabled before changing its properties)&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Set the manager of overlay0 to display0 which is DVI&lt;br /&gt;
 echo &amp;quot;lcd2&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/manager&lt;br /&gt;
 &lt;br /&gt;
 # Enable overlay0&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
&lt;br /&gt;
The above commands should be run from the serial console and the cable should be in the destination port before running the commands.&lt;br /&gt;
&lt;br /&gt;
=== fbtest on HDMI Port --&amp;gt; Currently not functional &amp;lt;-- ===&lt;br /&gt;
&lt;br /&gt;
Run fbtest to see a nice test pattern from the HDMI port.&lt;br /&gt;
&lt;br /&gt;
[[File:fbtest2.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
=== i2cdetect ===&lt;br /&gt;
&lt;br /&gt;
You can run i2cdetect and the results should look like this:&lt;br /&gt;
&lt;br /&gt;
 # i2cdetect -y -r 1&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
 00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 40: -- -- -- -- -- -- -- -- UU UU UU UU -- -- -- -- &lt;br /&gt;
 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 70: -- -- -- -- -- -- -- --&lt;br /&gt;
&lt;br /&gt;
=== wlan ===&lt;br /&gt;
&lt;br /&gt;
Run the following commands after the PandaBoard is booted:&lt;br /&gt;
&lt;br /&gt;
 modprobe wl12xx    ** only if you built the wl12xx drivers as modules&lt;br /&gt;
 modprobe wl12xx_sdio    ** only if you built the wl12xx drivers as module&lt;br /&gt;
 ifconfig wlan0 up&lt;br /&gt;
 iwconfig wlan0 essid &amp;quot;Your AccessPoint Name&amp;quot;&lt;br /&gt;
 udhcpc -i wlan0&lt;br /&gt;
&lt;br /&gt;
If your network is set up to provide DHCP services, the PandaBoard will get all the &amp;quot;right stuff(tm)&amp;quot; and you will be able to access the Internet.&lt;br /&gt;
&lt;br /&gt;
 # ping www.google.com&lt;br /&gt;
 PING www.google.com (74.125.73.99): 56 data bytes&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=0 ttl=43 time=62.683 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=1 ttl=43 time=54.077 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=2 ttl=43 time=51.484 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=3 ttl=43 time=54.108 ms&lt;br /&gt;
&lt;br /&gt;
=== USB Performance ===&lt;br /&gt;
&lt;br /&gt;
Insert a USB memory stick into one of the usb ports&lt;br /&gt;
&lt;br /&gt;
Run dmesg to see what sdx the stick was recognised as, then:&lt;br /&gt;
&lt;br /&gt;
 hdparam -tT /dev/sdx&lt;br /&gt;
&lt;br /&gt;
If you run the same command on a desktop Linux system, with the same USB memory stick, the PandaBoard's speed should roughly be the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PandaBoard]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/PandaBoard</id>
		<title>PandaBoard</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/PandaBoard"/>
				<updated>2012-06-03T18:39:57Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://www.pandaboard.org PandaBoard] is an [[OMAP4430]] ([[Cortex]]-A9) based low cost development platform.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
* OMAP4 (Cortex-A9) CPU based open development platform.&lt;br /&gt;
** OMAP4430 Application processor&lt;br /&gt;
** 1GB low-power DDR2&lt;br /&gt;
** Display HDMI v1.3 Connector (Type A) to drive HD displays, DVI-D Connector (can drive a 2nd display, simultaneous display; requires HDMI to DVI-D adapter), LCD expansion header&lt;br /&gt;
** 3.5&amp;quot; audio in/out and HDMI Audio out&lt;br /&gt;
** Full size SD/MMC card&lt;br /&gt;
** Built in 802.11 &amp;amp; Bluetooth v2.1+EDR&lt;br /&gt;
** Onboard 10/100 Ethernet&lt;br /&gt;
** Expansion: 1xUSB OTG, 2xUSB HS host ports, General purpose expansion header (I2C, GPMC, USB, MMC, DSS, ETM)&lt;br /&gt;
** JTAG, UART/RS-232, 2 status LEDs, 1GPIO button&lt;br /&gt;
&lt;br /&gt;
More details can be found [http://pandaboard.org/content/platform here]&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Front&lt;br /&gt;
[[File:PandaBoard_front.png|320px]]&lt;br /&gt;
&lt;br /&gt;
A hi resolution picture of the PandaBoard EA1 front is available here: http://elinux.org/images/d/d4/Panda_front.jpg&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Back&lt;br /&gt;
[[File:Panda_back.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
= Availability =&lt;br /&gt;
PandaBoard are in production and can be ordered from [http://pandaboard.org/content/buy Worldwide distributors]. You can also easily identify the board you have using [http://omappedia.org/wiki/PandaBoard_Revisions Board revision id]&lt;br /&gt;
&lt;br /&gt;
== Rev A3 ==&lt;br /&gt;
Latest version of the board.&lt;br /&gt;
&lt;br /&gt;
== Rev A1/A2  ==&lt;br /&gt;
[http://omappedia.org/wiki/PandaBoard_Revisions#Rev_A2 Details]&lt;br /&gt;
&lt;br /&gt;
== Rev EA1/EA2 ==&lt;br /&gt;
These were limited number of 'Early Adopter' boards that built prior to production versions. [http://omappedia.org/wiki/PandaBoard_Revisions#Rev_EA1 more details]&lt;br /&gt;
&lt;br /&gt;
== Rev ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoare-ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the MLO/u-boot/kernel be specifically crafted for the 4460. The thermal management is not in the mainline 4430 code as yet and could cause unwanted thermal problems. So BEWARE of running any code built for the non -ES PandaBoard on the -ES model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Accessories =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_Bamboo|Bamboo Board]]&lt;br /&gt;
* [[BeagleBoard_Trainer|Trainer Board]]&lt;br /&gt;
* [https://specialcomp.com/pandaboard/order.htm Acrylic case]&lt;br /&gt;
* [http://bb-lvds.blogspot.com 10&amp;quot; LCD LVDS plug-and-play bundle with capacitance touchscreen and ambient light sensor]&lt;br /&gt;
*[[File:Beadaframe.jpg|200px|thumb|BeadaFrame]][http://www.esky-sh.com/bbs/viewtopic.php?f=19&amp;amp;t=468 BeadaFrame] 7&amp;quot; LCD display kit&lt;br /&gt;
** 7&amp;quot; 800x480 TFT LCD screen&lt;br /&gt;
** PWM Backlight control&lt;br /&gt;
** Resistive touch panel&lt;br /&gt;
** RTC time keeper &lt;br /&gt;
** Plastic frame&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Recommended Reading Material =&lt;br /&gt;
&lt;br /&gt;
* [[Embedded_Linux_System_Design_and_Development]]&lt;br /&gt;
* [[Embedded_linux_primer]]&lt;br /&gt;
* [[Building_Embedded_Linux_Systems]]&lt;br /&gt;
* [[Essential_Linux_Device_Drivers]]&lt;br /&gt;
* [[Linux_Device_Drivers]]&lt;br /&gt;
&lt;br /&gt;
= How To's =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_MLO_&amp;amp;_u-boot|How to build MLO and u-boot]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/23/2011'''&lt;br /&gt;
* [[Panda_How_to_Barebox|How to build Barebox]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 11/12/2011'''&lt;br /&gt;
* [[PandaBoard_ES_uboot_howto|How to build u-boot and SPL]] for PandaBoard and PandaBoard ES '''--&amp;gt;&amp;gt; Updated 12/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rel|How to build 3.2 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_3_rcx|How to build 3.3-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_3_rel|How to build 3.3 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/19/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_4_rel|How to build 3.4 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; WIP'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_5_rcx|How to build 3.5-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; WIP'''&lt;br /&gt;
* [[Panda_How_to_add_2_USBs|How to add two additional USB connections]] to the PandaBoard&lt;br /&gt;
* [[Panda_How_to_add_Power_Switch|How to add a power switch]] to the PandaBoard '''--&amp;gt;&amp;gt; WIP'''&lt;br /&gt;
* [[PandaBoard Power Measurements]]&lt;br /&gt;
&lt;br /&gt;
== Older How To's ==&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_buildroot|How to build a minimal file system using buildroot]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel|How to build a kernel using the buildroot toolchain from above]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel_new|How to build 2.6.38-rcx kernels]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/15/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_38|How to build 2.6.38 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/16/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39|How to build 2.6.39-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/12/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39rel|How to build 2.6.39 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rel|How to build 3.0 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/29/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rcx|How to build 3.0-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/11/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rcx|How to build 3.1-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/5/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rel|How to build 3.1 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/31/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rcx|How to build 3.2-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
&lt;br /&gt;
= Community =&lt;br /&gt;
 &lt;br /&gt;
Website: [http://pandaboard.org http://pandaboard.org]&lt;br /&gt;
&lt;br /&gt;
IRC: #pandaboard @irc.freenode.net&lt;br /&gt;
&lt;br /&gt;
Mailing List: [http://groups.google.com/group/pandaboard pandaboard@googlegroups.com]&lt;br /&gt;
&lt;br /&gt;
[[category:OMAP]]&lt;br /&gt;
[[category:omap4430]]&lt;br /&gt;
[[category:PandaBoard]]&lt;br /&gt;
[[category:Development Boards]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_kernel_3_1_rcx</id>
		<title>Panda How to kernel 3 1 rcx</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_kernel_3_1_rcx"/>
				<updated>2012-03-31T17:14:11Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Continuing Happy 20th Birthday Greetings to Linux!!&lt;br /&gt;
The merge window for 3.1 is over and the 3.1-rc1 kernel has been released.&lt;br /&gt;
Lots of work on the omap platforms and on pandaboard. Let's see&lt;br /&gt;
what -rc1 has brought.&lt;br /&gt;
&lt;br /&gt;
== rc1 ==&lt;br /&gt;
&lt;br /&gt;
There is still an issue with the setting up of the wl12xx:&lt;br /&gt;
&lt;br /&gt;
 [    0.181457] error setting wl12xx data&lt;br /&gt;
&lt;br /&gt;
The extremely simple workaround available for 3.0, moved to twl_common.c in -rc1, doesn't produce the working wlan as in 3.0.&lt;br /&gt;
But applying that to the -rc2 code does result in a functional wl12xx driver.&lt;br /&gt;
&lt;br /&gt;
More to come as these issue are investigated.&lt;br /&gt;
&lt;br /&gt;
== rc2 ==&lt;br /&gt;
Yep, -rc2 is out and I haven't had the time to fiddle much with it as yet, on to -rc3. &lt;br /&gt;
In short, -rc2 fixes some of the wl12xx issues, but still requires a patch to function.&lt;br /&gt;
There is still an unresolved start up issue with wl12xx, in that sometimes it will work, sometimes, not. Same kernel, MLO, &amp;amp; u-boot and userspace.&lt;br /&gt;
&lt;br /&gt;
== rc3 ==&lt;br /&gt;
-rc3 is out and there are no OMAP or Panda changes. However there is a boot issue with Panda&lt;br /&gt;
as described here: https://lkml.org/lkml/2011/8/25/117&lt;br /&gt;
&lt;br /&gt;
This issue has been resolved, so be sure to get this commit or later from git:&lt;br /&gt;
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=69dd3d8e29e294caaf63eb5e8a72d250279f9e5f&lt;br /&gt;
&lt;br /&gt;
== rc4 ==&lt;br /&gt;
-rc4 has been released and yet again there are no OMAP or Panda changes. The issue introduced in -rc3 noted above, has been resolved.&lt;br /&gt;
&lt;br /&gt;
If you build the wl12xx driver as a module, and modprobe it, the wlan seems to start up fine every time, must be some sort of race when it is compiled into the kernel.&lt;br /&gt;
&lt;br /&gt;
== rc5 ==&lt;br /&gt;
-rc5 has been released, and kernel.org is still sort of sick. Not to worry, Linus has a github repository that you can pull from (if you dare ;&amp;gt;),&lt;br /&gt;
see https://lkml.org/lkml/2011/9/4/92 for details. From the changelog, it doesn't look like any omap4 or PandaBoard related changes, so we'll wait a bit to see if kernel.org recovers after the holiday.&lt;br /&gt;
&lt;br /&gt;
== rc6 ==&lt;br /&gt;
-rc6 has been released, and kernel.org is still down. I cloned Linus's github repo so as not to disturb my kernel.org repo (yes I know I could have pulled from the github repo, and with a few other magic git incantations resulted in the same thing...maybe...). There have been some OMAP4 related changes, but applying the same patches as -rc4, a working kernel as described below is the result.&lt;br /&gt;
&lt;br /&gt;
== rc7 ==&lt;br /&gt;
-rc7 has been released and Linus says that 3.1 won't happen till kernel.org is back, so we may have a few more -rcx's ahead of us.&lt;br /&gt;
No OMAP or Panda related changes in -rc7, the same patches that worked for -rc4 still work (some with a bit of an offset).&lt;br /&gt;
&lt;br /&gt;
== git.kerenl.org ==&lt;br /&gt;
It's back, mostly, as of 10/3/2011. Stay tuned.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== rc8 ==&lt;br /&gt;
Skipped&lt;br /&gt;
&lt;br /&gt;
== rc9 ==&lt;br /&gt;
With git.kerne.org back, Linus has resumed the 3.1-rcx series on http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git&lt;br /&gt;
&lt;br /&gt;
3.1 should be released soon, -rc9 is out which should be pretty close. The same patches that worked for -rc4 still work (some with a bit of an offset).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== USB Performance improvement ==&lt;br /&gt;
This patch fixs one performance bug on ARM Cortex A9 dual core&lt;br /&gt;
platform, which has been reported on quite a few ARM machines&lt;br /&gt;
(OMAP4, Tegra 2, snowball...), see details from link of&lt;br /&gt;
https://bugs.launchpad.net/bugs/709245. &lt;br /&gt;
&lt;br /&gt;
[[Media:0006-omap4-usb-improvement.patch|0006-omap4-usb-improvement.patch]]&lt;br /&gt;
&lt;br /&gt;
Apply it like so: (from inside the kernel sources directory)&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0006-omap4-usb-improvement.patch&lt;br /&gt;
&lt;br /&gt;
== wlan12xx patch ==&lt;br /&gt;
This patch is necessary to resolve the issue noted in 3.0 and 3.1-rc1 above, however the code has moved to twl_common.c and so an new patch is presented here.&lt;br /&gt;
&lt;br /&gt;
[[Media:0001a-omap4-pandaboard-wlan-fix.patch|0001a-omap4-pandaboard-wlan-fix.patch]]&lt;br /&gt;
&lt;br /&gt;
Apply it like so: (from inside the kernel sources directory)&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001a-omap4-pandaboard-wlan-fix.patch&lt;br /&gt;
&lt;br /&gt;
== DVI Patch ==&lt;br /&gt;
This patch is necessary to make 720p resolution available.&lt;br /&gt;
&lt;br /&gt;
[[Media:0003-omap4-pandaboard-dvi720p.patch|0003-omap4-pandaboard-dvi720p.patch]]&lt;br /&gt;
&lt;br /&gt;
Apply it like so: (from inside the kernel sources directory)&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0003-omap4-pandaboard-dvi720p.patch&lt;br /&gt;
&lt;br /&gt;
Then use either of the following configs&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm omap2plus_defconfig&lt;br /&gt;
         or&lt;br /&gt;
 make ARCH=arm panda_dvi_defconfig&lt;br /&gt;
&lt;br /&gt;
Compile as above.&lt;br /&gt;
&lt;br /&gt;
== I2C Patch ==&lt;br /&gt;
i2c character device driver&lt;br /&gt;
&lt;br /&gt;
 Ever since 2.6.38, the i2c character device driver support from user space has been broken for OMAP44xx.&lt;br /&gt;
 * A fix has been submitted for the linux-omap-2.6 branch, but it may be a while till it gets into an -rcx.&lt;br /&gt;
 See http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=commit;h=39fe1a6fafe1e85c183379af9f3ceda7cd24bd65 for the commit.&lt;br /&gt;
 * A quick fix for this issue is available [[Media:omap44xx-i2c-fix.patch|omap44xx-i2c-fix.patch]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Apply it like so: (from inside the kernel sources directory)&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; Omap44xx-i2c-fix.patch&lt;br /&gt;
&lt;br /&gt;
Compile as above.&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
Building 3.1-rc1 or -rc2 is basically the same as [[Panda_How_to_kernel_2_6_38|How to build 2.6.38 kernel]], but of course you need the 3.1-rc1/rc2 sources. The omap2plus_defconfig works and illustrates the wl12xx issue, with or without a patch to twl_common.c.  [[Media:config.3.1-rc1.1|config.3.1-rc1.1]] works with the dvi patch and i2c patch.&lt;br /&gt;
&lt;br /&gt;
Building 3.1-rc4 -rc6/7 or -rc9 is a bit different if you want to have a working wlan.&lt;br /&gt;
&lt;br /&gt;
In order to ensure that the wlan starts up consistently, it is recommended that the wl12xx driver be built as a module and started after the PandaBoard has booted.&lt;br /&gt;
&lt;br /&gt;
Grab the 3.1-rc4 or -rc6/7/9 sources and use [[Media:config.3.1-rc4.1|config.3.1-rc4.1]], [[Media:config.3.1-rc6.1|config.3.1-rc6.1]], [[Media:config.3.1-rc7.1|config.3.1-rc7.1]] or [[Media:config.3.1-rc9.1|config.3.1-rc9.1]]as the .config (this requires you patch the dvi &amp;amp; i2c as above)&lt;br /&gt;
&lt;br /&gt;
Then compile like so:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=Path_to_your/arm-2010q1/bin/arm-none-linux-gnueabi- uImage&lt;br /&gt;
&lt;br /&gt;
Then compile the modules like so:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=/home/kenm/Panda/arm-2010q1/bin/arm-none-linux-gnueabi- modules&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Install&amp;quot; the modules to somewhere convenient:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=/home/kenm/Panda/arm-2010q1/bin/arm-none-linux-gnueabi- INSTALL_MOD_PATH=../testlib_omap modules_install &lt;br /&gt;
&lt;br /&gt;
Copy lib/modules/3.1.0-rc4-dirty/, lib/modules/3.1.0-rc6-dirty/, lib/modules/3.1.0-rc7-dirty/ or lib/modules/3.1.0-rc9-dirty/ to your SD card (as root), boot up the Pandaboard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== fbtest on DVI Port ===&lt;br /&gt;
&lt;br /&gt;
After booting run fbtest to see a nice test pattern from the dvi port.&lt;br /&gt;
&lt;br /&gt;
[[File:fbtest.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
=== Switching primary display to the HDMI port ===&lt;br /&gt;
Make sure that a monitor is plugged into the HDMI port before doing the following:&lt;br /&gt;
&lt;br /&gt;
 # Enable HDMI&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/display1/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Disable overlay0 (an overlay must be disabled before changing its properties)&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Set the manager of overlay0 to display1 which is HDMI&lt;br /&gt;
 echo &amp;quot;tv&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/manager&lt;br /&gt;
 &lt;br /&gt;
 # Enable overlay0&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
&lt;br /&gt;
And content on overlay 0 of primary lcd would be transferred to HDMI. It works similarly for all other overlay's.&lt;br /&gt;
&lt;br /&gt;
=== Switching primary display to the DVI port ===&lt;br /&gt;
&lt;br /&gt;
See: http://omappedia.org/wiki/Bootargs_for_enabling_display for lots of useful info on the display subsystem. Be aware that the display, manager and overlay numbers don't match the panda configuration.&lt;br /&gt;
&lt;br /&gt;
Make sure that a monitor is plugged into the DVI port before doing the following:&lt;br /&gt;
&lt;br /&gt;
 # Disable HDMI&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/display1/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Disable overlay0 (an overlay must be disabled before changing its properties)&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Set the manager of overlay0 to display0 which is DVI&lt;br /&gt;
 echo &amp;quot;lcd2&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/manager&lt;br /&gt;
 &lt;br /&gt;
 # Enable overlay0&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
&lt;br /&gt;
The above commands should be run from the serial console and the cable should be in the destination port before running the commands.&lt;br /&gt;
&lt;br /&gt;
=== fbtest on HDMI Port ===&lt;br /&gt;
&lt;br /&gt;
Run fbtest to see a nice test pattern from the HDMI port.&lt;br /&gt;
&lt;br /&gt;
[[File:fbtest2.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
=== i2cdetect ===&lt;br /&gt;
&lt;br /&gt;
You can run i2cdetect and the results should look like this:&lt;br /&gt;
&lt;br /&gt;
 # i2cdetect -y -r 1&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
 00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 40: -- -- -- -- -- -- -- -- UU UU UU UU -- -- -- -- &lt;br /&gt;
 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 70: -- -- -- -- -- -- -- --&lt;br /&gt;
&lt;br /&gt;
=== wlan ===&lt;br /&gt;
&lt;br /&gt;
Run the following commands after the PandaBoard is booted:&lt;br /&gt;
&lt;br /&gt;
 modprobe wl12xx_sdio&lt;br /&gt;
 ifconfig wlan0 up&lt;br /&gt;
 iwconfig wlan0 essid &amp;quot;Your AccessPoint Name&amp;quot;&lt;br /&gt;
 udhcpc -i wlan0&lt;br /&gt;
&lt;br /&gt;
If your network is set up to provide DHCP services, the PandaBoard will get all the &amp;quot;right stuff(tm)&amp;quot; and you will be able to access the Internet.&lt;br /&gt;
&lt;br /&gt;
 # ping www.google.com&lt;br /&gt;
 PING www.google.com (74.125.73.99): 56 data bytes&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=0 ttl=43 time=62.683 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=1 ttl=43 time=54.077 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=2 ttl=43 time=51.484 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=3 ttl=43 time=54.108 ms&lt;br /&gt;
&lt;br /&gt;
=== USB Performance ===&lt;br /&gt;
&lt;br /&gt;
Insert a USB memory stick into one of the usb ports&lt;br /&gt;
&lt;br /&gt;
Run dmesg to see what sdx the stick was recognised as, then:&lt;br /&gt;
&lt;br /&gt;
 hdparam -tT /dev/sdx&lt;br /&gt;
&lt;br /&gt;
If you did this on a kernel without the patch you will see some improvement, if you run the same command on a desktop Linux system, with the same USB memory stick, the PandaBoard's speed should roughly be the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PandaBoard]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_kernel_3_3_rel</id>
		<title>Panda How to kernel 3 3 rel</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_kernel_3_3_rel"/>
				<updated>2012-03-19T23:18:17Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Kernel 3.3 has been released&lt;br /&gt;
&lt;br /&gt;
You can download a tarball of the mainline kernel at http://kernel.org/&lt;br /&gt;
&lt;br /&gt;
or you can clone a copy of mainline kernel with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
cd linux&lt;br /&gt;
git checkout v3.3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Important Note '''&lt;br /&gt;
There has been a lot of work done on the HDMI interface and its related driver omapdrm. Between kernel 3.1 and 3.2-rc1 enough changed so that the Testing section on the HDMI interface is no longer correct. The hdmi init functions are no longer in arch/arm/mach_omap2/board-omap4panda.c. When this situation stabilises, the HDMI testing section below will be updated. &lt;br /&gt;
&lt;br /&gt;
== Highlites of the -rc series ==&lt;br /&gt;
&lt;br /&gt;
=== rc1 ===&lt;br /&gt;
&lt;br /&gt;
''' The following seems to be only true for the PandaBoard ES. Tests with a PandaBoard EA3 confirm that the patch is still needed '''&lt;br /&gt;
&lt;br /&gt;
The WLAN no longer requires a patch! The WL12xx driver needs current firmware. When the driver isn't happy, the error messages are somewhat less than useful, however the drivers/firmware are being constantly improved and it would not be a good idea to have the driver support anything but the latest firmware. Still a work in progress.&lt;br /&gt;
&lt;br /&gt;
=== rc4 ===&lt;br /&gt;
&lt;br /&gt;
resolve nebulous 'Error setting wl12xx data' fix to PandaBoard. &amp;quot;This should be fixed properly for the next merge window so we don't&lt;br /&gt;
issue error messages merely because a driver is not configured.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Devicetree-enabled kernels crash during boot due to the UART driver (http://www.spinics.net/lists/linux-omap/msg64921.html). A patch has been proposed and was  merged into the release codebase.&lt;br /&gt;
&lt;br /&gt;
=== rc7 ===&lt;br /&gt;
&lt;br /&gt;
The WL12xx driver still needs the same patch as used for 3.1 and 3.2. when the driver isn't happy, the error messages are somewhat less than useful, however the drivers/firmware are being constantly improved and it would not be a good idea to have the driver support anything but the latest firmware.&lt;br /&gt;
The race issue that required building as a module has returned and with the modules built in, operation is not consistant.&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoard ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the [[PandaBoard_ES_uboot_howto| MLO/u-boot be specifically crafted for the 4460]]. The thermal management is not in the mainline 4430 code as yet and therefore the max clock frequency when running the OMAP4460 on the PandaBoard ES with the mainline kernel is 920MHz(same as the OMAP4430).&lt;br /&gt;
&lt;br /&gt;
== wlan12xx ==&lt;br /&gt;
&lt;br /&gt;
== wlan12xx patch ==&lt;br /&gt;
This patch is still necessary to resolve the issue noted in 3.0, 3.1 and 3.2, the code was moved to twl_common.c.&lt;br /&gt;
&lt;br /&gt;
[[Media:0001a-omap4-pandaboard-wlan-fix.patch|0001a-omap4-pandaboard-wlan-fix.patch]]&lt;br /&gt;
&lt;br /&gt;
Apply it like so: (from inside the kernel sources directory)&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001a-omap4-pandaboard-wlan-fix.patch&lt;br /&gt;
&lt;br /&gt;
The latest wlan firmware is available from git: git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git just copy the contents of the ti-connectivity folder to /lib/firmware/ti-connectivity.&lt;br /&gt;
&lt;br /&gt;
The patch is no longer necessary for the PandaBoard ES but does not seem to hurt if applied. In addition, the race issue that required building as a module has returned. As part of the code cleanup, the wl12xx and wl12xx_sdio drivers no longer depend on each other. This creates an issue with systems that do not use udev or mdev (with as somewhat fiddly &amp;amp; slow script) to load MODALIAS drivers. The quick solution is to modprobe both, the order no longer matters. Just modprobing wl12xx_sdio will no longer automatically load wl12xx. It is suggested that these 2 drivers be built as modules. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
Building 3.3 is fairly straight forward.&lt;br /&gt;
&lt;br /&gt;
Grab the 3.3 sources and use [[Media:config.3.3.1|config.3.3.1]] as the .config &lt;br /&gt;
&lt;br /&gt;
The 3.3 .config enables Sound builtin and wl12xx as modules. The builtin sound does not presently work, but the enabled configuration allows USB sound devices, which function properly.&lt;br /&gt;
&lt;br /&gt;
Then compile like so:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=Path_to_your/arm-2010q1/bin/arm-none-linux-gnueabi- uImage&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== fbtest on DVI Port ===&lt;br /&gt;
&lt;br /&gt;
After booting run fbtest to see a nice test pattern from the dvi port.&lt;br /&gt;
&lt;br /&gt;
[[File:fbtest.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
=== Switching primary display to the HDMI port  --&amp;gt; Currently not functional &amp;lt;-- ===&lt;br /&gt;
Make sure that a monitor is plugged into the HDMI port before doing the following:&lt;br /&gt;
&lt;br /&gt;
 # Enable HDMI&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/display1/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Disable overlay0 (an overlay must be disabled before changing its properties)&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Set the manager of overlay0 to display1 which is HDMI&lt;br /&gt;
 echo &amp;quot;tv&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/manager&lt;br /&gt;
 &lt;br /&gt;
 # Enable overlay0&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
&lt;br /&gt;
And content on overlay 0 of primary lcd would be transferred to HDMI. It works similarly for all other overlay's.&lt;br /&gt;
&lt;br /&gt;
=== Switching primary display to the DVI port ===&lt;br /&gt;
&lt;br /&gt;
See: http://omappedia.org/wiki/Bootargs_for_enabling_display for lots of useful info on the display subsystem. Be aware that the display, manager and overlay numbers don't match the panda configuration.&lt;br /&gt;
&lt;br /&gt;
Make sure that a monitor is plugged into the DVI port before doing the following:&lt;br /&gt;
&lt;br /&gt;
 # Disable HDMI&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/display1/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Disable overlay0 (an overlay must be disabled before changing its properties)&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Set the manager of overlay0 to display0 which is DVI&lt;br /&gt;
 echo &amp;quot;lcd2&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/manager&lt;br /&gt;
 &lt;br /&gt;
 # Enable overlay0&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
&lt;br /&gt;
The above commands should be run from the serial console and the cable should be in the destination port before running the commands.&lt;br /&gt;
&lt;br /&gt;
=== fbtest on HDMI Port --&amp;gt; Currently not functional &amp;lt;-- ===&lt;br /&gt;
&lt;br /&gt;
Run fbtest to see a nice test pattern from the HDMI port.&lt;br /&gt;
&lt;br /&gt;
[[File:fbtest2.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
=== i2cdetect ===&lt;br /&gt;
&lt;br /&gt;
You can run i2cdetect and the results should look like this:&lt;br /&gt;
&lt;br /&gt;
 # i2cdetect -y -r 1&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
 00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 40: -- -- -- -- -- -- -- -- UU UU UU UU -- -- -- -- &lt;br /&gt;
 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 70: -- -- -- -- -- -- -- --&lt;br /&gt;
&lt;br /&gt;
=== wlan ===&lt;br /&gt;
&lt;br /&gt;
Run the following commands after the PandaBoard is booted:&lt;br /&gt;
&lt;br /&gt;
 modprobe wl12xx    ** only if you built the wl12xx drivers as modules&lt;br /&gt;
 modprobe wl12xx_sdio    ** only if you built the wl12xx drivers as module&lt;br /&gt;
 ifconfig wlan0 up&lt;br /&gt;
 iwconfig wlan0 essid &amp;quot;Your AccessPoint Name&amp;quot;&lt;br /&gt;
 udhcpc -i wlan0&lt;br /&gt;
&lt;br /&gt;
If your network is set up to provide DHCP services, the PandaBoard will get all the &amp;quot;right stuff(tm)&amp;quot; and you will be able to access the Internet.&lt;br /&gt;
&lt;br /&gt;
 # ping www.google.com&lt;br /&gt;
 PING www.google.com (74.125.73.99): 56 data bytes&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=0 ttl=43 time=62.683 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=1 ttl=43 time=54.077 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=2 ttl=43 time=51.484 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=3 ttl=43 time=54.108 ms&lt;br /&gt;
&lt;br /&gt;
=== USB Performance ===&lt;br /&gt;
&lt;br /&gt;
Insert a USB memory stick into one of the usb ports&lt;br /&gt;
&lt;br /&gt;
Run dmesg to see what sdx the stick was recognised as, then:&lt;br /&gt;
&lt;br /&gt;
 hdparam -tT /dev/sdx&lt;br /&gt;
&lt;br /&gt;
If you run the same command on a desktop Linux system, with the same USB memory stick, the PandaBoard's speed should roughly be the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PandaBoard]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/PandaBoard</id>
		<title>PandaBoard</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/PandaBoard"/>
				<updated>2012-03-19T23:14:02Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://www.pandaboard.org PandaBoard] is an [[OMAP4430]] ([[Cortex]]-A9) based low cost development platform.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
* OMAP4 (Cortex-A9) CPU based open development platform.&lt;br /&gt;
** OMAP4430 Application processor&lt;br /&gt;
** 1GB low-power DDR2&lt;br /&gt;
** Display HDMI v1.3 Connector (Type A) to drive HD displays, DVI-D Connector (can drive a 2nd display, simultaneous display; requires HDMI to DVI-D adapter), LCD expansion header&lt;br /&gt;
** 3.5&amp;quot; audio in/out and HDMI Audio out&lt;br /&gt;
** Full size SD/MMC card&lt;br /&gt;
** Built in 802.11 &amp;amp; Bluetooth v2.1+EDR&lt;br /&gt;
** Onboard 10/100 Ethernet&lt;br /&gt;
** Expansion: 1xUSB OTG, 2xUSB HS host ports, General purpose expansion header (I2C, GPMC, USB, MMC, DSS, ETM)&lt;br /&gt;
** JTAG, UART/RS-232, 2 status LEDs, 1GPIO button&lt;br /&gt;
&lt;br /&gt;
More details can be found [http://pandaboard.org/content/platform here]&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Front&lt;br /&gt;
[[File:PandaBoard_front.png|320px]]&lt;br /&gt;
&lt;br /&gt;
A hi resolution picture of the PandaBoard EA1 front is available here: http://elinux.org/images/d/d4/Panda_front.jpg&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Back&lt;br /&gt;
[[File:Panda_back.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
= Availability =&lt;br /&gt;
PandaBoard are in production and can be ordered from [http://pandaboard.org/content/buy Worldwide distributors]. You can also easily identify the board you have using [http://omappedia.org/wiki/PandaBoard_Revisions Board revision id]&lt;br /&gt;
&lt;br /&gt;
== Rev A3 ==&lt;br /&gt;
Latest version of the board.&lt;br /&gt;
&lt;br /&gt;
== Rev A1/A2  ==&lt;br /&gt;
[http://omappedia.org/wiki/PandaBoard_Revisions#Rev_A2 Details]&lt;br /&gt;
&lt;br /&gt;
== Rev EA1/EA2 ==&lt;br /&gt;
These were limited number of 'Early Adopter' boards that built prior to production versions. [http://omappedia.org/wiki/PandaBoard_Revisions#Rev_EA1 more details]&lt;br /&gt;
&lt;br /&gt;
== Rev ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoare-ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the MLO/u-boot/kernel be specifically crafted for the 4460. The thermal management is not in the mainline 4430 code as yet and could cause unwanted thermal problems. So BEWARE of running any code built for the non -ES PandaBoard on the -ES model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Accessories =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_Bamboo|Bamboo Board]]&lt;br /&gt;
* [[BeagleBoard_Trainer|Trainer Board]]&lt;br /&gt;
* [https://specialcomp.com/pandaboard/order.htm Acrylic case]&lt;br /&gt;
* [http://bb-lvds.blogspot.com 10&amp;quot; LCD LVDS plug-and-play bundle with capacitance touchscreen and ambient light sensor]&lt;br /&gt;
&lt;br /&gt;
= Recommended Reading Material =&lt;br /&gt;
&lt;br /&gt;
* [[Embedded_Linux_System_Design_and_Development]]&lt;br /&gt;
* [[Embedded_linux_primer]]&lt;br /&gt;
* [[Building_Embedded_Linux_Systems]]&lt;br /&gt;
* [[Essential_Linux_Device_Drivers]]&lt;br /&gt;
* [[Linux_Device_Drivers]]&lt;br /&gt;
&lt;br /&gt;
= How To's =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_MLO_&amp;amp;_u-boot|How to build MLO and u-boot]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/23/2011'''&lt;br /&gt;
* [[Panda_How_to_Barebox|How to build Barebox]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 11/12/2011'''&lt;br /&gt;
* [[PandaBoard_ES_uboot_howto|How to build u-boot and SPL]] for PandaBoard and PandaBoard ES '''--&amp;gt;&amp;gt; Updated 12/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rel|How to build 3.2 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_3_rcx|How to build 3.3-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_3_rel|How to build 3.3 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/19/2012'''&lt;br /&gt;
* [[Panda_How_to_add_2_USBs|How to add two additional USB connections]] to the PandaBoard&lt;br /&gt;
* [[Panda_How_to_add_Power_Switch|How to add a power switch]] to the PandaBoard '''--&amp;gt;&amp;gt; WIP'''&lt;br /&gt;
* [[PandaBoard Power Measurements]]&lt;br /&gt;
&lt;br /&gt;
== Older How To's ==&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_buildroot|How to build a minimal file system using buildroot]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel|How to build a kernel using the buildroot toolchain from above]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel_new|How to build 2.6.38-rcx kernels]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/15/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_38|How to build 2.6.38 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/16/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39|How to build 2.6.39-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/12/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39rel|How to build 2.6.39 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rel|How to build 3.0 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/29/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rcx|How to build 3.0-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/11/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rcx|How to build 3.1-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/5/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rel|How to build 3.1 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/31/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rcx|How to build 3.2-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
&lt;br /&gt;
= Community =&lt;br /&gt;
 &lt;br /&gt;
Website: [http://pandaboard.org http://pandaboard.org]&lt;br /&gt;
&lt;br /&gt;
IRC: #pandaboard @irc.freenode.net&lt;br /&gt;
&lt;br /&gt;
Mailing List: [http://groups.google.com/group/pandaboard pandaboard@googlegroups.com]&lt;br /&gt;
&lt;br /&gt;
[[category:OMAP]]&lt;br /&gt;
[[category:omap4430]]&lt;br /&gt;
[[category:PandaBoard]]&lt;br /&gt;
[[category:Development Boards]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_kernel_3_3_rel</id>
		<title>Panda How to kernel 3 3 rel</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_kernel_3_3_rel"/>
				<updated>2012-03-19T23:12:45Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: Created page with &amp;quot;== Introduction == Kernel 3.3 has been released  You can download a tarball of the mainline kernel at http://kernel.org/  or you can clone a copy of mainline kernel with:  &amp;lt;pre&amp;gt; ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Kernel 3.3 has been released&lt;br /&gt;
&lt;br /&gt;
You can download a tarball of the mainline kernel at http://kernel.org/&lt;br /&gt;
&lt;br /&gt;
or you can clone a copy of mainline kernel with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
cd linux&lt;br /&gt;
git checkout v3.3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Important Note '''&lt;br /&gt;
There has been a lot of work done on the HDMI interface and its related driver omapdrm. Between kernel 3.1 and 3.2-rc1 enough changed so that the Testing section on the HDMI interface is no longer correct. The hdmi init functions are no longer in arch/arm/mach_omap2/board-omap4panda.c. When this situation stabilises, the HDMI testing section below will be updated. &lt;br /&gt;
&lt;br /&gt;
== Highlites of the -rc series ==&lt;br /&gt;
&lt;br /&gt;
=== rc1 ===&lt;br /&gt;
&lt;br /&gt;
''' The following seems to be only true for the PandaBoard ES. Tests with a PandaBoard EA3 confirm that the patch is still needed '''&lt;br /&gt;
&lt;br /&gt;
The WLAN no longer requires a patch! The WL12xx driver needs current firmware. When the driver isn't happy, the error messages are somewhat less than useful, however the drivers/firmware are being constantly improved and it would not be a good idea to have the driver support anything but the latest firmware. Still a work in progress.&lt;br /&gt;
&lt;br /&gt;
=== rc4 ===&lt;br /&gt;
&lt;br /&gt;
resolve nebulous 'Error setting wl12xx data' fix to PandaBoard. &amp;quot;This should be fixed properly for the next merge window so we don't&lt;br /&gt;
issue error messages merely because a driver is not configured.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Devicetree-enabled kernels crash during boot due to the UART driver (http://www.spinics.net/lists/linux-omap/msg64921.html). A patch has been proposed and should be merged before release.&lt;br /&gt;
&lt;br /&gt;
=== rc7 ===&lt;br /&gt;
&lt;br /&gt;
The WL12xx driver still needs the same patch as used for 3.1 and 3.2. when the driver isn't happy, the error messages are somewhat less than useful, however the drivers/firmware are being constantly improved and it would not be a good idea to have the driver support anything but the latest firmware.&lt;br /&gt;
The race issue that required building as a module has returned and with the modules built in, operation is not consistant.&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoard ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the [[PandaBoard_ES_uboot_howto| MLO/u-boot be specifically crafted for the 4460]]. The thermal management is not in the mainline 4430 code as yet and therefore the max clock frequency when running the OMAP4460 on the PandaBoard ES with the mainline kernel is 920MHz(same as the OMAP4430).&lt;br /&gt;
&lt;br /&gt;
== wlan12xx ==&lt;br /&gt;
&lt;br /&gt;
== wlan12xx patch ==&lt;br /&gt;
This patch is still necessary to resolve the issue noted in 3.0, 3.1 and 3.2, the code was moved to twl_common.c.&lt;br /&gt;
&lt;br /&gt;
[[Media:0001a-omap4-pandaboard-wlan-fix.patch|0001a-omap4-pandaboard-wlan-fix.patch]]&lt;br /&gt;
&lt;br /&gt;
Apply it like so: (from inside the kernel sources directory)&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001a-omap4-pandaboard-wlan-fix.patch&lt;br /&gt;
&lt;br /&gt;
The latest wlan firmware is available from git: git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git just copy the contents of the ti-connectivity folder to /lib/firmware/ti-connectivity.&lt;br /&gt;
&lt;br /&gt;
The patch is no longer necessary for the PandaBoard ES but does not seem to hurt if applied. In addition, the race issue that required building as a module has returned. As part of the code cleanup, the wl12xx and wl12xx_sdio drivers no longer depend on each other. This creates an issue with systems that do not use udev or mdev (with as somewhat fiddly &amp;amp; slow script) to load MODALIAS drivers. The quick solution is to modprobe both, the order no longer matters. Just modprobing wl12xx_sdio will no longer automatically load wl12xx. It is suggested that these 2 drivers be built as modules. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
Building 3.3 is fairly straight forward.&lt;br /&gt;
&lt;br /&gt;
Grab the 3.3 sources and use [[Media:config.3.3.1|config.3.3.1]] as the .config &lt;br /&gt;
&lt;br /&gt;
The 3.3 .config enables Sound builtin and wl12xx as modules. The builtin sound does not presently work, but the enabled configuration allows USB sound devices, which function properly.&lt;br /&gt;
&lt;br /&gt;
Then compile like so:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=Path_to_your/arm-2010q1/bin/arm-none-linux-gnueabi- uImage&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== fbtest on DVI Port ===&lt;br /&gt;
&lt;br /&gt;
After booting run fbtest to see a nice test pattern from the dvi port.&lt;br /&gt;
&lt;br /&gt;
[[File:fbtest.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
=== Switching primary display to the HDMI port  --&amp;gt; Currently not functional &amp;lt;-- ===&lt;br /&gt;
Make sure that a monitor is plugged into the HDMI port before doing the following:&lt;br /&gt;
&lt;br /&gt;
 # Enable HDMI&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/display1/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Disable overlay0 (an overlay must be disabled before changing its properties)&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Set the manager of overlay0 to display1 which is HDMI&lt;br /&gt;
 echo &amp;quot;tv&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/manager&lt;br /&gt;
 &lt;br /&gt;
 # Enable overlay0&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
&lt;br /&gt;
And content on overlay 0 of primary lcd would be transferred to HDMI. It works similarly for all other overlay's.&lt;br /&gt;
&lt;br /&gt;
=== Switching primary display to the DVI port ===&lt;br /&gt;
&lt;br /&gt;
See: http://omappedia.org/wiki/Bootargs_for_enabling_display for lots of useful info on the display subsystem. Be aware that the display, manager and overlay numbers don't match the panda configuration.&lt;br /&gt;
&lt;br /&gt;
Make sure that a monitor is plugged into the DVI port before doing the following:&lt;br /&gt;
&lt;br /&gt;
 # Disable HDMI&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/display1/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Disable overlay0 (an overlay must be disabled before changing its properties)&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Set the manager of overlay0 to display0 which is DVI&lt;br /&gt;
 echo &amp;quot;lcd2&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/manager&lt;br /&gt;
 &lt;br /&gt;
 # Enable overlay0&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
&lt;br /&gt;
The above commands should be run from the serial console and the cable should be in the destination port before running the commands.&lt;br /&gt;
&lt;br /&gt;
=== fbtest on HDMI Port --&amp;gt; Currently not functional &amp;lt;-- ===&lt;br /&gt;
&lt;br /&gt;
Run fbtest to see a nice test pattern from the HDMI port.&lt;br /&gt;
&lt;br /&gt;
[[File:fbtest2.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
=== i2cdetect ===&lt;br /&gt;
&lt;br /&gt;
You can run i2cdetect and the results should look like this:&lt;br /&gt;
&lt;br /&gt;
 # i2cdetect -y -r 1&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
 00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 40: -- -- -- -- -- -- -- -- UU UU UU UU -- -- -- -- &lt;br /&gt;
 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 70: -- -- -- -- -- -- -- --&lt;br /&gt;
&lt;br /&gt;
=== wlan ===&lt;br /&gt;
&lt;br /&gt;
Run the following commands after the PandaBoard is booted:&lt;br /&gt;
&lt;br /&gt;
 modprobe wl12xx    ** only if you built the wl12xx drivers as modules&lt;br /&gt;
 modprobe wl12xx_sdio    ** only if you built the wl12xx drivers as module&lt;br /&gt;
 ifconfig wlan0 up&lt;br /&gt;
 iwconfig wlan0 essid &amp;quot;Your AccessPoint Name&amp;quot;&lt;br /&gt;
 udhcpc -i wlan0&lt;br /&gt;
&lt;br /&gt;
If your network is set up to provide DHCP services, the PandaBoard will get all the &amp;quot;right stuff(tm)&amp;quot; and you will be able to access the Internet.&lt;br /&gt;
&lt;br /&gt;
 # ping www.google.com&lt;br /&gt;
 PING www.google.com (74.125.73.99): 56 data bytes&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=0 ttl=43 time=62.683 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=1 ttl=43 time=54.077 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=2 ttl=43 time=51.484 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=3 ttl=43 time=54.108 ms&lt;br /&gt;
&lt;br /&gt;
=== USB Performance ===&lt;br /&gt;
&lt;br /&gt;
Insert a USB memory stick into one of the usb ports&lt;br /&gt;
&lt;br /&gt;
Run dmesg to see what sdx the stick was recognised as, then:&lt;br /&gt;
&lt;br /&gt;
 hdparam -tT /dev/sdx&lt;br /&gt;
&lt;br /&gt;
If you run the same command on a desktop Linux system, with the same USB memory stick, the PandaBoard's speed should roughly be the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PandaBoard]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/File:Config.3.3.1</id>
		<title>File:Config.3.3.1</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/File:Config.3.3.1"/>
				<updated>2012-03-19T23:07:41Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: .config for kernel 3.3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.config for kernel 3.3&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/PandaBoard</id>
		<title>PandaBoard</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/PandaBoard"/>
				<updated>2012-03-19T22:55:41Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://www.pandaboard.org PandaBoard] is an [[OMAP4430]] ([[Cortex]]-A9) based low cost development platform.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
* OMAP4 (Cortex-A9) CPU based open development platform.&lt;br /&gt;
** OMAP4430 Application processor&lt;br /&gt;
** 1GB low-power DDR2&lt;br /&gt;
** Display HDMI v1.3 Connector (Type A) to drive HD displays, DVI-D Connector (can drive a 2nd display, simultaneous display; requires HDMI to DVI-D adapter), LCD expansion header&lt;br /&gt;
** 3.5&amp;quot; audio in/out and HDMI Audio out&lt;br /&gt;
** Full size SD/MMC card&lt;br /&gt;
** Built in 802.11 &amp;amp; Bluetooth v2.1+EDR&lt;br /&gt;
** Onboard 10/100 Ethernet&lt;br /&gt;
** Expansion: 1xUSB OTG, 2xUSB HS host ports, General purpose expansion header (I2C, GPMC, USB, MMC, DSS, ETM)&lt;br /&gt;
** JTAG, UART/RS-232, 2 status LEDs, 1GPIO button&lt;br /&gt;
&lt;br /&gt;
More details can be found [http://pandaboard.org/content/platform here]&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Front&lt;br /&gt;
[[File:PandaBoard_front.png|320px]]&lt;br /&gt;
&lt;br /&gt;
A hi resolution picture of the PandaBoard EA1 front is available here: http://elinux.org/images/d/d4/Panda_front.jpg&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Back&lt;br /&gt;
[[File:Panda_back.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
= Availability =&lt;br /&gt;
PandaBoard are in production and can be ordered from [http://pandaboard.org/content/buy Worldwide distributors]. You can also easily identify the board you have using [http://omappedia.org/wiki/PandaBoard_Revisions Board revision id]&lt;br /&gt;
&lt;br /&gt;
== Rev A3 ==&lt;br /&gt;
Latest version of the board.&lt;br /&gt;
&lt;br /&gt;
== Rev A1/A2  ==&lt;br /&gt;
[http://omappedia.org/wiki/PandaBoard_Revisions#Rev_A2 Details]&lt;br /&gt;
&lt;br /&gt;
== Rev EA1/EA2 ==&lt;br /&gt;
These were limited number of 'Early Adopter' boards that built prior to production versions. [http://omappedia.org/wiki/PandaBoard_Revisions#Rev_EA1 more details]&lt;br /&gt;
&lt;br /&gt;
== Rev ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoare-ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the MLO/u-boot/kernel be specifically crafted for the 4460. The thermal management is not in the mainline 4430 code as yet and could cause unwanted thermal problems. So BEWARE of running any code built for the non -ES PandaBoard on the -ES model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Accessories =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_Bamboo|Bamboo Board]]&lt;br /&gt;
* [[BeagleBoard_Trainer|Trainer Board]]&lt;br /&gt;
* [https://specialcomp.com/pandaboard/order.htm Acrylic case]&lt;br /&gt;
* [http://bb-lvds.blogspot.com 10&amp;quot; LCD LVDS plug-and-play bundle with capacitance touchscreen and ambient light sensor]&lt;br /&gt;
&lt;br /&gt;
= Recommended Reading Material =&lt;br /&gt;
&lt;br /&gt;
* [[Embedded_Linux_System_Design_and_Development]]&lt;br /&gt;
* [[Embedded_linux_primer]]&lt;br /&gt;
* [[Building_Embedded_Linux_Systems]]&lt;br /&gt;
* [[Essential_Linux_Device_Drivers]]&lt;br /&gt;
* [[Linux_Device_Drivers]]&lt;br /&gt;
&lt;br /&gt;
= How To's =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_MLO_&amp;amp;_u-boot|How to build MLO and u-boot]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/23/2011'''&lt;br /&gt;
* [[Panda_How_to_Barebox|How to build Barebox]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 11/12/2011'''&lt;br /&gt;
* [[PandaBoard_ES_uboot_howto|How to build u-boot and SPL]] for PandaBoard and PandaBoard ES '''--&amp;gt;&amp;gt; Updated 12/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rel|How to build 3.2 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_3_rcx|How to build 3.3-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_3_rel|How to build 3.3 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; WIP'''&lt;br /&gt;
* [[Panda_How_to_add_2_USBs|How to add two additional USB connections]] to the PandaBoard&lt;br /&gt;
* [[Panda_How_to_add_Power_Switch|How to add a power switch]] to the PandaBoard '''--&amp;gt;&amp;gt; WIP'''&lt;br /&gt;
* [[PandaBoard Power Measurements]]&lt;br /&gt;
&lt;br /&gt;
== Older How To's ==&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_buildroot|How to build a minimal file system using buildroot]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel|How to build a kernel using the buildroot toolchain from above]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel_new|How to build 2.6.38-rcx kernels]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/15/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_38|How to build 2.6.38 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/16/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39|How to build 2.6.39-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/12/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39rel|How to build 2.6.39 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rel|How to build 3.0 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/29/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rcx|How to build 3.0-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/11/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rcx|How to build 3.1-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/5/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rel|How to build 3.1 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/31/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rcx|How to build 3.2-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
&lt;br /&gt;
= Community =&lt;br /&gt;
 &lt;br /&gt;
Website: [http://pandaboard.org http://pandaboard.org]&lt;br /&gt;
&lt;br /&gt;
IRC: #pandaboard @irc.freenode.net&lt;br /&gt;
&lt;br /&gt;
Mailing List: [http://groups.google.com/group/pandaboard pandaboard@googlegroups.com]&lt;br /&gt;
&lt;br /&gt;
[[category:OMAP]]&lt;br /&gt;
[[category:omap4430]]&lt;br /&gt;
[[category:PandaBoard]]&lt;br /&gt;
[[category:Development Boards]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_kernel_3_3_rcx</id>
		<title>Panda How to kernel 3 3 rcx</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_kernel_3_3_rcx"/>
				<updated>2012-03-13T00:49:06Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
The merge window for 3.3 is over and we are currently at v3.3-rc4.&lt;br /&gt;
Lots of work on the OMAP platforms and on Pandaboard as well as the wl12xx wlan driver . Let's see&lt;br /&gt;
what the various release candidates have provided.&lt;br /&gt;
&lt;br /&gt;
You can download a tarball of the mainline kernel at http://kernel.org/&lt;br /&gt;
&lt;br /&gt;
or you can clone a copy of mainline kernel with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
cd linux&lt;br /&gt;
git checkout v3.3-rcx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where x is the release candidate version.&lt;br /&gt;
&lt;br /&gt;
''' Important Note '''&lt;br /&gt;
There has been a lot of work done on the HDMI interface and its related driver omapdrm. Between kernel 3.1 and 3.2-rc1 enough changed so that the Testing section on the HDMI interface is no longer correct. The hdmi init functions are no longer in arch/arm/mach_omap2/board-omap4panda.c. When this situation stabilises, the HDMI testing section below will be updated. &lt;br /&gt;
&lt;br /&gt;
== rc1 ==&lt;br /&gt;
&lt;br /&gt;
''' The following seems to be only true for the PandaBoard ES. Tests with a PandaBoard EA3 confirm that the patch is still needed '''&lt;br /&gt;
&lt;br /&gt;
The WLAN no longer requires a patch! The WL12xx driver needs current firmware. When the driver isn't happy, the error messages are somewhat less than useful, however the drivers/firmware are being constantly improved and it would not be a good idea to have the driver support anything but the latest firmware. Still a work in progress.&lt;br /&gt;
&lt;br /&gt;
== rc2 ==&lt;br /&gt;
&lt;br /&gt;
No PandaBoard changes, and with no patches required this is an easy release to build.&lt;br /&gt;
&lt;br /&gt;
== rc3 ==&lt;br /&gt;
&lt;br /&gt;
Skipped due to the HDMI changes which cropped up in 3.2-rc1&lt;br /&gt;
Lots of changes working towards getting HDMI functional&lt;br /&gt;
&lt;br /&gt;
== rc4 ==&lt;br /&gt;
&lt;br /&gt;
resolve nebulous 'Error setting wl12xx data' fix to PandaBoard. &amp;quot;This should be fixed properly for the next merge window so we don't&lt;br /&gt;
issue error messages merely because a driver is not configured.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Devicetree-enabled kernels crash during boot due to the UART driver (http://www.spinics.net/lists/linux-omap/msg64921.html). A patch has been proposed and should be merged before release.&lt;br /&gt;
&lt;br /&gt;
== rc5 ==&lt;br /&gt;
== rc6 ==&lt;br /&gt;
== rc7 ==&lt;br /&gt;
&lt;br /&gt;
The WL12xx driver still needs the same patch as used for 3.1 and 3.2. when the driver isn't happy, the error messages are somewhat less than useful, however the drivers/firmware are being constantly improved and it would not be a good idea to have the driver support anything but the latest firmware.&lt;br /&gt;
The race issue that required building as a module has returned and with the modules built in, operation is not consistant.&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoard ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the [[PandaBoard_ES_uboot_howto| MLO/u-boot be specifically crafted for the 4460]]. The thermal management is not in the mainline 4430 code as yet and therefore the max clock frequency when running the OMAP4460 on the PandaBoard ES with the mainline kernel is 920MHz(same as the OMAP4430).&lt;br /&gt;
&lt;br /&gt;
== wlan12xx ==&lt;br /&gt;
&lt;br /&gt;
== wlan12xx patch ==&lt;br /&gt;
This patch is still necessary to resolve the issue noted in 3.0, 3.1 and 3.2, the code was moved to twl_common.c.&lt;br /&gt;
&lt;br /&gt;
[[Media:0001a-omap4-pandaboard-wlan-fix.patch|0001a-omap4-pandaboard-wlan-fix.patch]]&lt;br /&gt;
&lt;br /&gt;
Apply it like so: (from inside the kernel sources directory)&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001a-omap4-pandaboard-wlan-fix.patch&lt;br /&gt;
&lt;br /&gt;
The latest wlan firmware is available from git: git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git just copy the contents of the ti-connectivity folder to /lib/firmware/ti-connectivity.&lt;br /&gt;
&lt;br /&gt;
The patch is no longer necessary for the PandaBoard ES but does not seem to hurt if applied. In addition, the race issue that required building as a module has returned as of -rc2. As part of the code cleanup, the wl12xx and wl12xx_sdio drivers no longer depend on each other. This creates an issue with systems that do not use udev or mdev (with as somewhat fiddly &amp;amp; slow script) to load MODALIAS drivers. The quick solution is to modprobe both, the order no longer matters. Just modprobing wl12xx_sdio will no longer automatically load wl12xx. It is suggested that these 2 drivers be built as modules. &lt;br /&gt;
&lt;br /&gt;
== I2C Patch ==&lt;br /&gt;
i2c character device driver patch that has been necessary is no longer required, and the issues from kernel 3.2 have been resolved.&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
Building 3.3-rc1 or -rc2 is fairly straight forward.&lt;br /&gt;
&lt;br /&gt;
Grab the 3.3-rc1 or 3.3-rc2 sources and use [[Media:config.3.3-rc1.1|config.3.3-rc1.1]] or [[Media:config.3.3-rc2.1|config.3.3-rc2.1]] as the .config &lt;br /&gt;
&lt;br /&gt;
The 3.3-rc1 .config enables Sound builtin and wl12xx as modules and the 3.3-rc2 enables Sound and the wl12xx drivers builtin, so the resulting kernel will be a bit bigger than previously. The builtin sound does not presently work, but the enabled configuration allows USB sound devices, which function properly.&lt;br /&gt;
&lt;br /&gt;
Then compile like so:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=Path_to_your/arm-2010q1/bin/arm-none-linux-gnueabi- uImage&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== fbtest on DVI Port ===&lt;br /&gt;
&lt;br /&gt;
After booting run fbtest to see a nice test pattern from the dvi port.&lt;br /&gt;
&lt;br /&gt;
[[File:fbtest.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
=== Switching primary display to the HDMI port  --&amp;gt; Currently not functional &amp;lt;-- ===&lt;br /&gt;
Make sure that a monitor is plugged into the HDMI port before doing the following:&lt;br /&gt;
&lt;br /&gt;
 # Enable HDMI&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/display1/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Disable overlay0 (an overlay must be disabled before changing its properties)&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Set the manager of overlay0 to display1 which is HDMI&lt;br /&gt;
 echo &amp;quot;tv&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/manager&lt;br /&gt;
 &lt;br /&gt;
 # Enable overlay0&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
&lt;br /&gt;
And content on overlay 0 of primary lcd would be transferred to HDMI. It works similarly for all other overlay's.&lt;br /&gt;
&lt;br /&gt;
=== Switching primary display to the DVI port ===&lt;br /&gt;
&lt;br /&gt;
See: http://omappedia.org/wiki/Bootargs_for_enabling_display for lots of useful info on the display subsystem. Be aware that the display, manager and overlay numbers don't match the panda configuration.&lt;br /&gt;
&lt;br /&gt;
Make sure that a monitor is plugged into the DVI port before doing the following:&lt;br /&gt;
&lt;br /&gt;
 # Disable HDMI&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/display1/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Disable overlay0 (an overlay must be disabled before changing its properties)&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Set the manager of overlay0 to display0 which is DVI&lt;br /&gt;
 echo &amp;quot;lcd2&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/manager&lt;br /&gt;
 &lt;br /&gt;
 # Enable overlay0&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
&lt;br /&gt;
The above commands should be run from the serial console and the cable should be in the destination port before running the commands.&lt;br /&gt;
&lt;br /&gt;
=== fbtest on HDMI Port --&amp;gt; Currently not functional &amp;lt;-- ===&lt;br /&gt;
&lt;br /&gt;
Run fbtest to see a nice test pattern from the HDMI port.&lt;br /&gt;
&lt;br /&gt;
[[File:fbtest2.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
=== i2cdetect ===&lt;br /&gt;
&lt;br /&gt;
You can run i2cdetect and the results should look like this:&lt;br /&gt;
&lt;br /&gt;
 # i2cdetect -y -r 1&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
 00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 40: -- -- -- -- -- -- -- -- UU UU UU UU -- -- -- -- &lt;br /&gt;
 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 70: -- -- -- -- -- -- -- --&lt;br /&gt;
&lt;br /&gt;
=== wlan ===&lt;br /&gt;
&lt;br /&gt;
Run the following commands after the PandaBoard is booted:&lt;br /&gt;
&lt;br /&gt;
 modprobe wl12xx    ** only if you built the wl12xx drivers as modules&lt;br /&gt;
 modprobe wl12xx_sdio    ** only if you built the wl12xx drivers as module&lt;br /&gt;
 ifconfig wlan0 up&lt;br /&gt;
 iwconfig wlan0 essid &amp;quot;Your AccessPoint Name&amp;quot;&lt;br /&gt;
 udhcpc -i wlan0&lt;br /&gt;
&lt;br /&gt;
If your network is set up to provide DHCP services, the PandaBoard will get all the &amp;quot;right stuff(tm)&amp;quot; and you will be able to access the Internet.&lt;br /&gt;
&lt;br /&gt;
 # ping www.google.com&lt;br /&gt;
 PING www.google.com (74.125.73.99): 56 data bytes&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=0 ttl=43 time=62.683 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=1 ttl=43 time=54.077 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=2 ttl=43 time=51.484 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=3 ttl=43 time=54.108 ms&lt;br /&gt;
&lt;br /&gt;
=== USB Performance ===&lt;br /&gt;
&lt;br /&gt;
Insert a USB memory stick into one of the usb ports&lt;br /&gt;
&lt;br /&gt;
Run dmesg to see what sdx the stick was recognised as, then:&lt;br /&gt;
&lt;br /&gt;
 hdparam -tT /dev/sdx&lt;br /&gt;
&lt;br /&gt;
If you did this on a kernel without the patch you will see some improvement, if you run the same command on a desktop Linux system, with the same USB memory stick, the PandaBoard's speed should roughly be the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PandaBoard]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_kernel_3_3_rcx</id>
		<title>Panda How to kernel 3 3 rcx</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_kernel_3_3_rcx"/>
				<updated>2012-03-13T00:39:12Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
The merge window for 3.3 is over and we are currently at v3.3-rc4.&lt;br /&gt;
Lots of work on the OMAP platforms and on Pandaboard as well as the wl12xx wlan driver . Let's see&lt;br /&gt;
what the various release candidates have provided.&lt;br /&gt;
&lt;br /&gt;
You can download a tarball of the mainline kernel at http://kernel.org/&lt;br /&gt;
&lt;br /&gt;
or you can clone a copy of mainline kernel with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
cd linux&lt;br /&gt;
git checkout v3.3-rcx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where x is the release candidate version.&lt;br /&gt;
&lt;br /&gt;
''' Important Note '''&lt;br /&gt;
There has been a lot of work done on the HDMI interface and its related driver omapdrm. Between kernel 3.1 and 3.2-rc1 enough changed so that the Testing section on the HDMI interface is no longer correct. The hdmi init functions are no longer in arch/arm/mach_omap2/board-omap4panda.c. When this situation stabilises, the HDMI testing section below will be updated. &lt;br /&gt;
&lt;br /&gt;
== rc1 ==&lt;br /&gt;
&lt;br /&gt;
''' The following seems to be only true for the PandaBoard ES. Tests with a PandaBoard EA3 confirm that the patch is still needed '''&lt;br /&gt;
&lt;br /&gt;
The WLAN no longer requires a patch! The WL12xx driver needs current firmware. When the driver isn't happy, the error messages are somewhat less than useful, however the drivers/firmware are being constantly improved and it would not be a good idea to have the driver support anything but the latest firmware. Still a work in progress.&lt;br /&gt;
&lt;br /&gt;
== rc2 ==&lt;br /&gt;
&lt;br /&gt;
No PandaBoard changes, and with no patches required this is an easy release to build.&lt;br /&gt;
&lt;br /&gt;
== rc3 ==&lt;br /&gt;
&lt;br /&gt;
Skipped due to the HDMI changes which cropped up in 3.2-rc1&lt;br /&gt;
Lots of changes working towards getting HDMI functional&lt;br /&gt;
&lt;br /&gt;
== rc4 ==&lt;br /&gt;
&lt;br /&gt;
resolve nebulous 'Error setting wl12xx data' fix to PandaBoard. &amp;quot;This should be fixed properly for the next merge window so we don't&lt;br /&gt;
issue error messages merely because a driver is not configured.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Devicetree-enabled kernels crash during boot due to the UART driver (http://www.spinics.net/lists/linux-omap/msg64921.html). A patch has been proposed and should be merged before release.&lt;br /&gt;
&lt;br /&gt;
== rc5 ==&lt;br /&gt;
== rc6 ==&lt;br /&gt;
== rc7 ==&lt;br /&gt;
&lt;br /&gt;
The WL12xx driver still needs the same patch as used for 3.1 and 3.2. when the driver isn't happy, the error messages are somewhat less than useful, however the drivers/firmware are being constantly improved and it would not be a good idea to have the driver support anything but the latest firmware.&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoard ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the [[PandaBoard_ES_uboot_howto| MLO/u-boot be specifically crafted for the 4460]]. The thermal management is not in the mainline 4430 code as yet and therefore the max clock frequency when running the OMAP4460 on the PandaBoard ES with the mainline kernel is 920MHz(same as the OMAP4430).&lt;br /&gt;
&lt;br /&gt;
== wlan12xx ==&lt;br /&gt;
&lt;br /&gt;
== wlan12xx patch ==&lt;br /&gt;
This patch is still necessary to resolve the issue noted in 3.0, 3.1 and 3.2, the code was moved to twl_common.c.&lt;br /&gt;
&lt;br /&gt;
[[Media:0001a-omap4-pandaboard-wlan-fix.patch|0001a-omap4-pandaboard-wlan-fix.patch]]&lt;br /&gt;
&lt;br /&gt;
Apply it like so: (from inside the kernel sources directory)&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001a-omap4-pandaboard-wlan-fix.patch&lt;br /&gt;
&lt;br /&gt;
The latest wlan firmware is available from git: git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git just copy the contents of the ti-connectivity folder to /lib/firmware/ti-connectivity.&lt;br /&gt;
&lt;br /&gt;
The patch is no longer necessary for the PandaBoard ES but does not seem to hurt if applied. In addition, the race issue that required building as a module has been resolved. As part of the code cleanup, the wl12xx and wl12xx_sdio drivers no longer depend on each other. This creates an issue with systems that do not use udev or mdev (with as somewhat fiddly &amp;amp; slow script) to load MODALIAS drivers. The quick solution is to modprobe both, the order no longer matters. Just modprobing wl12xx_sdio will no longer automatically load wl12xx. For this How To, we will build the drivers into the kernel.&lt;br /&gt;
&lt;br /&gt;
== I2C Patch ==&lt;br /&gt;
i2c character device driver patch that has been necessary is no longer required, and the issues from kernel 3.2 have been resolved.&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
Building 3.3-rc1 or -rc2 is fairly straight forward.&lt;br /&gt;
&lt;br /&gt;
Grab the 3.3-rc1 or 3.3-rc2 sources and use [[Media:config.3.3-rc1.1|config.3.3-rc1.1]] or [[Media:config.3.3-rc2.1|config.3.3-rc2.1]] as the .config &lt;br /&gt;
&lt;br /&gt;
The 3.3-rc1 .config enables Sound builtin and wl12xx as modules and the 3.3-rc2 enables Sound and the wl12xx drivers builtin, so the resulting kernel will be a bit bigger than previously. The builtin sound does not presently work, but the enabled configuration allows USB sound devices, which function properly.&lt;br /&gt;
&lt;br /&gt;
Then compile like so:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=Path_to_your/arm-2010q1/bin/arm-none-linux-gnueabi- uImage&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== fbtest on DVI Port ===&lt;br /&gt;
&lt;br /&gt;
After booting run fbtest to see a nice test pattern from the dvi port.&lt;br /&gt;
&lt;br /&gt;
[[File:fbtest.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
=== Switching primary display to the HDMI port  --&amp;gt; Currently not functional &amp;lt;-- ===&lt;br /&gt;
Make sure that a monitor is plugged into the HDMI port before doing the following:&lt;br /&gt;
&lt;br /&gt;
 # Enable HDMI&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/display1/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Disable overlay0 (an overlay must be disabled before changing its properties)&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Set the manager of overlay0 to display1 which is HDMI&lt;br /&gt;
 echo &amp;quot;tv&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/manager&lt;br /&gt;
 &lt;br /&gt;
 # Enable overlay0&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
&lt;br /&gt;
And content on overlay 0 of primary lcd would be transferred to HDMI. It works similarly for all other overlay's.&lt;br /&gt;
&lt;br /&gt;
=== Switching primary display to the DVI port ===&lt;br /&gt;
&lt;br /&gt;
See: http://omappedia.org/wiki/Bootargs_for_enabling_display for lots of useful info on the display subsystem. Be aware that the display, manager and overlay numbers don't match the panda configuration.&lt;br /&gt;
&lt;br /&gt;
Make sure that a monitor is plugged into the DVI port before doing the following:&lt;br /&gt;
&lt;br /&gt;
 # Disable HDMI&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/display1/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Disable overlay0 (an overlay must be disabled before changing its properties)&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Set the manager of overlay0 to display0 which is DVI&lt;br /&gt;
 echo &amp;quot;lcd2&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/manager&lt;br /&gt;
 &lt;br /&gt;
 # Enable overlay0&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
&lt;br /&gt;
The above commands should be run from the serial console and the cable should be in the destination port before running the commands.&lt;br /&gt;
&lt;br /&gt;
=== fbtest on HDMI Port --&amp;gt; Currently not functional &amp;lt;-- ===&lt;br /&gt;
&lt;br /&gt;
Run fbtest to see a nice test pattern from the HDMI port.&lt;br /&gt;
&lt;br /&gt;
[[File:fbtest2.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
=== i2cdetect ===&lt;br /&gt;
&lt;br /&gt;
You can run i2cdetect and the results should look like this:&lt;br /&gt;
&lt;br /&gt;
 # i2cdetect -y -r 1&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
 00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 40: -- -- -- -- -- -- -- -- UU UU UU UU -- -- -- -- &lt;br /&gt;
 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 70: -- -- -- -- -- -- -- --&lt;br /&gt;
&lt;br /&gt;
=== wlan ===&lt;br /&gt;
&lt;br /&gt;
Run the following commands after the PandaBoard is booted:&lt;br /&gt;
&lt;br /&gt;
 modprobe wl12xx    ** only if you built the wl12xx drivers as modules&lt;br /&gt;
 modprobe wl12xx_sdio    ** only if you built the wl12xx drivers as module&lt;br /&gt;
 ifconfig wlan0 up&lt;br /&gt;
 iwconfig wlan0 essid &amp;quot;Your AccessPoint Name&amp;quot;&lt;br /&gt;
 udhcpc -i wlan0&lt;br /&gt;
&lt;br /&gt;
If your network is set up to provide DHCP services, the PandaBoard will get all the &amp;quot;right stuff(tm)&amp;quot; and you will be able to access the Internet.&lt;br /&gt;
&lt;br /&gt;
 # ping www.google.com&lt;br /&gt;
 PING www.google.com (74.125.73.99): 56 data bytes&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=0 ttl=43 time=62.683 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=1 ttl=43 time=54.077 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=2 ttl=43 time=51.484 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=3 ttl=43 time=54.108 ms&lt;br /&gt;
&lt;br /&gt;
=== USB Performance ===&lt;br /&gt;
&lt;br /&gt;
Insert a USB memory stick into one of the usb ports&lt;br /&gt;
&lt;br /&gt;
Run dmesg to see what sdx the stick was recognised as, then:&lt;br /&gt;
&lt;br /&gt;
 hdparam -tT /dev/sdx&lt;br /&gt;
&lt;br /&gt;
If you did this on a kernel without the patch you will see some improvement, if you run the same command on a desktop Linux system, with the same USB memory stick, the PandaBoard's speed should roughly be the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PandaBoard]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_build_SDR</id>
		<title>Panda How to build SDR</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_build_SDR"/>
				<updated>2012-02-19T22:48:12Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: /* Buildroot Internal toolchain  with uClibc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
What I have done is still very much a work in progress. The PandaBoard,&lt;br /&gt;
OMAP4, platform is a very powerful and flexible system, but it has its&lt;br /&gt;
limitations. I have been doing work with the PandaBoard since about&lt;br /&gt;
November 2010, so I've seen the kernel and distributions move from&lt;br /&gt;
barely runable to very capable during that time.&lt;br /&gt;
&lt;br /&gt;
For my SDR work, I run a home built &amp;quot;distro&amp;quot; which I build with&lt;br /&gt;
buildroot. It has the advantages of Gentoo as everything is built from&lt;br /&gt;
source, but it is not quite &amp;quot;plug &amp;amp; play&amp;quot;. There is a lot of fiddling&lt;br /&gt;
that I had to do to get all the dependences and libraries that dspserver&lt;br /&gt;
and widget-server need. I am currently not running QtRadio on the&lt;br /&gt;
PandaBoard, and don't intend to, for a while at least. The DSP software&lt;br /&gt;
needs all the CPU power it can get.&lt;br /&gt;
  &lt;br /&gt;
The major problem that most folks have run into trying to get SDR&lt;br /&gt;
software running on a non-x86 platform is dealing with the lack of FPU.&lt;br /&gt;
Anything without an FPU is just a waste of time, software floating point&lt;br /&gt;
emulation is just tooooooooo slow. Custom code to do SDR with fixed&lt;br /&gt;
point arithmetic is possible and has been done. But, most recent efforts&lt;br /&gt;
to run something like ghpsdr or ghpsdr3-alex have met with dismal&lt;br /&gt;
failure due to the fact that folks will try to boot up Ubuntu on their&lt;br /&gt;
platform of choice, install the build-essentials, and try to build the&lt;br /&gt;
SDR software like they would on their desktop. While this may result in&lt;br /&gt;
a runnable piece of code, there is currently no support for an FPU. So&lt;br /&gt;
if the software runs at all, the DSP functions will not be able to keep&lt;br /&gt;
up with the incoming data.&lt;br /&gt;
&lt;br /&gt;
This is where I diverged from the mainstream. The key event was the&lt;br /&gt;
availability of FFTW3 3.3.1-beta1 which includes support for the neon&lt;br /&gt;
FPU that is present on the OMAP4 4430/4460/4470. Unfortunately ARM made&lt;br /&gt;
this co-processor an option on Cortex-A9 implementations, and Nvidia&lt;br /&gt;
chose not to have it on Tegra2, so what I wound up with is somewhat Ti&lt;br /&gt;
specific.&lt;br /&gt;
&lt;br /&gt;
I was able to cross compile fftw3 and run several benchmarks on my&lt;br /&gt;
PandaBoard ES and was quite impressed with the result vs. what Vesprerix&lt;br /&gt;
had reported on with their implementation (fork) of fftw3. Once I was&lt;br /&gt;
convinced that the fft routines on which DTTSP depend were &amp;quot;good enough&amp;quot;&lt;br /&gt;
I proceeded to put together a buildroot build that was tuned to using&lt;br /&gt;
&amp;quot;-mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp&amp;quot;. There are lots of&lt;br /&gt;
fiddly cross-compiler options and libraries that have to be checked to&lt;br /&gt;
be sure they actually are using neon (this work has not been completed&lt;br /&gt;
yet).&lt;br /&gt;
After the cross environment was working I went about getting dspserver,&lt;br /&gt;
widget-server and all their dependencies cross-compiled, there were a&lt;br /&gt;
lot. The most troublesome was Codec2, which I still have to hand tweak&lt;br /&gt;
to get to cross-compile properly. My first effort has Codec2 support&lt;br /&gt;
patched out, but the current code does include it. The dspserver and DttSP&lt;br /&gt;
code is identical to what is in the git repository, except for the Makefile &lt;br /&gt;
which is customized to compile with my toolchain. I have modified the &lt;br /&gt;
widget-server code to remove some dead code and add calibration for the Si570.&lt;br /&gt;
&lt;br /&gt;
Another issue that I haven't dug into yet is Jack, it is necessary for&lt;br /&gt;
non-hpsdr protocol servers. Jack2 uses waf (a really old version 1.5.0 at that)&lt;br /&gt;
instead of make. I am able to cross compile Jack1 (0.121.3) since it uses make, &lt;br /&gt;
but Jack2 needs some help. Pulse audio and Port audio were no problem.&lt;br /&gt;
&lt;br /&gt;
There will be an sd card image that one can &amp;quot;dd&amp;quot; onto a blank card.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For SDR work, gcc 4.6.2 is a must.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
I build the kernel and u-boot/SPL outside of buildroot, but use the buildroot toolchain. This may change in the near future, as buildroot will soon support the PandaBoard as a target.&lt;br /&gt;
&lt;br /&gt;
== Kernel==&lt;br /&gt;
&lt;br /&gt;
=== kernel 3.3-rc2 .config ===&lt;br /&gt;
&lt;br /&gt;
== u-boot/MLO/SPL ==&lt;br /&gt;
&lt;br /&gt;
== Buildroot Internal toolchain  with uClibc ==&lt;br /&gt;
&lt;br /&gt;
Start by downloading buildroot and getting all the prerequisites installed on your build machine.&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.buildroot.net/buildroot &lt;br /&gt;
&lt;br /&gt;
Then apply the following patch from the main buildroot directory&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001_add_new_packages.patch&lt;br /&gt;
&lt;br /&gt;
Then replace the config files for buildroot, busybox, and uClibc like this&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0002_replace_configs.patch&lt;br /&gt;
&lt;br /&gt;
Build everything&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
After the build completes you will have a toolchain, packages and libraries except for codec2. This takes a bit of fiddling with to cross compile.&lt;br /&gt;
&lt;br /&gt;
Download http://freetel.svn.sourceforge.net/viewvc/freetel/codec2/?view=tar&lt;br /&gt;
&lt;br /&gt;
Untar in a convenient place, cd to that place, run ./configure, then make. This will build codec2/src/generate_codebook for your desktop platform, which will be needed later.&lt;br /&gt;
&lt;br /&gt;
Now run make menuconfig in the buildroot main dir, go to Package Selection for Target --&amp;gt; Libraries --&amp;gt; Other and select codec2&lt;br /&gt;
&lt;br /&gt;
Run make again from the main buildroot dir and wait till the build fails, which it should.&lt;br /&gt;
&lt;br /&gt;
Now copy the generate_codebook file from codec2/src/ to buildroot/output/build/codec2-289/src/&lt;br /&gt;
&lt;br /&gt;
Now back to the main buildroot dir and run make again. This will finish building and the codec2 library.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buildroot Crosstool-ng toolchain with glibc ===&lt;br /&gt;
&lt;br /&gt;
=== buildroot .config ===&lt;br /&gt;
&lt;br /&gt;
=== crosstool-ng config ===&lt;br /&gt;
&lt;br /&gt;
== uClibc vs glibc size and speed in a real world example ==&lt;br /&gt;
&lt;br /&gt;
After building the first PandaSDR system, I was curious as to how things might change if I used glibc. The first thing I did was do a bench mark on the floating point performance of both. uClibc was woefully inadequate in sin/cos &lt;br /&gt;
&lt;br /&gt;
http://gruntthepeon.free.fr/ssemath/neon_mathfun.html&lt;br /&gt;
&lt;br /&gt;
with this benchmark compiled with glibc the performance numbers matched closely with the website, however with uClibc the sinf/cosf numbers were off.&lt;br /&gt;
&lt;br /&gt;
Instead of &amp;quot;2.0 millions of vector evaluations/second -&amp;gt; 121 cycles/value&amp;quot; I got &amp;quot;.1 millions of vector evaluations/second -&amp;gt; 1333 cycles/value&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Based on that benchmark, I had buildroot build a new system with a crosstool-ng based toolchain using glibc 2.13. This was somewhat complicated since the gcc 4.6.2 implementation was EXPERIMENTAL. Numerous other problems were encountered, but after a while I was able to get the toolchain built and the packages compiled with neon support for cortex-a9. The SDR software dspserver and widget-server built without problems except for the lack of libgomp in the target rootfs. It ws built ok, and populated into the toolchain's staging area, it just didn't make into the final rootfs. After all was said &amp;amp; done I compared the size of the libraries and executables, glibc's libs were certainly bigger, but there were fewer of them. The packages executables and libs were about the same size. Overall the two rootfs's were very close to the same size at 32MBytes (uClibc), and 40MBytes (glibc), the largest difference being in /usr/share/locale (292KBytes vs 7.7MBytes). In operation the SDR code consumed about the same amount of cpu power too. More to come as I investigate further.&lt;br /&gt;
&lt;br /&gt;
Buildroot with uClibc was certainly easier to get running, but crossstool-ng with glibc more closely compares to what would be available in a &amp;quot;Distro&amp;quot; like ubuntu/angstrom/arch Linux. Performance without neon was not evaluated. Earlier linpack and fftw3 benchmarks showed that without neon floating performance was abysmal. Both builds had fiddly bits, but my lack of programming skill probably weighed in as well.&lt;br /&gt;
&lt;br /&gt;
Building buildroot with either uClibc or glibc (via crosstools-ng) builds all the host tools necessarry, whereas building crosstools-ng alone requires versions of host tools that you may not have on your machine. For example, my desktop 64bit Core i7 is running ubuntu karmic, it can't build crosstools-ng without updating lots of tools, but it can build buildroot with crosstools-ng. However it is currently not possible to change the crosstools-ng configuration in buildroot as it is with busybox or uClibc. It's an inconvenience, but not a show stopper. &lt;br /&gt;
&lt;br /&gt;
== rootfs ==&lt;br /&gt;
&lt;br /&gt;
=== Packages ===&lt;br /&gt;
&lt;br /&gt;
alsa-lib-1.0.24.1&lt;br /&gt;
&lt;br /&gt;
alsa-utils-1.0.24.2 &lt;br /&gt;
&lt;br /&gt;
busybox-1.19.3 &lt;br /&gt;
&lt;br /&gt;
codec2-289 &lt;br /&gt;
&lt;br /&gt;
dbus-1.4.16 &lt;br /&gt;
&lt;br /&gt;
dbus-glib-0.98 &lt;br /&gt;
&lt;br /&gt;
dropbear-2011.54 &lt;br /&gt;
&lt;br /&gt;
expat-2.0.1 &lt;br /&gt;
&lt;br /&gt;
fftw-3.3.1-beta1 &lt;br /&gt;
&lt;br /&gt;
gdb-7.3.1-target &lt;br /&gt;
&lt;br /&gt;
gdbserver-7.3.1 &lt;br /&gt;
&lt;br /&gt;
gettext-0.16.1 &lt;br /&gt;
&lt;br /&gt;
i2c-tools-3.0.3 &lt;br /&gt;
&lt;br /&gt;
input-event-daemon-v0.1.3 &lt;br /&gt;
&lt;br /&gt;
json-c-0.9 &lt;br /&gt;
&lt;br /&gt;
libconfig-1.4.8 &lt;br /&gt;
&lt;br /&gt;
libevent-2.0.14 &lt;br /&gt;
&lt;br /&gt;
libglib2-2.28.8 &lt;br /&gt;
&lt;br /&gt;
libogg-1.2.2 &lt;br /&gt;
&lt;br /&gt;
libsamplerate-0.1.8 &lt;br /&gt;
&lt;br /&gt;
libsndfile-1.0.25 &lt;br /&gt;
&lt;br /&gt;
libtool-2.2.10 &lt;br /&gt;
&lt;br /&gt;
libusb-1.0.8 &lt;br /&gt;
&lt;br /&gt;
libusb-compat-0.1.3 &lt;br /&gt;
&lt;br /&gt;
libxml2-2.7.8 &lt;br /&gt;
&lt;br /&gt;
ncurses-5.7 &lt;br /&gt;
&lt;br /&gt;
ortp-0.18.0 &lt;br /&gt;
&lt;br /&gt;
portaudio-V19 &lt;br /&gt;
&lt;br /&gt;
pulseaudio-1.0 &lt;br /&gt;
&lt;br /&gt;
speex-1.2rc1 &lt;br /&gt;
&lt;br /&gt;
wireless_tools-29 &lt;br /&gt;
&lt;br /&gt;
zlib-1.2.5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ghpsdr3-alex ==&lt;br /&gt;
&lt;br /&gt;
A good introductory guide to ghpsdr &amp;amp; ghpsdr-alex is available:&lt;br /&gt;
&lt;br /&gt;
http://openhpsdr.org/wiki/images/6/63/NewbieGuide.pdf&lt;br /&gt;
&lt;br /&gt;
Familiarity with ghpsdr-alex is useful before starting on cross-compiling bits &amp;amp; pieces of it to run on the PandaBoard.&lt;br /&gt;
&lt;br /&gt;
The normal ghpsdr3-alex package needs QtSDK installed as well a lot of graphic specific librarys. At present, this is beyond the scope of this How-To, and it will be left for another day to produce the GUI part of this, ie. QtRadio. The PandaBoard will only be running the minimal code necessary to have a functional SDR server radio. pulseaudio and portaudio are required for non hpsdr protocol servers, and have been built successfully, however at present they are not used for the widget-server and could be eliminated from the build. Only the widget-server has been tested so far.&lt;br /&gt;
&lt;br /&gt;
This code is built outside of buildroot, but using the buildroot created toolchain. This is done by adding a Makefile to dspserver, DttSP, and widget server. The Makefile has a hardcoded path to the toolchain, so it may (will) be necessary to alter it to fit individual circumstances.  &lt;br /&gt;
&lt;br /&gt;
The various parts of this package have been evolving for quite some time, the ghpsdr3-alex project is the most recent &amp;quot;fork&amp;quot; of the original ghpsdr3 software&lt;br /&gt;
&lt;br /&gt;
http://openhpsdr.org/wiki/index.php?title=Ghpsdr3&lt;br /&gt;
&lt;br /&gt;
https://github.com/alexlee188/ghpsdr3-alex&lt;br /&gt;
&lt;br /&gt;
Although this project is trying not to be a fork, in essence it is, as the code is going in a different direction than the original authors intended. Three cheers for open source....&lt;br /&gt;
&lt;br /&gt;
=== dttsp ===&lt;br /&gt;
&lt;br /&gt;
This code is very mature and does much of the heavy lifting, non fft processing for the SDR stack&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== fftw3 ===&lt;br /&gt;
&lt;br /&gt;
The latest beta of fftw3 added support for ARM neon floating point.&lt;br /&gt;
&lt;br /&gt;
http://www.fftw.org/&lt;br /&gt;
&lt;br /&gt;
This is where the heavy lifting part of the DttSP happens. Somewhat independently evolved by the fftw3 authors and Vesperix&lt;br /&gt;
&lt;br /&gt;
http://www.vesperix.com/arm/fftw-arm/&lt;br /&gt;
&lt;br /&gt;
fftw3 3.3.1-beta1 is a critical part of the SDR stack. Without neon support, SDR on ARM v7-a is not possible.   &lt;br /&gt;
&lt;br /&gt;
=== widget-server ===&lt;br /&gt;
&lt;br /&gt;
The SDR-Widget project &lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/sdr-widget/&lt;br /&gt;
&lt;br /&gt;
http://www.yoyodyneconsulting.ca/pages/SDR-Widget.html&lt;br /&gt;
&lt;br /&gt;
Sought to develop an Atmel AVR AT32UC3A3256 based USB UAC2 sound &amp;quot;card&amp;quot;. Able to digitize at 24bits and 192000 samples/second, this project provided a &amp;quot;standard of comparison&amp;quot; noise floor of better than -130dbm. Subsequent firmware development allowed a single firmware image to support UAC1, UAC2 and hpsdr protocols, allowing Linux, MacOSX, and Windows users to benefit.  &lt;br /&gt;
&lt;br /&gt;
The widget-server driver supports the hpsdr protocol allowing all users 24bit 192000 samples/second operation. The following patch removes some dead code and allows claibration of the Si570 VFO chip. This is the direct interface to the SDR harware, and provides a standard ABI to the upper layer, dspserver&lt;br /&gt;
&lt;br /&gt;
==== patch to orig ====&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== dspserver ===&lt;br /&gt;
&lt;br /&gt;
The dspserver program is the &amp;quot;middle-ware&amp;quot; between the hardware interface code, many different hardware radios are supported, through different &amp;quot;driver&amp;quot; programs:&lt;br /&gt;
&lt;br /&gt;
hiqsdr http://www.hiqsdr.org/&lt;br /&gt;
&lt;br /&gt;
perseus http://microtelecom.it/perseus/&lt;br /&gt;
&lt;br /&gt;
sdriq http://www.rfspace.com/RFSPACE/SDR-IQ.html&lt;br /&gt;
&lt;br /&gt;
softrock http://www.softrockradio.org/&lt;br /&gt;
&lt;br /&gt;
widget-server http://www.yoyodyneconsulting.ca/pages/SDR-Widget.html&lt;br /&gt;
&lt;br /&gt;
hpsdrsvr http://openhpsdr.org/index.php&lt;br /&gt;
&lt;br /&gt;
sdr1000 http://www.flex-radio.com/Products.aspx?topic=sdr1k&lt;br /&gt;
&lt;br /&gt;
usrp http://www.ettus.com/&lt;br /&gt;
&lt;br /&gt;
dspserver includes DttSP and both must be compiled with neon enabled. The toolchains built by buildroot and the associated libraries all need this enabled.&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== QtRadio ===&lt;br /&gt;
&lt;br /&gt;
QtRadio is the GUI interface for the SDR package. In the PandaBoard implementation, no such layer exists. In the future, once ubuntu is stabilised with full GPU acceleration, a GUI might be possible. OpenCL and/or OpenGL are essential. &lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=qn479WawT3U&amp;amp;feature=youtu.be&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ==&lt;br /&gt;
&lt;br /&gt;
Tested with PandaBoard EA3 and PandaBoard ES EB3.&lt;br /&gt;
&lt;br /&gt;
== SDR Widget Lite Alpha ==&lt;br /&gt;
&lt;br /&gt;
The Widget Lite Alpha boards were capture only, the Widget Beta includes audio out and supports the same common firmware and protocol as the Alpha board.&lt;br /&gt;
&lt;br /&gt;
== SDR Widget Beta ==&lt;br /&gt;
&lt;br /&gt;
http://www.yoyodyneconsulting.ca/images/SDR_Widget_Lite_Alpha2_w_LCD.JPG&lt;br /&gt;
&lt;br /&gt;
== SoftRock Lite+USB Xtall v9.0 ==&lt;br /&gt;
&lt;br /&gt;
http://wb5rvz.com/sdr/RX_V9_0/&lt;br /&gt;
&lt;br /&gt;
http://pages.cs.wisc.edu/~timc/e/sdr.html&lt;br /&gt;
&lt;br /&gt;
=== mod to directly control the Si570 from the Widget ===&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_build_SDR</id>
		<title>Panda How to build SDR</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_build_SDR"/>
				<updated>2012-02-19T21:36:23Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: /* Buildroot Internal toolchain  with uClibc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
What I have done is still very much a work in progress. The PandaBoard,&lt;br /&gt;
OMAP4, platform is a very powerful and flexible system, but it has its&lt;br /&gt;
limitations. I have been doing work with the PandaBoard since about&lt;br /&gt;
November 2010, so I've seen the kernel and distributions move from&lt;br /&gt;
barely runable to very capable during that time.&lt;br /&gt;
&lt;br /&gt;
For my SDR work, I run a home built &amp;quot;distro&amp;quot; which I build with&lt;br /&gt;
buildroot. It has the advantages of Gentoo as everything is built from&lt;br /&gt;
source, but it is not quite &amp;quot;plug &amp;amp; play&amp;quot;. There is a lot of fiddling&lt;br /&gt;
that I had to do to get all the dependences and libraries that dspserver&lt;br /&gt;
and widget-server need. I am currently not running QtRadio on the&lt;br /&gt;
PandaBoard, and don't intend to, for a while at least. The DSP software&lt;br /&gt;
needs all the CPU power it can get.&lt;br /&gt;
  &lt;br /&gt;
The major problem that most folks have run into trying to get SDR&lt;br /&gt;
software running on a non-x86 platform is dealing with the lack of FPU.&lt;br /&gt;
Anything without an FPU is just a waste of time, software floating point&lt;br /&gt;
emulation is just tooooooooo slow. Custom code to do SDR with fixed&lt;br /&gt;
point arithmetic is possible and has been done. But, most recent efforts&lt;br /&gt;
to run something like ghpsdr or ghpsdr3-alex have met with dismal&lt;br /&gt;
failure due to the fact that folks will try to boot up Ubuntu on their&lt;br /&gt;
platform of choice, install the build-essentials, and try to build the&lt;br /&gt;
SDR software like they would on their desktop. While this may result in&lt;br /&gt;
a runnable piece of code, there is currently no support for an FPU. So&lt;br /&gt;
if the software runs at all, the DSP functions will not be able to keep&lt;br /&gt;
up with the incoming data.&lt;br /&gt;
&lt;br /&gt;
This is where I diverged from the mainstream. The key event was the&lt;br /&gt;
availability of FFTW3 3.3.1-beta1 which includes support for the neon&lt;br /&gt;
FPU that is present on the OMAP4 4430/4460/4470. Unfortunately ARM made&lt;br /&gt;
this co-processor an option on Cortex-A9 implementations, and Nvidia&lt;br /&gt;
chose not to have it on Tegra2, so what I wound up with is somewhat Ti&lt;br /&gt;
specific.&lt;br /&gt;
&lt;br /&gt;
I was able to cross compile fftw3 and run several benchmarks on my&lt;br /&gt;
PandaBoard ES and was quite impressed with the result vs. what Vesprerix&lt;br /&gt;
had reported on with their implementation (fork) of fftw3. Once I was&lt;br /&gt;
convinced that the fft routines on which DTTSP depend were &amp;quot;good enough&amp;quot;&lt;br /&gt;
I proceeded to put together a buildroot build that was tuned to using&lt;br /&gt;
&amp;quot;-mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp&amp;quot;. There are lots of&lt;br /&gt;
fiddly cross-compiler options and libraries that have to be checked to&lt;br /&gt;
be sure they actually are using neon (this work has not been completed&lt;br /&gt;
yet).&lt;br /&gt;
After the cross environment was working I went about getting dspserver,&lt;br /&gt;
widget-server and all their dependencies cross-compiled, there were a&lt;br /&gt;
lot. The most troublesome was Codec2, which I still have to hand tweak&lt;br /&gt;
to get to cross-compile properly. My first effort has Codec2 support&lt;br /&gt;
patched out, but the current code does include it. The dspserver and DttSP&lt;br /&gt;
code is identical to what is in the git repository, except for the Makefile &lt;br /&gt;
which is customized to compile with my toolchain. I have modified the &lt;br /&gt;
widget-server code to remove some dead code and add calibration for the Si570.&lt;br /&gt;
&lt;br /&gt;
Another issue that I haven't dug into yet is Jack, it is necessary for&lt;br /&gt;
non-hpsdr protocol servers. Jack2 uses waf (a really old version 1.5.0 at that)&lt;br /&gt;
instead of make. I am able to cross compile Jack1 (0.121.3) since it uses make, &lt;br /&gt;
but Jack2 needs some help. Pulse audio and Port audio were no problem.&lt;br /&gt;
&lt;br /&gt;
There will be an sd card image that one can &amp;quot;dd&amp;quot; onto a blank card.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For SDR work, gcc 4.6.2 is a must.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
I build the kernel and u-boot/SPL outside of buildroot, but use the buildroot toolchain. This may change in the near future, as buildroot will soon support the PandaBoard as a target.&lt;br /&gt;
&lt;br /&gt;
== Kernel==&lt;br /&gt;
&lt;br /&gt;
=== kernel 3.3-rc2 .config ===&lt;br /&gt;
&lt;br /&gt;
== u-boot/MLO/SPL ==&lt;br /&gt;
&lt;br /&gt;
== Buildroot Internal toolchain  with uClibc ==&lt;br /&gt;
&lt;br /&gt;
Start by downloading buildroot and getting all the prerequisites installed on your build machine.&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.buildroot.net/buildroot &lt;br /&gt;
&lt;br /&gt;
Then apply the following patch from the main buildroot directory&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001_add_new_packages.patch&lt;br /&gt;
&lt;br /&gt;
 make busybox-menuconfig&lt;br /&gt;
&lt;br /&gt;
Exit the menuconfig, saving if asked to. This will download (if necessary) and get busybox ready for configuration.&lt;br /&gt;
&lt;br /&gt;
 make uclibc-menuconfig&lt;br /&gt;
&lt;br /&gt;
Exit the menuconfig, saving if asked to. This will download (if necessary) and get uClibc ready for configuration.&lt;br /&gt;
&lt;br /&gt;
Then replace the config files for buildroot, busybox, and uClibc like this&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0002_replace_configs.patch&lt;br /&gt;
&lt;br /&gt;
Build everything&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
After the build completes you will have a toolchain, packages and libraries except for codec2. This takes a bit of fiddling with to cross compile.&lt;br /&gt;
&lt;br /&gt;
Download http://freetel.svn.sourceforge.net/viewvc/freetel/codec2/?view=tar&lt;br /&gt;
&lt;br /&gt;
Untar in a convenient place, cd to that place, run ./configure, then make. This will build codec2/src/generate_codebook for your desktop platform, which will be needed later.&lt;br /&gt;
&lt;br /&gt;
Now run make menuconfig in the buildroot main dir, go to Package Selection for Target --&amp;gt; Libraries --&amp;gt; Other and select codec2&lt;br /&gt;
&lt;br /&gt;
Run make again from the main buildroot dir and wait till the build fails, which it should.&lt;br /&gt;
&lt;br /&gt;
Now copy the generate_codebook file from codec2/src/ to buildroot/output/build/codec2-289/src/&lt;br /&gt;
&lt;br /&gt;
Now back to the main buildroot dir and run make again. This will finish building and the codec2 library.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buildroot Crosstool-ng toolchain with glibc ===&lt;br /&gt;
&lt;br /&gt;
=== buildroot .config ===&lt;br /&gt;
&lt;br /&gt;
=== crosstool-ng config ===&lt;br /&gt;
&lt;br /&gt;
== uClibc vs glibc size and speed in a real world example ==&lt;br /&gt;
&lt;br /&gt;
After building the first PandaSDR system, I was curious as to how things might change if I used glibc. The first thing I did was do a bench mark on the floating point performance of both. uClibc was woefully inadequate in sin/cos &lt;br /&gt;
&lt;br /&gt;
http://gruntthepeon.free.fr/ssemath/neon_mathfun.html&lt;br /&gt;
&lt;br /&gt;
with this benchmark compiled with glibc the performance numbers matched closely with the website, however with uClibc the sinf/cosf numbers were off.&lt;br /&gt;
&lt;br /&gt;
Instead of &amp;quot;2.0 millions of vector evaluations/second -&amp;gt; 121 cycles/value&amp;quot; I got &amp;quot;.1 millions of vector evaluations/second -&amp;gt; 1333 cycles/value&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Based on that benchmark, I had buildroot build a new system with a crosstool-ng based toolchain using glibc 2.13. This was somewhat complicated since the gcc 4.6.2 implementation was EXPERIMENTAL. Numerous other problems were encountered, but after a while I was able to get the toolchain built and the packages compiled with neon support for cortex-a9. The SDR software dspserver and widget-server built without problems except for the lack of libgomp in the target rootfs. It ws built ok, and populated into the toolchain's staging area, it just didn't make into the final rootfs. After all was said &amp;amp; done I compared the size of the libraries and executables, glibc's libs were certainly bigger, but there were fewer of them. The packages executables and libs were about the same size. Overall the two rootfs's were very close to the same size at 32MBytes (uClibc), and 40MBytes (glibc), the largest difference being in /usr/share/locale (292KBytes vs 7.7MBytes). In operation the SDR code consumed about the same amount of cpu power too. More to come as I investigate further.&lt;br /&gt;
&lt;br /&gt;
Buildroot with uClibc was certainly easier to get running, but crossstool-ng with glibc more closely compares to what would be available in a &amp;quot;Distro&amp;quot; like ubuntu/angstrom/arch Linux. Performance without neon was not evaluated. Earlier linpack and fftw3 benchmarks showed that without neon floating performance was abysmal. Both builds had fiddly bits, but my lack of programming skill probably weighed in as well.&lt;br /&gt;
&lt;br /&gt;
Building buildroot with either uClibc or glibc (via crosstools-ng) builds all the host tools necessarry, whereas building crosstools-ng alone requires versions of host tools that you may not have on your machine. For example, my desktop 64bit Core i7 is running ubuntu karmic, it can't build crosstools-ng without updating lots of tools, but it can build buildroot with crosstools-ng. However it is currently not possible to change the crosstools-ng configuration in buildroot as it is with busybox or uClibc. It's an inconvenience, but not a show stopper. &lt;br /&gt;
&lt;br /&gt;
== rootfs ==&lt;br /&gt;
&lt;br /&gt;
=== Packages ===&lt;br /&gt;
&lt;br /&gt;
alsa-lib-1.0.24.1&lt;br /&gt;
&lt;br /&gt;
alsa-utils-1.0.24.2 &lt;br /&gt;
&lt;br /&gt;
busybox-1.19.3 &lt;br /&gt;
&lt;br /&gt;
codec2-289 &lt;br /&gt;
&lt;br /&gt;
dbus-1.4.16 &lt;br /&gt;
&lt;br /&gt;
dbus-glib-0.98 &lt;br /&gt;
&lt;br /&gt;
dropbear-2011.54 &lt;br /&gt;
&lt;br /&gt;
expat-2.0.1 &lt;br /&gt;
&lt;br /&gt;
fftw-3.3.1-beta1 &lt;br /&gt;
&lt;br /&gt;
gdb-7.3.1-target &lt;br /&gt;
&lt;br /&gt;
gdbserver-7.3.1 &lt;br /&gt;
&lt;br /&gt;
gettext-0.16.1 &lt;br /&gt;
&lt;br /&gt;
i2c-tools-3.0.3 &lt;br /&gt;
&lt;br /&gt;
input-event-daemon-v0.1.3 &lt;br /&gt;
&lt;br /&gt;
json-c-0.9 &lt;br /&gt;
&lt;br /&gt;
libconfig-1.4.8 &lt;br /&gt;
&lt;br /&gt;
libevent-2.0.14 &lt;br /&gt;
&lt;br /&gt;
libglib2-2.28.8 &lt;br /&gt;
&lt;br /&gt;
libogg-1.2.2 &lt;br /&gt;
&lt;br /&gt;
libsamplerate-0.1.8 &lt;br /&gt;
&lt;br /&gt;
libsndfile-1.0.25 &lt;br /&gt;
&lt;br /&gt;
libtool-2.2.10 &lt;br /&gt;
&lt;br /&gt;
libusb-1.0.8 &lt;br /&gt;
&lt;br /&gt;
libusb-compat-0.1.3 &lt;br /&gt;
&lt;br /&gt;
libxml2-2.7.8 &lt;br /&gt;
&lt;br /&gt;
ncurses-5.7 &lt;br /&gt;
&lt;br /&gt;
ortp-0.18.0 &lt;br /&gt;
&lt;br /&gt;
portaudio-V19 &lt;br /&gt;
&lt;br /&gt;
pulseaudio-1.0 &lt;br /&gt;
&lt;br /&gt;
speex-1.2rc1 &lt;br /&gt;
&lt;br /&gt;
wireless_tools-29 &lt;br /&gt;
&lt;br /&gt;
zlib-1.2.5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ghpsdr3-alex ==&lt;br /&gt;
&lt;br /&gt;
A good introductory guide to ghpsdr &amp;amp; ghpsdr-alex is available:&lt;br /&gt;
&lt;br /&gt;
http://openhpsdr.org/wiki/images/6/63/NewbieGuide.pdf&lt;br /&gt;
&lt;br /&gt;
Familiarity with ghpsdr-alex is useful before starting on cross-compiling bits &amp;amp; pieces of it to run on the PandaBoard.&lt;br /&gt;
&lt;br /&gt;
The normal ghpsdr3-alex package needs QtSDK installed as well a lot of graphic specific librarys. At present, this is beyond the scope of this How-To, and it will be left for another day to produce the GUI part of this, ie. QtRadio. The PandaBoard will only be running the minimal code necessary to have a functional SDR server radio. pulseaudio and portaudio are required for non hpsdr protocol servers, and have been built successfully, however at present they are not used for the widget-server and could be eliminated from the build. Only the widget-server has been tested so far.&lt;br /&gt;
&lt;br /&gt;
This code is built outside of buildroot, but using the buildroot created toolchain. This is done by adding a Makefile to dspserver, DttSP, and widget server. The Makefile has a hardcoded path to the toolchain, so it may (will) be necessary to alter it to fit individual circumstances.  &lt;br /&gt;
&lt;br /&gt;
The various parts of this package have been evolving for quite some time, the ghpsdr3-alex project is the most recent &amp;quot;fork&amp;quot; of the original ghpsdr3 software&lt;br /&gt;
&lt;br /&gt;
http://openhpsdr.org/wiki/index.php?title=Ghpsdr3&lt;br /&gt;
&lt;br /&gt;
https://github.com/alexlee188/ghpsdr3-alex&lt;br /&gt;
&lt;br /&gt;
Although this project is trying not to be a fork, in essence it is, as the code is going in a different direction than the original authors intended. Three cheers for open source....&lt;br /&gt;
&lt;br /&gt;
=== dttsp ===&lt;br /&gt;
&lt;br /&gt;
This code is very mature and does much of the heavy lifting, non fft processing for the SDR stack&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== fftw3 ===&lt;br /&gt;
&lt;br /&gt;
The latest beta of fftw3 added support for ARM neon floating point.&lt;br /&gt;
&lt;br /&gt;
http://www.fftw.org/&lt;br /&gt;
&lt;br /&gt;
This is where the heavy lifting part of the DttSP happens. Somewhat independently evolved by the fftw3 authors and Vesperix&lt;br /&gt;
&lt;br /&gt;
http://www.vesperix.com/arm/fftw-arm/&lt;br /&gt;
&lt;br /&gt;
fftw3 3.3.1-beta1 is a critical part of the SDR stack. Without neon support, SDR on ARM v7-a is not possible.   &lt;br /&gt;
&lt;br /&gt;
=== widget-server ===&lt;br /&gt;
&lt;br /&gt;
The SDR-Widget project &lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/sdr-widget/&lt;br /&gt;
&lt;br /&gt;
http://www.yoyodyneconsulting.ca/pages/SDR-Widget.html&lt;br /&gt;
&lt;br /&gt;
Sought to develop an Atmel AVR AT32UC3A3256 based USB UAC2 sound &amp;quot;card&amp;quot;. Able to digitize at 24bits and 192000 samples/second, this project provided a &amp;quot;standard of comparison&amp;quot; noise floor of better than -130dbm. Subsequent firmware development allowed a single firmware image to support UAC1, UAC2 and hpsdr protocols, allowing Linux, MacOSX, and Windows users to benefit.  &lt;br /&gt;
&lt;br /&gt;
The widget-server driver supports the hpsdr protocol allowing all users 24bit 192000 samples/second operation. The following patch removes some dead code and allows claibration of the Si570 VFO chip. This is the direct interface to the SDR harware, and provides a standard ABI to the upper layer, dspserver&lt;br /&gt;
&lt;br /&gt;
==== patch to orig ====&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== dspserver ===&lt;br /&gt;
&lt;br /&gt;
The dspserver program is the &amp;quot;middle-ware&amp;quot; between the hardware interface code, many different hardware radios are supported, through different &amp;quot;driver&amp;quot; programs:&lt;br /&gt;
&lt;br /&gt;
hiqsdr http://www.hiqsdr.org/&lt;br /&gt;
&lt;br /&gt;
perseus http://microtelecom.it/perseus/&lt;br /&gt;
&lt;br /&gt;
sdriq http://www.rfspace.com/RFSPACE/SDR-IQ.html&lt;br /&gt;
&lt;br /&gt;
softrock http://www.softrockradio.org/&lt;br /&gt;
&lt;br /&gt;
widget-server http://www.yoyodyneconsulting.ca/pages/SDR-Widget.html&lt;br /&gt;
&lt;br /&gt;
hpsdrsvr http://openhpsdr.org/index.php&lt;br /&gt;
&lt;br /&gt;
sdr1000 http://www.flex-radio.com/Products.aspx?topic=sdr1k&lt;br /&gt;
&lt;br /&gt;
usrp http://www.ettus.com/&lt;br /&gt;
&lt;br /&gt;
dspserver includes DttSP and both must be compiled with neon enabled. The toolchains built by buildroot and the associated libraries all need this enabled.&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== QtRadio ===&lt;br /&gt;
&lt;br /&gt;
QtRadio is the GUI interface for the SDR package. In the PandaBoard implementation, no such layer exists. In the future, once ubuntu is stabilised with full GPU acceleration, a GUI might be possible. OpenCL and/or OpenGL are essential. &lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=qn479WawT3U&amp;amp;feature=youtu.be&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ==&lt;br /&gt;
&lt;br /&gt;
Tested with PandaBoard EA3 and PandaBoard ES EB3.&lt;br /&gt;
&lt;br /&gt;
== SDR Widget Lite Alpha ==&lt;br /&gt;
&lt;br /&gt;
The Widget Lite Alpha boards were capture only, the Widget Beta includes audio out and supports the same common firmware and protocol as the Alpha board.&lt;br /&gt;
&lt;br /&gt;
== SDR Widget Beta ==&lt;br /&gt;
&lt;br /&gt;
http://www.yoyodyneconsulting.ca/images/SDR_Widget_Lite_Alpha2_w_LCD.JPG&lt;br /&gt;
&lt;br /&gt;
== SoftRock Lite+USB Xtall v9.0 ==&lt;br /&gt;
&lt;br /&gt;
http://wb5rvz.com/sdr/RX_V9_0/&lt;br /&gt;
&lt;br /&gt;
http://pages.cs.wisc.edu/~timc/e/sdr.html&lt;br /&gt;
&lt;br /&gt;
=== mod to directly control the Si570 from the Widget ===&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_build_SDR</id>
		<title>Panda How to build SDR</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_build_SDR"/>
				<updated>2012-02-19T21:30:54Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: /* Buildroot Internal toolchain  with uClibc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
What I have done is still very much a work in progress. The PandaBoard,&lt;br /&gt;
OMAP4, platform is a very powerful and flexible system, but it has its&lt;br /&gt;
limitations. I have been doing work with the PandaBoard since about&lt;br /&gt;
November 2010, so I've seen the kernel and distributions move from&lt;br /&gt;
barely runable to very capable during that time.&lt;br /&gt;
&lt;br /&gt;
For my SDR work, I run a home built &amp;quot;distro&amp;quot; which I build with&lt;br /&gt;
buildroot. It has the advantages of Gentoo as everything is built from&lt;br /&gt;
source, but it is not quite &amp;quot;plug &amp;amp; play&amp;quot;. There is a lot of fiddling&lt;br /&gt;
that I had to do to get all the dependences and libraries that dspserver&lt;br /&gt;
and widget-server need. I am currently not running QtRadio on the&lt;br /&gt;
PandaBoard, and don't intend to, for a while at least. The DSP software&lt;br /&gt;
needs all the CPU power it can get.&lt;br /&gt;
  &lt;br /&gt;
The major problem that most folks have run into trying to get SDR&lt;br /&gt;
software running on a non-x86 platform is dealing with the lack of FPU.&lt;br /&gt;
Anything without an FPU is just a waste of time, software floating point&lt;br /&gt;
emulation is just tooooooooo slow. Custom code to do SDR with fixed&lt;br /&gt;
point arithmetic is possible and has been done. But, most recent efforts&lt;br /&gt;
to run something like ghpsdr or ghpsdr3-alex have met with dismal&lt;br /&gt;
failure due to the fact that folks will try to boot up Ubuntu on their&lt;br /&gt;
platform of choice, install the build-essentials, and try to build the&lt;br /&gt;
SDR software like they would on their desktop. While this may result in&lt;br /&gt;
a runnable piece of code, there is currently no support for an FPU. So&lt;br /&gt;
if the software runs at all, the DSP functions will not be able to keep&lt;br /&gt;
up with the incoming data.&lt;br /&gt;
&lt;br /&gt;
This is where I diverged from the mainstream. The key event was the&lt;br /&gt;
availability of FFTW3 3.3.1-beta1 which includes support for the neon&lt;br /&gt;
FPU that is present on the OMAP4 4430/4460/4470. Unfortunately ARM made&lt;br /&gt;
this co-processor an option on Cortex-A9 implementations, and Nvidia&lt;br /&gt;
chose not to have it on Tegra2, so what I wound up with is somewhat Ti&lt;br /&gt;
specific.&lt;br /&gt;
&lt;br /&gt;
I was able to cross compile fftw3 and run several benchmarks on my&lt;br /&gt;
PandaBoard ES and was quite impressed with the result vs. what Vesprerix&lt;br /&gt;
had reported on with their implementation (fork) of fftw3. Once I was&lt;br /&gt;
convinced that the fft routines on which DTTSP depend were &amp;quot;good enough&amp;quot;&lt;br /&gt;
I proceeded to put together a buildroot build that was tuned to using&lt;br /&gt;
&amp;quot;-mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp&amp;quot;. There are lots of&lt;br /&gt;
fiddly cross-compiler options and libraries that have to be checked to&lt;br /&gt;
be sure they actually are using neon (this work has not been completed&lt;br /&gt;
yet).&lt;br /&gt;
After the cross environment was working I went about getting dspserver,&lt;br /&gt;
widget-server and all their dependencies cross-compiled, there were a&lt;br /&gt;
lot. The most troublesome was Codec2, which I still have to hand tweak&lt;br /&gt;
to get to cross-compile properly. My first effort has Codec2 support&lt;br /&gt;
patched out, but the current code does include it. The dspserver and DttSP&lt;br /&gt;
code is identical to what is in the git repository, except for the Makefile &lt;br /&gt;
which is customized to compile with my toolchain. I have modified the &lt;br /&gt;
widget-server code to remove some dead code and add calibration for the Si570.&lt;br /&gt;
&lt;br /&gt;
Another issue that I haven't dug into yet is Jack, it is necessary for&lt;br /&gt;
non-hpsdr protocol servers. Jack2 uses waf (a really old version 1.5.0 at that)&lt;br /&gt;
instead of make. I am able to cross compile Jack1 (0.121.3) since it uses make, &lt;br /&gt;
but Jack2 needs some help. Pulse audio and Port audio were no problem.&lt;br /&gt;
&lt;br /&gt;
There will be an sd card image that one can &amp;quot;dd&amp;quot; onto a blank card.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For SDR work, gcc 4.6.2 is a must.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
I build the kernel and u-boot/SPL outside of buildroot, but use the buildroot toolchain. This may change in the near future, as buildroot will soon support the PandaBoard as a target.&lt;br /&gt;
&lt;br /&gt;
== Kernel==&lt;br /&gt;
&lt;br /&gt;
=== kernel 3.3-rc2 .config ===&lt;br /&gt;
&lt;br /&gt;
== u-boot/MLO/SPL ==&lt;br /&gt;
&lt;br /&gt;
== Buildroot Internal toolchain  with uClibc ==&lt;br /&gt;
&lt;br /&gt;
Start by downloading buildroot and getting all the prerequisites installed on your build machine.&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.buildroot.net/buildroot &lt;br /&gt;
&lt;br /&gt;
Then apply the following patch from the main buildroot directory&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001_add_new_packages.patch&lt;br /&gt;
&lt;br /&gt;
Then replace the config files for buildroot, busybox, and uClibc like this&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0002_replace_configs.patch&lt;br /&gt;
&lt;br /&gt;
Build everything&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
After the build completes you will have a toolchain, packages and libraries except for codec2. This takes a bit of fiddling with to cross compile.&lt;br /&gt;
&lt;br /&gt;
Download http://freetel.svn.sourceforge.net/viewvc/freetel/codec2/?view=tar&lt;br /&gt;
&lt;br /&gt;
Untar in a convenient place, cd to that place, run ./configure, then make. This will build codec2/src/generate_codebook for your desktop platform, which will be needed later.&lt;br /&gt;
&lt;br /&gt;
Now run make menuconfig in the buildroot main dir, go to Package Selection for Target --&amp;gt; Libraries --&amp;gt; Other and select codec2&lt;br /&gt;
&lt;br /&gt;
Run make again from the main buildroot dir and wait till the build fails, which it should.&lt;br /&gt;
&lt;br /&gt;
Now copy the generate_codebook file from codec2/src/ to buildroot/output/build/codec2-289/src/&lt;br /&gt;
&lt;br /&gt;
Now back to the main buildroot dir and run make again. This will finish building and the codec2 library.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buildroot Crosstool-ng toolchain with glibc ===&lt;br /&gt;
&lt;br /&gt;
=== buildroot .config ===&lt;br /&gt;
&lt;br /&gt;
=== crosstool-ng config ===&lt;br /&gt;
&lt;br /&gt;
== uClibc vs glibc size and speed in a real world example ==&lt;br /&gt;
&lt;br /&gt;
After building the first PandaSDR system, I was curious as to how things might change if I used glibc. The first thing I did was do a bench mark on the floating point performance of both. uClibc was woefully inadequate in sin/cos &lt;br /&gt;
&lt;br /&gt;
http://gruntthepeon.free.fr/ssemath/neon_mathfun.html&lt;br /&gt;
&lt;br /&gt;
with this benchmark compiled with glibc the performance numbers matched closely with the website, however with uClibc the sinf/cosf numbers were off.&lt;br /&gt;
&lt;br /&gt;
Instead of &amp;quot;2.0 millions of vector evaluations/second -&amp;gt; 121 cycles/value&amp;quot; I got &amp;quot;.1 millions of vector evaluations/second -&amp;gt; 1333 cycles/value&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Based on that benchmark, I had buildroot build a new system with a crosstool-ng based toolchain using glibc 2.13. This was somewhat complicated since the gcc 4.6.2 implementation was EXPERIMENTAL. Numerous other problems were encountered, but after a while I was able to get the toolchain built and the packages compiled with neon support for cortex-a9. The SDR software dspserver and widget-server built without problems except for the lack of libgomp in the target rootfs. It ws built ok, and populated into the toolchain's staging area, it just didn't make into the final rootfs. After all was said &amp;amp; done I compared the size of the libraries and executables, glibc's libs were certainly bigger, but there were fewer of them. The packages executables and libs were about the same size. Overall the two rootfs's were very close to the same size at 32MBytes (uClibc), and 40MBytes (glibc), the largest difference being in /usr/share/locale (292KBytes vs 7.7MBytes). In operation the SDR code consumed about the same amount of cpu power too. More to come as I investigate further.&lt;br /&gt;
&lt;br /&gt;
Buildroot with uClibc was certainly easier to get running, but crossstool-ng with glibc more closely compares to what would be available in a &amp;quot;Distro&amp;quot; like ubuntu/angstrom/arch Linux. Performance without neon was not evaluated. Earlier linpack and fftw3 benchmarks showed that without neon floating performance was abysmal. Both builds had fiddly bits, but my lack of programming skill probably weighed in as well.&lt;br /&gt;
&lt;br /&gt;
Building buildroot with either uClibc or glibc (via crosstools-ng) builds all the host tools necessarry, whereas building crosstools-ng alone requires versions of host tools that you may not have on your machine. For example, my desktop 64bit Core i7 is running ubuntu karmic, it can't build crosstools-ng without updating lots of tools, but it can build buildroot with crosstools-ng. However it is currently not possible to change the crosstools-ng configuration in buildroot as it is with busybox or uClibc. It's an inconvenience, but not a show stopper. &lt;br /&gt;
&lt;br /&gt;
== rootfs ==&lt;br /&gt;
&lt;br /&gt;
=== Packages ===&lt;br /&gt;
&lt;br /&gt;
alsa-lib-1.0.24.1&lt;br /&gt;
&lt;br /&gt;
alsa-utils-1.0.24.2 &lt;br /&gt;
&lt;br /&gt;
busybox-1.19.3 &lt;br /&gt;
&lt;br /&gt;
codec2-289 &lt;br /&gt;
&lt;br /&gt;
dbus-1.4.16 &lt;br /&gt;
&lt;br /&gt;
dbus-glib-0.98 &lt;br /&gt;
&lt;br /&gt;
dropbear-2011.54 &lt;br /&gt;
&lt;br /&gt;
expat-2.0.1 &lt;br /&gt;
&lt;br /&gt;
fftw-3.3.1-beta1 &lt;br /&gt;
&lt;br /&gt;
gdb-7.3.1-target &lt;br /&gt;
&lt;br /&gt;
gdbserver-7.3.1 &lt;br /&gt;
&lt;br /&gt;
gettext-0.16.1 &lt;br /&gt;
&lt;br /&gt;
i2c-tools-3.0.3 &lt;br /&gt;
&lt;br /&gt;
input-event-daemon-v0.1.3 &lt;br /&gt;
&lt;br /&gt;
json-c-0.9 &lt;br /&gt;
&lt;br /&gt;
libconfig-1.4.8 &lt;br /&gt;
&lt;br /&gt;
libevent-2.0.14 &lt;br /&gt;
&lt;br /&gt;
libglib2-2.28.8 &lt;br /&gt;
&lt;br /&gt;
libogg-1.2.2 &lt;br /&gt;
&lt;br /&gt;
libsamplerate-0.1.8 &lt;br /&gt;
&lt;br /&gt;
libsndfile-1.0.25 &lt;br /&gt;
&lt;br /&gt;
libtool-2.2.10 &lt;br /&gt;
&lt;br /&gt;
libusb-1.0.8 &lt;br /&gt;
&lt;br /&gt;
libusb-compat-0.1.3 &lt;br /&gt;
&lt;br /&gt;
libxml2-2.7.8 &lt;br /&gt;
&lt;br /&gt;
ncurses-5.7 &lt;br /&gt;
&lt;br /&gt;
ortp-0.18.0 &lt;br /&gt;
&lt;br /&gt;
portaudio-V19 &lt;br /&gt;
&lt;br /&gt;
pulseaudio-1.0 &lt;br /&gt;
&lt;br /&gt;
speex-1.2rc1 &lt;br /&gt;
&lt;br /&gt;
wireless_tools-29 &lt;br /&gt;
&lt;br /&gt;
zlib-1.2.5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ghpsdr3-alex ==&lt;br /&gt;
&lt;br /&gt;
A good introductory guide to ghpsdr &amp;amp; ghpsdr-alex is available:&lt;br /&gt;
&lt;br /&gt;
http://openhpsdr.org/wiki/images/6/63/NewbieGuide.pdf&lt;br /&gt;
&lt;br /&gt;
Familiarity with ghpsdr-alex is useful before starting on cross-compiling bits &amp;amp; pieces of it to run on the PandaBoard.&lt;br /&gt;
&lt;br /&gt;
The normal ghpsdr3-alex package needs QtSDK installed as well a lot of graphic specific librarys. At present, this is beyond the scope of this How-To, and it will be left for another day to produce the GUI part of this, ie. QtRadio. The PandaBoard will only be running the minimal code necessary to have a functional SDR server radio. pulseaudio and portaudio are required for non hpsdr protocol servers, and have been built successfully, however at present they are not used for the widget-server and could be eliminated from the build. Only the widget-server has been tested so far.&lt;br /&gt;
&lt;br /&gt;
This code is built outside of buildroot, but using the buildroot created toolchain. This is done by adding a Makefile to dspserver, DttSP, and widget server. The Makefile has a hardcoded path to the toolchain, so it may (will) be necessary to alter it to fit individual circumstances.  &lt;br /&gt;
&lt;br /&gt;
The various parts of this package have been evolving for quite some time, the ghpsdr3-alex project is the most recent &amp;quot;fork&amp;quot; of the original ghpsdr3 software&lt;br /&gt;
&lt;br /&gt;
http://openhpsdr.org/wiki/index.php?title=Ghpsdr3&lt;br /&gt;
&lt;br /&gt;
https://github.com/alexlee188/ghpsdr3-alex&lt;br /&gt;
&lt;br /&gt;
Although this project is trying not to be a fork, in essence it is, as the code is going in a different direction than the original authors intended. Three cheers for open source....&lt;br /&gt;
&lt;br /&gt;
=== dttsp ===&lt;br /&gt;
&lt;br /&gt;
This code is very mature and does much of the heavy lifting, non fft processing for the SDR stack&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== fftw3 ===&lt;br /&gt;
&lt;br /&gt;
The latest beta of fftw3 added support for ARM neon floating point.&lt;br /&gt;
&lt;br /&gt;
http://www.fftw.org/&lt;br /&gt;
&lt;br /&gt;
This is where the heavy lifting part of the DttSP happens. Somewhat independently evolved by the fftw3 authors and Vesperix&lt;br /&gt;
&lt;br /&gt;
http://www.vesperix.com/arm/fftw-arm/&lt;br /&gt;
&lt;br /&gt;
fftw3 3.3.1-beta1 is a critical part of the SDR stack. Without neon support, SDR on ARM v7-a is not possible.   &lt;br /&gt;
&lt;br /&gt;
=== widget-server ===&lt;br /&gt;
&lt;br /&gt;
The SDR-Widget project &lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/sdr-widget/&lt;br /&gt;
&lt;br /&gt;
http://www.yoyodyneconsulting.ca/pages/SDR-Widget.html&lt;br /&gt;
&lt;br /&gt;
Sought to develop an Atmel AVR AT32UC3A3256 based USB UAC2 sound &amp;quot;card&amp;quot;. Able to digitize at 24bits and 192000 samples/second, this project provided a &amp;quot;standard of comparison&amp;quot; noise floor of better than -130dbm. Subsequent firmware development allowed a single firmware image to support UAC1, UAC2 and hpsdr protocols, allowing Linux, MacOSX, and Windows users to benefit.  &lt;br /&gt;
&lt;br /&gt;
The widget-server driver supports the hpsdr protocol allowing all users 24bit 192000 samples/second operation. The following patch removes some dead code and allows claibration of the Si570 VFO chip. This is the direct interface to the SDR harware, and provides a standard ABI to the upper layer, dspserver&lt;br /&gt;
&lt;br /&gt;
==== patch to orig ====&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== dspserver ===&lt;br /&gt;
&lt;br /&gt;
The dspserver program is the &amp;quot;middle-ware&amp;quot; between the hardware interface code, many different hardware radios are supported, through different &amp;quot;driver&amp;quot; programs:&lt;br /&gt;
&lt;br /&gt;
hiqsdr http://www.hiqsdr.org/&lt;br /&gt;
&lt;br /&gt;
perseus http://microtelecom.it/perseus/&lt;br /&gt;
&lt;br /&gt;
sdriq http://www.rfspace.com/RFSPACE/SDR-IQ.html&lt;br /&gt;
&lt;br /&gt;
softrock http://www.softrockradio.org/&lt;br /&gt;
&lt;br /&gt;
widget-server http://www.yoyodyneconsulting.ca/pages/SDR-Widget.html&lt;br /&gt;
&lt;br /&gt;
hpsdrsvr http://openhpsdr.org/index.php&lt;br /&gt;
&lt;br /&gt;
sdr1000 http://www.flex-radio.com/Products.aspx?topic=sdr1k&lt;br /&gt;
&lt;br /&gt;
usrp http://www.ettus.com/&lt;br /&gt;
&lt;br /&gt;
dspserver includes DttSP and both must be compiled with neon enabled. The toolchains built by buildroot and the associated libraries all need this enabled.&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== QtRadio ===&lt;br /&gt;
&lt;br /&gt;
QtRadio is the GUI interface for the SDR package. In the PandaBoard implementation, no such layer exists. In the future, once ubuntu is stabilised with full GPU acceleration, a GUI might be possible. OpenCL and/or OpenGL are essential. &lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=qn479WawT3U&amp;amp;feature=youtu.be&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ==&lt;br /&gt;
&lt;br /&gt;
Tested with PandaBoard EA3 and PandaBoard ES EB3.&lt;br /&gt;
&lt;br /&gt;
== SDR Widget Lite Alpha ==&lt;br /&gt;
&lt;br /&gt;
The Widget Lite Alpha boards were capture only, the Widget Beta includes audio out and supports the same common firmware and protocol as the Alpha board.&lt;br /&gt;
&lt;br /&gt;
== SDR Widget Beta ==&lt;br /&gt;
&lt;br /&gt;
http://www.yoyodyneconsulting.ca/images/SDR_Widget_Lite_Alpha2_w_LCD.JPG&lt;br /&gt;
&lt;br /&gt;
== SoftRock Lite+USB Xtall v9.0 ==&lt;br /&gt;
&lt;br /&gt;
http://wb5rvz.com/sdr/RX_V9_0/&lt;br /&gt;
&lt;br /&gt;
http://pages.cs.wisc.edu/~timc/e/sdr.html&lt;br /&gt;
&lt;br /&gt;
=== mod to directly control the Si570 from the Widget ===&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/PandaBoard</id>
		<title>PandaBoard</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/PandaBoard"/>
				<updated>2012-02-19T02:09:40Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: /* How To's */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://www.pandaboard.org PandaBoard] is an [[OMAP4430]] ([[Cortex]]-A9) based low cost development platform.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
* OMAP4 (Cortex-A9) CPU based open development platform.&lt;br /&gt;
** OMAP4430 Application processor&lt;br /&gt;
** 1GB low-power DDR2&lt;br /&gt;
** Display HDMI v1.3 Connector (Type A) to drive HD displays, DVI-D Connector (can drive a 2nd display, simultaneous display; requires HDMI to DVI-D adapter), LCD expansion header&lt;br /&gt;
** 3.5&amp;quot; audio in/out and HDMI Audio out&lt;br /&gt;
** Full size SD/MMC card&lt;br /&gt;
** Built in 802.11 &amp;amp; Bluetooth v2.1+EDR&lt;br /&gt;
** Onboard 10/100 Ethernet&lt;br /&gt;
** Expansion: 1xUSB OTG, 2xUSB HS host ports, General purpose expansion header (I2C, GPMC, USB, MMC, DSS, ETM)&lt;br /&gt;
** JTAG, UART/RS-232, 2 status LEDs, 1GPIO button&lt;br /&gt;
&lt;br /&gt;
More details can be found [http://pandaboard.org/content/platform here]&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Front&lt;br /&gt;
[[File:PandaBoard_front.png|320px]]&lt;br /&gt;
&lt;br /&gt;
A hi resolution picture of the PandaBoard EA1 front is available here: http://elinux.org/images/d/d4/Panda_front.jpg&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Back&lt;br /&gt;
[[File:Panda_back.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
= Availability =&lt;br /&gt;
PandaBoard are in production and can be ordered from [http://pandaboard.org/content/buy Worldwide distributors]. You can also easily identify the board you have using [http://omappedia.org/wiki/PandaBoard_Revisions Board revision id]&lt;br /&gt;
&lt;br /&gt;
== Rev A3 ==&lt;br /&gt;
Latest version of the board.&lt;br /&gt;
&lt;br /&gt;
== Rev A1/A2  ==&lt;br /&gt;
[http://omappedia.org/wiki/PandaBoard_Revisions#Rev_A2 Details]&lt;br /&gt;
&lt;br /&gt;
== Rev EA1/EA2 ==&lt;br /&gt;
These were limited number of 'Early Adopter' boards that built prior to production versions. [http://omappedia.org/wiki/PandaBoard_Revisions#Rev_EA1 more details]&lt;br /&gt;
&lt;br /&gt;
== Rev ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoare-ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the MLO/u-boot/kernel be specifically crafted for the 4460. The thermal management is not in the mainline 4430 code as yet and could cause unwanted thermal problems. So BEWARE of running any code built for the non -ES PandaBoard on the -ES model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Accessories =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_Bamboo|Bamboo Board]]&lt;br /&gt;
* [[BeagleBoard_Trainer|Trainer Board]]&lt;br /&gt;
* [https://specialcomp.com/pandaboard/order.htm Acrylic case]&lt;br /&gt;
* [http://bb-lvds.blogspot.com 10&amp;quot; LCD LVDS plug-and-play bundle with capacitance touchscreen and ambient light sensor]&lt;br /&gt;
&lt;br /&gt;
= How To's =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_MLO_&amp;amp;_u-boot|How to build MLO and u-boot]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/23/2011'''&lt;br /&gt;
* [[Panda_How_to_Barebox|How to build Barebox]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 11/12/2011'''&lt;br /&gt;
* [[PandaBoard_ES_uboot_howto|How to build u-boot and SPL]] for PandaBoard and PandaBoard ES '''--&amp;gt;&amp;gt; Updated 12/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rel|How to build 3.1 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/31/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rcx|How to build 3.2-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rel|How to build 3.2 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_3_rcx|How to build 3.3-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_add_2_USBs|How to add two additional USB connections]] to the PandaBoard&lt;br /&gt;
* [[Panda_How_to_add_Power_Switch|How to add a power switch]] to the PandaBoard '''--&amp;gt;&amp;gt; WIP'''&lt;br /&gt;
* [[PandaBoard Power Measurements]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Older How To's ==&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_buildroot|How to build a minimal file system using buildroot]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel|How to build a kernel using the buildroot toolchain from above]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel_new|How to build 2.6.38-rcx kernels]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/15/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_38|How to build 2.6.38 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/16/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39|How to build 2.6.39-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/12/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39rel|How to build 2.6.39 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rel|How to build 3.0 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/29/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rcx|How to build 3.0-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/11/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rcx|How to build 3.1-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/5/2011'''&lt;br /&gt;
&lt;br /&gt;
= Community =&lt;br /&gt;
 &lt;br /&gt;
Website: [http://pandaboard.org http://pandaboard.org]&lt;br /&gt;
&lt;br /&gt;
IRC: #pandaboard @irc.freenode.net&lt;br /&gt;
&lt;br /&gt;
Mailing List: [http://groups.google.com/group/pandaboard pandaboard@googlegroups.com]&lt;br /&gt;
&lt;br /&gt;
[[category:OMAP]]&lt;br /&gt;
[[category:omap4430]]&lt;br /&gt;
[[category:PandaBoard]]&lt;br /&gt;
[[category:Development Boards]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_kernel_3_2_rel</id>
		<title>Panda How to kernel 3 2 rel</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_kernel_3_2_rel"/>
				<updated>2012-02-19T02:08:35Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Kernel 3.2 has been released. kernel.org still is not fully functional though, as trying to view patches or vies inc, results in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
diffview is looping on the cached resource:&lt;br /&gt;
/home/httpd/cache/diffview/J9/J9_s6TDV1mBJyMRE8KOskHYftVY/index&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
you can download a tarball of the mainline kernel at http://kernel.org/&lt;br /&gt;
&lt;br /&gt;
or you can clone a copy of mainline kernel with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
cd linux&lt;br /&gt;
git checkout v3.2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Highlites of the -rc series ==&lt;br /&gt;
&lt;br /&gt;
''' Important Note '''&lt;br /&gt;
There has been a lot of work done on the HDMI interface and its related driver omapdrm. Between kernel 3.1 and 3.2-rc1 enough changed so that the Testing section on the HDMI interface is no longer correct. The hdmi init functions are no longer in arch/arm/mach_omap2/board-omap4panda.c. When this situation stabilises, the HDMI testing section below will be updated.&lt;br /&gt;
&lt;br /&gt;
== rc1 ==&lt;br /&gt;
&lt;br /&gt;
There are several issues requiring new patches. The WL12xx driver needs newer firmware, and the same patch as used for 3.1. when the driver isn't happy, the error messages are somewhat less than useful, however the drivers/firmware are being constantly improved and it would not be a good idea to have the driver support anything but the latest firmware.&lt;br /&gt;
&lt;br /&gt;
== rc2 ==&lt;br /&gt;
&lt;br /&gt;
There are no changes to OMAP or PandaBoard related code in the -rc2 release, or any fixes that would eliminate any of the patches required for -rc1.&lt;br /&gt;
&lt;br /&gt;
== rc3 ==&lt;br /&gt;
&lt;br /&gt;
There were no changes to OMAP or PandaBoard related code in the -rc3 release. The same patches required for -rc1 work for the -rc3 sources, and the kernel worked as does the -rc1.&lt;br /&gt;
&lt;br /&gt;
== rc4 ==&lt;br /&gt;
&lt;br /&gt;
There were quite a few updates to OMAP code, but no PandaBoard related changes. The same patches required for -rc1 &amp;amp; -rc3 work for the -rc4 sources, and the kernel worked as does the -rc1 &amp;amp; -rc3.&lt;br /&gt;
&lt;br /&gt;
== rc5 ==&lt;br /&gt;
&lt;br /&gt;
There were no changes to OMAP or PandaBoard related code in the -rc5 release. The same patches required for -rc1, -rc3 &amp;amp; -rc4 work for the -rc5 sources, and the kernel worked as well.&lt;br /&gt;
&lt;br /&gt;
== rc6 ==&lt;br /&gt;
&lt;br /&gt;
There were no changes to PandaBoard related code in the -rc6 release. The same patches required for -rc1, -rc3, -rc4 &amp;amp; -rc5 work for the -rc6 sources, and the kernel worked as well.&lt;br /&gt;
&lt;br /&gt;
== rc7 ==&lt;br /&gt;
&lt;br /&gt;
There were no changes to PandaBoard related code in the -rc7 release, although there was an OMAP change relating to I2c. The same patches required for -rc1, -rc3, -rc4, -rc5 and -rc6 work for the -rc7 sources, and the kernel worked.&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoard ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the [[PandaBoard_ES_uboot_howto| MLO/u-boot be specifically crafted for the 4460]]. The thermal management is not in the mainline 4430 code as yet and therefore the max clock frequency when running the OMAP4460 on the PandaBoard ES with the mainline kernel is 920MHz(same as the OMAP4430).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The latest wlan firmware is available from git: git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git just copy the contents of the ti-connectivity folder to /lib/firmware/ti-connectivity.&lt;br /&gt;
&lt;br /&gt;
== wlan12xx patch ==&lt;br /&gt;
This patch is still necessary to resolve the issue noted in 3.0 and 3.1, the code was moved to twl_common.c.&lt;br /&gt;
&lt;br /&gt;
[[Media:0001a-omap4-pandaboard-wlan-fix.patch|0001a-omap4-pandaboard-wlan-fix.patch]]&lt;br /&gt;
&lt;br /&gt;
Apply it like so: (from inside the kernel sources directory)&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001a-omap4-pandaboard-wlan-fix.patch&lt;br /&gt;
&lt;br /&gt;
== DVI Patch ==&lt;br /&gt;
A patch is no longer necessary to make 720p resolution available. The DVI driver now reads the EDID and sets the resolution on bootup if the display is plugged into the DVI connector. If the display is not plugged in on bootup it will default to 640 x 480.&lt;br /&gt;
&lt;br /&gt;
== I2C Patch ==&lt;br /&gt;
i2c character device driver patch that has been necessary is no longer required, however a couple of issues still need patching, so a new patch is required&lt;br /&gt;
&lt;br /&gt;
[[Media:0002a-omap4-pandaboard-i2c.patch|0002a-omap4-pandaboard-i2c.patch]]&lt;br /&gt;
&lt;br /&gt;
Apply it like so: (from inside the kernel sources directory)&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0002a-omap4-pandaboard-i2c.patch&lt;br /&gt;
&lt;br /&gt;
== USB Performance improvement ==&lt;br /&gt;
This patch fixs one performance bug on ARM Cortex A9 dual core&lt;br /&gt;
platform, which has been reported on quite a few ARM machines&lt;br /&gt;
(OMAP4, Tegra 2, snowball...), see details from link of&lt;br /&gt;
https://bugs.launchpad.net/bugs/709245. &lt;br /&gt;
&lt;br /&gt;
'''UPDATE'''&lt;br /&gt;
&lt;br /&gt;
The patch is no longer necessary, as an errata fix has been added to the kernel config.&lt;br /&gt;
&lt;br /&gt;
CONFIG_PL310_ERRATA_769419=y &lt;br /&gt;
&lt;br /&gt;
The .config below includes this setting.&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
Building 3.2 is a bit different from previous How-To's if you want to have a working wlan.&lt;br /&gt;
&lt;br /&gt;
In order to ensure that the wlan starts up consistently, it is recommended that the wl12xx driver be built as a module and started after the PandaBoard has booted.&lt;br /&gt;
&lt;br /&gt;
Grab the 3.2 sources and use [[Media:config.3.2.2|config.3.2.2]], as the .config (you should apply all the above patches)&lt;br /&gt;
&lt;br /&gt;
Then compile like so:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=Path_to_your/arm-2010q1/bin/arm-none-linux-gnueabi- uImage&lt;br /&gt;
&lt;br /&gt;
Then compile the modules like so:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=/home/kenm/Panda/arm-2010q1/bin/arm-none-linux-gnueabi- modules&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Install&amp;quot; the modules to somewhere convenient:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=/home/kenm/Panda/arm-2010q1/bin/arm-none-linux-gnueabi- INSTALL_MOD_PATH=../testlib_omap modules_install &lt;br /&gt;
&lt;br /&gt;
Copy lib/modules/3.2.0-dirty/ to your SD card (as root), boot up the Pandaboard.&lt;br /&gt;
The modules are located in lib/modules/3.2.0-dirty/&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== fbtest on DVI Port ===&lt;br /&gt;
&lt;br /&gt;
After booting run fbtest to see a nice test pattern from the dvi port.&lt;br /&gt;
&lt;br /&gt;
[[File:fbtest.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
=== Switching primary display to the HDMI port --&amp;gt; Currently not functional &amp;lt;-- ===&lt;br /&gt;
Make sure that a monitor is plugged into the HDMI port before doing the following:&lt;br /&gt;
&lt;br /&gt;
 # Enable HDMI&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/display1/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Disable overlay0 (an overlay must be disabled before changing its properties)&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Set the manager of overlay0 to display1 which is HDMI&lt;br /&gt;
 echo &amp;quot;tv&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/manager&lt;br /&gt;
 &lt;br /&gt;
 # Enable overlay0&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
&lt;br /&gt;
And content on overlay 0 of primary lcd would be transferred to HDMI. It works similarly for all other overlay's.&lt;br /&gt;
&lt;br /&gt;
=== Switching primary display to the DVI port ===&lt;br /&gt;
&lt;br /&gt;
See: http://omappedia.org/wiki/Bootargs_for_enabling_display for lots of useful info on the display subsystem. Be aware that the display, manager and overlay numbers don't match the panda configuration.&lt;br /&gt;
&lt;br /&gt;
Make sure that a monitor is plugged into the DVI port before doing the following:&lt;br /&gt;
&lt;br /&gt;
 # Disable HDMI&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/display1/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Disable overlay0 (an overlay must be disabled before changing its properties)&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Set the manager of overlay0 to display0 which is DVI&lt;br /&gt;
 echo &amp;quot;lcd2&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/manager&lt;br /&gt;
 &lt;br /&gt;
 # Enable overlay0&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
&lt;br /&gt;
The above commands should be run from the serial console and the cable should be in the destination port before running the commands.&lt;br /&gt;
&lt;br /&gt;
=== fbtest on HDMI Port --&amp;gt; Currently not functional &amp;lt;-- ===&lt;br /&gt;
&lt;br /&gt;
Run fbtest to see a nice test pattern from the HDMI port.&lt;br /&gt;
&lt;br /&gt;
[[File:fbtest2.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
=== i2cdetect ===&lt;br /&gt;
&lt;br /&gt;
Unfortunately there was an issue introduced between 3.2-rc7 and 3.2 that results in an I2C timeout when the bus is queried. &lt;br /&gt;
&lt;br /&gt;
You can run i2cdetect and the results should look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# i2cdetect -y -r 1&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- [   19.281738] omap_i2c omap_i2c.1: controller timed out&lt;br /&gt;
-- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
40: -- -- -- -- -- -- -- -- UU UU UU UU -- -- -- -- &lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
70: -- -- -- -- -- -- -- --  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== wlan ===&lt;br /&gt;
&lt;br /&gt;
Run the following commands after the PandaBoard is booted:&lt;br /&gt;
&lt;br /&gt;
 modprobe wl12xx_sdio&lt;br /&gt;
 ifconfig wlan0 up&lt;br /&gt;
 iwconfig wlan0 essid &amp;quot;Your AccessPoint Name&amp;quot;&lt;br /&gt;
 udhcpc -i wlan0&lt;br /&gt;
&lt;br /&gt;
If your network is set up to provide DHCP services, the PandaBoard will get all the &amp;quot;right stuff(tm)&amp;quot; and you will be able to access the Internet.&lt;br /&gt;
&lt;br /&gt;
 # ping www.google.com&lt;br /&gt;
 PING www.google.com (74.125.73.99): 56 data bytes&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=0 ttl=43 time=62.683 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=1 ttl=43 time=54.077 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=2 ttl=43 time=51.484 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=3 ttl=43 time=54.108 ms&lt;br /&gt;
&lt;br /&gt;
=== USB Performance ===&lt;br /&gt;
&lt;br /&gt;
Insert a USB memory stick into one of the usb ports&lt;br /&gt;
&lt;br /&gt;
Run dmesg to see what sdx the stick was recognised as, then:&lt;br /&gt;
&lt;br /&gt;
 hdparam -tT /dev/sdx&lt;br /&gt;
&lt;br /&gt;
If you did this on a kernel without the patch or errata workaround, you will see some improvement, if you run the same command on a desktop Linux system, with the same USB memory stick, the PandaBoard's speed should roughly be the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PandaBoard]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_kernel_3_2_rcx</id>
		<title>Panda How to kernel 3 2 rcx</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_kernel_3_2_rcx"/>
				<updated>2012-02-19T02:07:01Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
The merge window for 3.2 is over and we are currently at v3.2-rc6.&lt;br /&gt;
Lots of work on the OMAP platforms and on Pandaboard. Let's see&lt;br /&gt;
what the various release candidates have provided.&lt;br /&gt;
&lt;br /&gt;
You can download a tarball of the mainline kernel at http://kernel.org/&lt;br /&gt;
&lt;br /&gt;
or you can clone a copy of mainline kernel with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
cd linux&lt;br /&gt;
git checkout v3.2-rcx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where x is the release candidate version.&lt;br /&gt;
&lt;br /&gt;
''' Important Note '''&lt;br /&gt;
There has been a lot of work done on the HDMI interface and its related driver omapdrm. Between kernel 3.1 and 3.2-rc1 enough changed so that the Testing section on the HDMI interface is no longer correct. The hdmi init functions are no longer in arch/arm/mach_omap2/board-omap4panda.c. When this situation stabilises, the HDMI testing section below will be updated. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== rc1 ==&lt;br /&gt;
&lt;br /&gt;
There are several issues requiring new patches. The WL12xx driver needs newer firmware, and the same patch as used for 3.1. when the driver isn't happy, the error messages are somewhat less than useful, however the drivers/firmware are being constantly improved and it would not be a good idea to have the driver support anything but the latest firmware. Still a work in progress.&lt;br /&gt;
&lt;br /&gt;
== rc2 ==&lt;br /&gt;
&lt;br /&gt;
There are no changes to OMAP or PandaBoard related code in the -rc2 release, or any fixes that would eliminate any of the patches required for -rc1, so we'll skip testing this release for a bit.&lt;br /&gt;
&lt;br /&gt;
== rc3 ==&lt;br /&gt;
&lt;br /&gt;
There were no changes to OMAP or PandaBoard related code in the -rc3 release. The same patches required for -rc1 work for the -rc3 sources, and the kernel works as does the -rc1.&lt;br /&gt;
&lt;br /&gt;
== rc4 ==&lt;br /&gt;
&lt;br /&gt;
There were quite a few updates to OMAP code, but no PandaBoard related changes. The same patches required for -rc1 &amp;amp; -rc3 work for the -rc4 sources, and the kernel works as does the -rc1 &amp;amp; -rc3.&lt;br /&gt;
&lt;br /&gt;
== rc5 ==&lt;br /&gt;
&lt;br /&gt;
There were no changes to OMAP or PandaBoard related code in the -rc5 release. The same patches required for -rc1, -rc3 &amp;amp; -rc4 work for the -rc5 sources, and the kernel works as well.&lt;br /&gt;
&lt;br /&gt;
== rc6 ==&lt;br /&gt;
&lt;br /&gt;
There were no changes to PandaBoard related code in the -rc6 release. The same patches required for -rc1, -rc3, -rc4 &amp;amp; -rc5 work for the -rc6 sources, and the kernel works as well.&lt;br /&gt;
&lt;br /&gt;
== rc7 ==&lt;br /&gt;
&lt;br /&gt;
Inching towards the 3.2 release. There were no changes to PandaBoard related code in the -rc7 release, although there was an OMAP change relating to I2c. The same patches required for -rc1, -rc3, -rc4, -rc5 and -rc6 work for the -rc7 sources, and the kernel works as well.&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoard ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the [[PandaBoard_ES_uboot_howto| MLO/u-boot be specifically crafted for the 4460]]. The thermal management is not in the mainline 4430 code as yet and therefore the max clock frequency when running the OMAP4460 on the PandaBoard ES with the mainline kernel is 920MHz(same as the OMAP4430).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The latest wlan firmware is available from git: git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git just copy the contents of the ti-connectivity folder to /lib/firmware/ti-connectivity.&lt;br /&gt;
&lt;br /&gt;
== wlan12xx patch ==&lt;br /&gt;
This patch is necessary to resolve the issue noted in 3.0 and 3.1, the code was moved to twl_common.c and a patch is supposed to be in -rc2 or -rc3.&lt;br /&gt;
&lt;br /&gt;
[[Media:0001a-omap4-pandaboard-wlan-fix.patch|0001a-omap4-pandaboard-wlan-fix.patch]]&lt;br /&gt;
&lt;br /&gt;
Apply it like so: (from inside the kernel sources directory)&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001a-omap4-pandaboard-wlan-fix.patch&lt;br /&gt;
&lt;br /&gt;
== DVI Patch ==&lt;br /&gt;
A patch is no longer necessary to make 720p resolution available. The DVI driver now reads the EDID and sets the resolution on bootup if the display is plugged into the DVI connector. If the display is not plugged in on bootup it will default to 640 x 480.&lt;br /&gt;
&lt;br /&gt;
== I2C Patch ==&lt;br /&gt;
i2c character device driver patch that has been necessary is no longer required, however a couple of issues still need patching, so a new patch is required&lt;br /&gt;
&lt;br /&gt;
[[Media:0002a-omap4-pandaboard-i2c.patch|0002a-omap4-pandaboard-i2c.patch]]&lt;br /&gt;
&lt;br /&gt;
Apply it like so: (from inside the kernel sources directory)&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0002a-omap4-pandaboard-i2c.patch&lt;br /&gt;
&lt;br /&gt;
== USB Performance improvement ==&lt;br /&gt;
This patch fixs one performance bug on ARM Cortex A9 dual core&lt;br /&gt;
platform, which has been reported on quite a few ARM machines&lt;br /&gt;
(OMAP4, Tegra 2, snowball...), see details from link of&lt;br /&gt;
https://bugs.launchpad.net/bugs/709245. &lt;br /&gt;
&lt;br /&gt;
[[Media:0006-omap4-usb-improvement.patch|0006-omap4-usb-improvement.patch]]&lt;br /&gt;
&lt;br /&gt;
Apply it like so: (from inside the kernel sources directory)&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0006-omap4-usb-improvement.patch&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
Building 3.2-rc1,3,4,5,6,7 is a bit different from previous How-To's if you want to have a working wlan.&lt;br /&gt;
&lt;br /&gt;
In order to ensure that the wlan starts up consistently, it is recommended that the wl12xx driver be built as a module and started after the PandaBoard has booted.&lt;br /&gt;
&lt;br /&gt;
Grab the 3.2-rc1,3,4,5,6,7 sources and use [[Media:config.3.2-rc1.1|config.3.2-rc1.1]], [[Media:config.3.2-rc3.1|config.3.2-rc3.1]], [[Media:config.3.2-rc4.1|config.3.2-rc4.1]], [[Media:config.3.2-rc5.1|config.3.2-rc5.1]], [[Media:config.3.2-rc6.1|config.3.2-rc6.1]] or [[Media:config.3.2-rc7.1|config.3.2-rc7.1]] as the .config (you should apply all the above patches)&lt;br /&gt;
&lt;br /&gt;
Then compile like so:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=Path_to_your/arm-2010q1/bin/arm-none-linux-gnueabi- uImage&lt;br /&gt;
&lt;br /&gt;
Then compile the modules like so:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=/home/kenm/Panda/arm-2010q1/bin/arm-none-linux-gnueabi- modules&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Install&amp;quot; the modules to somewhere convenient:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=/home/kenm/Panda/arm-2010q1/bin/arm-none-linux-gnueabi- INSTALL_MOD_PATH=../testlib_omap modules_install &lt;br /&gt;
&lt;br /&gt;
Copy lib/modules/3.2.0-rc1-dirty/ to your SD card (as root), boot up the Pandaboard.&lt;br /&gt;
After 3.2-rc1, the kernel versioning was changed and the modules for -rc4,5,6,7 are now located in lib/modules/3.2.0-rc4-00002-gd3aebaf/ the last digits will change as the sources are edited, so your version numbers may differ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== fbtest on DVI Port ===&lt;br /&gt;
&lt;br /&gt;
After booting run fbtest to see a nice test pattern from the dvi port.&lt;br /&gt;
&lt;br /&gt;
[[File:fbtest.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
=== Switching primary display to the HDMI port --&amp;gt; Currently not functional &amp;lt;-- ===&lt;br /&gt;
Make sure that a monitor is plugged into the HDMI port before doing the following:&lt;br /&gt;
&lt;br /&gt;
 # Enable HDMI&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/display1/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Disable overlay0 (an overlay must be disabled before changing its properties)&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Set the manager of overlay0 to display1 which is HDMI&lt;br /&gt;
 echo &amp;quot;tv&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/manager&lt;br /&gt;
 &lt;br /&gt;
 # Enable overlay0&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
&lt;br /&gt;
And content on overlay 0 of primary lcd would be transferred to HDMI. It works similarly for all other overlay's.&lt;br /&gt;
&lt;br /&gt;
=== Switching primary display to the DVI port ===&lt;br /&gt;
&lt;br /&gt;
See: http://omappedia.org/wiki/Bootargs_for_enabling_display for lots of useful info on the display subsystem. Be aware that the display, manager and overlay numbers don't match the panda configuration.&lt;br /&gt;
&lt;br /&gt;
Make sure that a monitor is plugged into the DVI port before doing the following:&lt;br /&gt;
&lt;br /&gt;
 # Disable HDMI&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/display1/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Disable overlay0 (an overlay must be disabled before changing its properties)&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Set the manager of overlay0 to display0 which is DVI&lt;br /&gt;
 echo &amp;quot;lcd2&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/manager&lt;br /&gt;
 &lt;br /&gt;
 # Enable overlay0&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
&lt;br /&gt;
The above commands should be run from the serial console and the cable should be in the destination port before running the commands.&lt;br /&gt;
&lt;br /&gt;
=== fbtest on HDMI Port --&amp;gt; Currently not functional &amp;lt;-- ===&lt;br /&gt;
&lt;br /&gt;
Run fbtest to see a nice test pattern from the HDMI port.&lt;br /&gt;
&lt;br /&gt;
[[File:fbtest2.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
=== i2cdetect ===&lt;br /&gt;
&lt;br /&gt;
You can run i2cdetect and the results should look like this:&lt;br /&gt;
&lt;br /&gt;
 # i2cdetect -y -r 1&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
 00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 40: -- -- -- -- -- -- -- -- UU UU UU UU -- -- -- -- &lt;br /&gt;
 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 70: -- -- -- -- -- -- -- --&lt;br /&gt;
&lt;br /&gt;
=== wlan ===&lt;br /&gt;
&lt;br /&gt;
Run the following commands after the PandaBoard is booted:&lt;br /&gt;
&lt;br /&gt;
 modprobe wl12xx_sdio&lt;br /&gt;
 ifconfig wlan0 up&lt;br /&gt;
 iwconfig wlan0 essid &amp;quot;Your AccessPoint Name&amp;quot;&lt;br /&gt;
 udhcpc -i wlan0&lt;br /&gt;
&lt;br /&gt;
If your network is set up to provide DHCP services, the PandaBoard will get all the &amp;quot;right stuff(tm)&amp;quot; and you will be able to access the Internet.&lt;br /&gt;
&lt;br /&gt;
 # ping www.google.com&lt;br /&gt;
 PING www.google.com (74.125.73.99): 56 data bytes&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=0 ttl=43 time=62.683 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=1 ttl=43 time=54.077 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=2 ttl=43 time=51.484 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=3 ttl=43 time=54.108 ms&lt;br /&gt;
&lt;br /&gt;
=== USB Performance ===&lt;br /&gt;
&lt;br /&gt;
Insert a USB memory stick into one of the usb ports&lt;br /&gt;
&lt;br /&gt;
Run dmesg to see what sdx the stick was recognised as, then:&lt;br /&gt;
&lt;br /&gt;
 hdparam -tT /dev/sdx&lt;br /&gt;
&lt;br /&gt;
If you did this on a kernel without the patch you will see some improvement, if you run the same command on a desktop Linux system, with the same USB memory stick, the PandaBoard's speed should roughly be the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PandaBoard]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/PandaBoard</id>
		<title>PandaBoard</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/PandaBoard"/>
				<updated>2012-02-19T02:03:52Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://www.pandaboard.org PandaBoard] is an [[OMAP4430]] ([[Cortex]]-A9) based low cost development platform.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
* OMAP4 (Cortex-A9) CPU based open development platform.&lt;br /&gt;
** OMAP4430 Application processor&lt;br /&gt;
** 1GB low-power DDR2&lt;br /&gt;
** Display HDMI v1.3 Connector (Type A) to drive HD displays, DVI-D Connector (can drive a 2nd display, simultaneous display; requires HDMI to DVI-D adapter), LCD expansion header&lt;br /&gt;
** 3.5&amp;quot; audio in/out and HDMI Audio out&lt;br /&gt;
** Full size SD/MMC card&lt;br /&gt;
** Built in 802.11 &amp;amp; Bluetooth v2.1+EDR&lt;br /&gt;
** Onboard 10/100 Ethernet&lt;br /&gt;
** Expansion: 1xUSB OTG, 2xUSB HS host ports, General purpose expansion header (I2C, GPMC, USB, MMC, DSS, ETM)&lt;br /&gt;
** JTAG, UART/RS-232, 2 status LEDs, 1GPIO button&lt;br /&gt;
&lt;br /&gt;
More details can be found [http://pandaboard.org/content/platform here]&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Front&lt;br /&gt;
[[File:PandaBoard_front.png|320px]]&lt;br /&gt;
&lt;br /&gt;
A hi resolution picture of the PandaBoard EA1 front is available here: http://elinux.org/images/d/d4/Panda_front.jpg&lt;br /&gt;
&lt;br /&gt;
* PandaBoard EA1 Back&lt;br /&gt;
[[File:Panda_back.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
= Availability =&lt;br /&gt;
PandaBoard are in production and can be ordered from [http://pandaboard.org/content/buy Worldwide distributors]. You can also easily identify the board you have using [http://omappedia.org/wiki/PandaBoard_Revisions Board revision id]&lt;br /&gt;
&lt;br /&gt;
== Rev A3 ==&lt;br /&gt;
Latest version of the board.&lt;br /&gt;
&lt;br /&gt;
== Rev A1/A2  ==&lt;br /&gt;
[http://omappedia.org/wiki/PandaBoard_Revisions#Rev_A2 Details]&lt;br /&gt;
&lt;br /&gt;
== Rev EA1/EA2 ==&lt;br /&gt;
These were limited number of 'Early Adopter' boards that built prior to production versions. [http://omappedia.org/wiki/PandaBoard_Revisions#Rev_EA1 more details]&lt;br /&gt;
&lt;br /&gt;
== Rev ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoare-ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the MLO/u-boot/kernel be specifically crafted for the 4460. The thermal management is not in the mainline 4430 code as yet and could cause unwanted thermal problems. So BEWARE of running any code built for the non -ES PandaBoard on the -ES model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Accessories =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_Bamboo|Bamboo Board]]&lt;br /&gt;
* [[BeagleBoard_Trainer|Trainer Board]]&lt;br /&gt;
* [https://specialcomp.com/pandaboard/order.htm Acrylic case]&lt;br /&gt;
* [http://bb-lvds.blogspot.com 10&amp;quot; LCD LVDS plug-and-play bundle with capacitance touchscreen and ambient light sensor]&lt;br /&gt;
&lt;br /&gt;
= How To's =&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_MLO_&amp;amp;_u-boot|How to build MLO and u-boot]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/23/2011'''&lt;br /&gt;
* [[Panda_How_to_Barebox|How to build Barebox]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 11/12/2011'''&lt;br /&gt;
* [[PandaBoard_ES_uboot_howto|How to build u-boot and SPL]] for PandaBoard and PandaBoard ES '''--&amp;gt;&amp;gt; Updated 12/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rel|How to build 3.1 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/31/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rcx|How to build 3.2-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 12/24/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_2_rel|How to build 3.2 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 1/9/2012'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_3_rcx|How to build 3.3-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 2/18/2012'''&lt;br /&gt;
* [[Panda_How_to_add_2_USBs|How to add two additional USB connections]] to the PandaBoard&lt;br /&gt;
* [[Panda_How_to_add_Power_Switch|How to add a power switch]] to the PandaBoard '''--&amp;gt;&amp;gt; WIP'''&lt;br /&gt;
* [[PandaBoard Power Measurements]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Older How To's ==&lt;br /&gt;
&lt;br /&gt;
* [[Panda_How_to_buildroot|How to build a minimal file system using buildroot]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel|How to build a kernel using the buildroot toolchain from above]] for the PandaBoard&lt;br /&gt;
* [[Panda_How_to_kernel_new|How to build 2.6.38-rcx kernels]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/15/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_38|How to build 2.6.38 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 3/16/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39|How to build 2.6.39-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/12/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_2_6_39rel|How to build 2.6.39 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 5/27/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rel|How to build 3.0 kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/29/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_0_rcx|How to build 3.0-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 7/11/2011'''&lt;br /&gt;
* [[Panda_How_to_kernel_3_1_rcx|How to build 3.1-rcx kernel]] for the PandaBoard '''--&amp;gt;&amp;gt; Updated 10/5/2011'''&lt;br /&gt;
&lt;br /&gt;
= Community =&lt;br /&gt;
 &lt;br /&gt;
Website: [http://pandaboard.org http://pandaboard.org]&lt;br /&gt;
&lt;br /&gt;
IRC: #pandaboard @irc.freenode.net&lt;br /&gt;
&lt;br /&gt;
Mailing List: [http://groups.google.com/group/pandaboard pandaboard@googlegroups.com]&lt;br /&gt;
&lt;br /&gt;
[[category:OMAP]]&lt;br /&gt;
[[category:omap4430]]&lt;br /&gt;
[[category:PandaBoard]]&lt;br /&gt;
[[category:Development Boards]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_kernel_3_3_rcx</id>
		<title>Panda How to kernel 3 3 rcx</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_kernel_3_3_rcx"/>
				<updated>2012-02-19T02:03:17Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
The merge window for 3.3 is over and we are currently at v3.3-rc4.&lt;br /&gt;
Lots of work on the OMAP platforms and on Pandaboard as well as the wl12xx wlan driver . Let's see&lt;br /&gt;
what the various release candidates have provided.&lt;br /&gt;
&lt;br /&gt;
You can download a tarball of the mainline kernel at http://kernel.org/&lt;br /&gt;
&lt;br /&gt;
or you can clone a copy of mainline kernel with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
cd linux&lt;br /&gt;
git checkout v3.3-rcx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where x is the release candidate version.&lt;br /&gt;
&lt;br /&gt;
''' Important Note '''&lt;br /&gt;
There has been a lot of work done on the HDMI interface and its related driver omapdrm. Between kernel 3.1 and 3.2-rc1 enough changed so that the Testing section on the HDMI interface is no longer correct. The hdmi init functions are no longer in arch/arm/mach_omap2/board-omap4panda.c. When this situation stabilises, the HDMI testing section below will be updated. &lt;br /&gt;
&lt;br /&gt;
== rc1 ==&lt;br /&gt;
&lt;br /&gt;
The WLAN no longer requires a patch! The WL12xx driver needs current firmware. When the driver isn't happy, the error messages are somewhat less than useful, however the drivers/firmware are being constantly improved and it would not be a good idea to have the driver support anything but the latest firmware. Still a work in progress.&lt;br /&gt;
&lt;br /&gt;
== rc2 ==&lt;br /&gt;
&lt;br /&gt;
No PandaBoard changes, and with no patches required this is an easy release to build.&lt;br /&gt;
&lt;br /&gt;
== rc3 ==&lt;br /&gt;
&lt;br /&gt;
Skipped due to the HDMI changes which cropped up in 3.2-rc1&lt;br /&gt;
Lots of changes working towards getting HDMI functional&lt;br /&gt;
&lt;br /&gt;
== rc4 ==&lt;br /&gt;
&lt;br /&gt;
resolve nebulous 'Error setting wl12xx data' fix to PandaBoard. &amp;quot;This should be fixed properly for the next merge window so we don't&lt;br /&gt;
issue error messages merely because a driver is not configured.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoard ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the [[PandaBoard_ES_uboot_howto| MLO/u-boot be specifically crafted for the 4460]]. The thermal management is not in the mainline 4430 code as yet and therefore the max clock frequency when running the OMAP4460 on the PandaBoard ES with the mainline kernel is 920MHz(same as the OMAP4430).&lt;br /&gt;
&lt;br /&gt;
== wlan12xx ==&lt;br /&gt;
The latest wlan firmware is available from git: git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git just copy the contents of the ti-connectivity folder to /lib/firmware/ti-connectivity.&lt;br /&gt;
&lt;br /&gt;
The patch is no longer necessary to resolve the issue noted in 3.0, 3.1 and 3.2. In addition, the race issue that required building as a module has been resolved. As part of the code cleanup, the wl12xx and wl12xx_sdio drivers no longer depend on each other. This creates an issue with systems that do not use udev or mdev (with as somewhat fiddly &amp;amp; slow script) to load MODALIAS drivers. The quick solution is to modprobe both, the order no longer matters. Just modprobing wl12xx_sdio will no longer automatically load wl12xx. For this How To, we will build the drivers into the kernel.&lt;br /&gt;
&lt;br /&gt;
== I2C Patch ==&lt;br /&gt;
i2c character device driver patch that has been necessary is no longer required, and the issues from kernel 3.2 have been resolved.&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
Building 3.3-rc1 or -rc2 is fairly straight forward.&lt;br /&gt;
&lt;br /&gt;
Grab the 3.3-rc1 or 3.3-rc2 sources and use [[Media:config.3.3-rc1.1|config.3.3-rc1.1]] or [[Media:config.3.3-rc2.1|config.3.3-rc2.1]] as the .config &lt;br /&gt;
&lt;br /&gt;
The 3.3-rc1 .config enables Sound builtin and wl12xx as modules and the 3.3-rc2 enables Sound and the wl12xx drivers builtin, so the resulting kernel will be a bit bigger than previously. The builtin sound does not presently work, but the enabled configuration allows USB sound devices, which function properly.&lt;br /&gt;
&lt;br /&gt;
Then compile like so:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=Path_to_your/arm-2010q1/bin/arm-none-linux-gnueabi- uImage&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== fbtest on DVI Port ===&lt;br /&gt;
&lt;br /&gt;
After booting run fbtest to see a nice test pattern from the dvi port.&lt;br /&gt;
&lt;br /&gt;
[[File:fbtest.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
=== Switching primary display to the HDMI port  --&amp;gt; Currently not functional &amp;lt;-- ===&lt;br /&gt;
Make sure that a monitor is plugged into the HDMI port before doing the following:&lt;br /&gt;
&lt;br /&gt;
 # Enable HDMI&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/display1/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Disable overlay0 (an overlay must be disabled before changing its properties)&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Set the manager of overlay0 to display1 which is HDMI&lt;br /&gt;
 echo &amp;quot;tv&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/manager&lt;br /&gt;
 &lt;br /&gt;
 # Enable overlay0&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
&lt;br /&gt;
And content on overlay 0 of primary lcd would be transferred to HDMI. It works similarly for all other overlay's.&lt;br /&gt;
&lt;br /&gt;
=== Switching primary display to the DVI port ===&lt;br /&gt;
&lt;br /&gt;
See: http://omappedia.org/wiki/Bootargs_for_enabling_display for lots of useful info on the display subsystem. Be aware that the display, manager and overlay numbers don't match the panda configuration.&lt;br /&gt;
&lt;br /&gt;
Make sure that a monitor is plugged into the DVI port before doing the following:&lt;br /&gt;
&lt;br /&gt;
 # Disable HDMI&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/display1/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Disable overlay0 (an overlay must be disabled before changing its properties)&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Set the manager of overlay0 to display0 which is DVI&lt;br /&gt;
 echo &amp;quot;lcd2&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/manager&lt;br /&gt;
 &lt;br /&gt;
 # Enable overlay0&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
&lt;br /&gt;
The above commands should be run from the serial console and the cable should be in the destination port before running the commands.&lt;br /&gt;
&lt;br /&gt;
=== fbtest on HDMI Port --&amp;gt; Currently not functional &amp;lt;-- ===&lt;br /&gt;
&lt;br /&gt;
Run fbtest to see a nice test pattern from the HDMI port.&lt;br /&gt;
&lt;br /&gt;
[[File:fbtest2.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
=== i2cdetect ===&lt;br /&gt;
&lt;br /&gt;
You can run i2cdetect and the results should look like this:&lt;br /&gt;
&lt;br /&gt;
 # i2cdetect -y -r 1&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
 00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 40: -- -- -- -- -- -- -- -- UU UU UU UU -- -- -- -- &lt;br /&gt;
 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 70: -- -- -- -- -- -- -- --&lt;br /&gt;
&lt;br /&gt;
=== wlan ===&lt;br /&gt;
&lt;br /&gt;
Run the following commands after the PandaBoard is booted:&lt;br /&gt;
&lt;br /&gt;
 modprobe wl12xx    ** only if you built the wl12xx drivers as modules&lt;br /&gt;
 modprobe wl12xx_sdio    ** only if you built the wl12xx drivers as module&lt;br /&gt;
 ifconfig wlan0 up&lt;br /&gt;
 iwconfig wlan0 essid &amp;quot;Your AccessPoint Name&amp;quot;&lt;br /&gt;
 udhcpc -i wlan0&lt;br /&gt;
&lt;br /&gt;
If your network is set up to provide DHCP services, the PandaBoard will get all the &amp;quot;right stuff(tm)&amp;quot; and you will be able to access the Internet.&lt;br /&gt;
&lt;br /&gt;
 # ping www.google.com&lt;br /&gt;
 PING www.google.com (74.125.73.99): 56 data bytes&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=0 ttl=43 time=62.683 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=1 ttl=43 time=54.077 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=2 ttl=43 time=51.484 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=3 ttl=43 time=54.108 ms&lt;br /&gt;
&lt;br /&gt;
=== USB Performance ===&lt;br /&gt;
&lt;br /&gt;
Insert a USB memory stick into one of the usb ports&lt;br /&gt;
&lt;br /&gt;
Run dmesg to see what sdx the stick was recognised as, then:&lt;br /&gt;
&lt;br /&gt;
 hdparam -tT /dev/sdx&lt;br /&gt;
&lt;br /&gt;
If you did this on a kernel without the patch you will see some improvement, if you run the same command on a desktop Linux system, with the same USB memory stick, the PandaBoard's speed should roughly be the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PandaBoard]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_kernel_3_3_rcx</id>
		<title>Panda How to kernel 3 3 rcx</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_kernel_3_3_rcx"/>
				<updated>2012-02-19T01:07:59Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
The merge window for 3.3 is over and we are currently at v3.3-rc4.&lt;br /&gt;
Lots of work on the OMAP platforms and on Pandaboard as well as the wl12xx wlan driver . Let's see&lt;br /&gt;
what the various release candidates have provided.&lt;br /&gt;
&lt;br /&gt;
You can download a tarball of the mainline kernel at http://kernel.org/&lt;br /&gt;
&lt;br /&gt;
or you can clone a copy of mainline kernel with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
cd linux&lt;br /&gt;
git checkout v3.3-rcx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where x is the release candidate version.&lt;br /&gt;
&lt;br /&gt;
== rc1 ==&lt;br /&gt;
&lt;br /&gt;
The WLAN no longer requires a patch! The WL12xx driver needs current firmware. When the driver isn't happy, the error messages are somewhat less than useful, however the drivers/firmware are being constantly improved and it would not be a good idea to have the driver support anything but the latest firmware. Still a work in progress.&lt;br /&gt;
&lt;br /&gt;
== rc2 ==&lt;br /&gt;
No PandaBoard changes, and with no patches required this is an easy release to build.&lt;br /&gt;
&lt;br /&gt;
== rc3 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== rc4 ==&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ES ==&lt;br /&gt;
&lt;br /&gt;
There is now a PandaBoard ES http://pandaboard.org/content/pandaboard-es which includes an OMAP 4460 at up to 1.2GHz. Several important differences make it important (at the present time) that the [[PandaBoard_ES_uboot_howto| MLO/u-boot be specifically crafted for the 4460]]. The thermal management is not in the mainline 4430 code as yet and therefore the max clock frequency when running the OMAP4460 on the PandaBoard ES with the mainline kernel is 920MHz(same as the OMAP4430).&lt;br /&gt;
&lt;br /&gt;
== wlan12xx ==&lt;br /&gt;
The latest wlan firmware is available from git: git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git just copy the contents of the ti-connectivity folder to /lib/firmware/ti-connectivity.&lt;br /&gt;
&lt;br /&gt;
The patch is no longer necessary to resolve the issue noted in 3.0, 3.1 and 3.2. In addition, the race issue that required building as a module has been resolved. As part of the code cleanup, the wl12xx and wl12xx_sdio drivers no longer depend on each other. This creates an issue with systems that do not use udev or mdev (with as somewhat fiddly &amp;amp; slow script) to load MODALIAS drivers. The quick solution is to modprobe both, the order no longer matters. Just modprobing wl12xx_sdio will no longer automatically load wl12xx. For this How To, we will build the drivers into the kernel.&lt;br /&gt;
&lt;br /&gt;
== I2C Patch ==&lt;br /&gt;
i2c character device driver patch that has been necessary is no longer required, and the issues from kernel 3.2 have been resolved.&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
Building 3.3-rc1 or -rc2 is fairly straight forward.&lt;br /&gt;
&lt;br /&gt;
Grab the 3.3-rc1 or 3.3-rc2 sources and use [[Media:config.3.3-rc1.1|config.3.3-rc1.1]] or [[Media:config.3.3-rc2.1|config.3.3-rc2.1]] as the .config &lt;br /&gt;
&lt;br /&gt;
The 3.3-rc1 .config enables Sound builtin and wl12xx as modules and the 3.3-rc2 enables Sound and the wl12xx drivers builtin, so the resulting kernel will be a bit bigger than previously. &lt;br /&gt;
&lt;br /&gt;
Then compile like so:&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm CROSS_COMPILE=Path_to_your/arm-2010q1/bin/arm-none-linux-gnueabi- uImage&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== fbtest on DVI Port ===&lt;br /&gt;
&lt;br /&gt;
After booting run fbtest to see a nice test pattern from the dvi port.&lt;br /&gt;
&lt;br /&gt;
[[File:fbtest.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
=== Switching primary display to the HDMI port ===&lt;br /&gt;
Make sure that a monitor is plugged into the HDMI port before doing the following:&lt;br /&gt;
&lt;br /&gt;
 # Enable HDMI&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/display1/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Disable overlay0 (an overlay must be disabled before changing its properties)&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Set the manager of overlay0 to display1 which is HDMI&lt;br /&gt;
 echo &amp;quot;tv&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/manager&lt;br /&gt;
 &lt;br /&gt;
 # Enable overlay0&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
&lt;br /&gt;
And content on overlay 0 of primary lcd would be transferred to HDMI. It works similarly for all other overlay's.&lt;br /&gt;
&lt;br /&gt;
=== Switching primary display to the DVI port ===&lt;br /&gt;
&lt;br /&gt;
See: http://omappedia.org/wiki/Bootargs_for_enabling_display for lots of useful info on the display subsystem. Be aware that the display, manager and overlay numbers don't match the panda configuration.&lt;br /&gt;
&lt;br /&gt;
Make sure that a monitor is plugged into the DVI port before doing the following:&lt;br /&gt;
&lt;br /&gt;
 # Disable HDMI&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/display1/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Disable overlay0 (an overlay must be disabled before changing its properties)&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
 &lt;br /&gt;
 # Set the manager of overlay0 to display0 which is DVI&lt;br /&gt;
 echo &amp;quot;lcd2&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/manager&lt;br /&gt;
 &lt;br /&gt;
 # Enable overlay0&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/omapdss/overlay0/enabled&lt;br /&gt;
&lt;br /&gt;
The above commands should be run from the serial console and the cable should be in the destination port before running the commands.&lt;br /&gt;
&lt;br /&gt;
=== fbtest on HDMI Port ===&lt;br /&gt;
&lt;br /&gt;
Run fbtest to see a nice test pattern from the HDMI port.&lt;br /&gt;
&lt;br /&gt;
[[File:fbtest2.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
=== i2cdetect ===&lt;br /&gt;
&lt;br /&gt;
You can run i2cdetect and the results should look like this:&lt;br /&gt;
&lt;br /&gt;
 # i2cdetect -y -r 1&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
 00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 40: -- -- -- -- -- -- -- -- UU UU UU UU -- -- -- -- &lt;br /&gt;
 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
 70: -- -- -- -- -- -- -- --&lt;br /&gt;
&lt;br /&gt;
=== wlan ===&lt;br /&gt;
&lt;br /&gt;
Run the following commands after the PandaBoard is booted:&lt;br /&gt;
&lt;br /&gt;
 modprobe wl12xx    ** only if you built the wl12xx drivers as modules&lt;br /&gt;
 modprobe wl12xx_sdio    ** only if you built the wl12xx drivers as module&lt;br /&gt;
 ifconfig wlan0 up&lt;br /&gt;
 iwconfig wlan0 essid &amp;quot;Your AccessPoint Name&amp;quot;&lt;br /&gt;
 udhcpc -i wlan0&lt;br /&gt;
&lt;br /&gt;
If your network is set up to provide DHCP services, the PandaBoard will get all the &amp;quot;right stuff(tm)&amp;quot; and you will be able to access the Internet.&lt;br /&gt;
&lt;br /&gt;
 # ping www.google.com&lt;br /&gt;
 PING www.google.com (74.125.73.99): 56 data bytes&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=0 ttl=43 time=62.683 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=1 ttl=43 time=54.077 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=2 ttl=43 time=51.484 ms&lt;br /&gt;
 64 bytes from 74.125.73.99: seq=3 ttl=43 time=54.108 ms&lt;br /&gt;
&lt;br /&gt;
=== USB Performance ===&lt;br /&gt;
&lt;br /&gt;
Insert a USB memory stick into one of the usb ports&lt;br /&gt;
&lt;br /&gt;
Run dmesg to see what sdx the stick was recognised as, then:&lt;br /&gt;
&lt;br /&gt;
 hdparam -tT /dev/sdx&lt;br /&gt;
&lt;br /&gt;
If you did this on a kernel without the patch you will see some improvement, if you run the same command on a desktop Linux system, with the same USB memory stick, the PandaBoard's speed should roughly be the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PandaBoard]]&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_build_SDR</id>
		<title>Panda How to build SDR</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_build_SDR"/>
				<updated>2012-02-18T15:41:06Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
What I have done is still very much a work in progress. The PandaBoard,&lt;br /&gt;
OMAP4, platform is a very powerful and flexible system, but it has its&lt;br /&gt;
limitations. I have been doing work with the PandaBoard since about&lt;br /&gt;
November 2010, so I've seen the kernel and distributions move from&lt;br /&gt;
barely runable to very capable during that time.&lt;br /&gt;
&lt;br /&gt;
For my SDR work, I run a home built &amp;quot;distro&amp;quot; which I build with&lt;br /&gt;
buildroot. It has the advantages of Gentoo as everything is built from&lt;br /&gt;
source, but it is not quite &amp;quot;plug &amp;amp; play&amp;quot;. There is a lot of fiddling&lt;br /&gt;
that I had to do to get all the dependences and libraries that dspserver&lt;br /&gt;
and widget-server need. I am currently not running QtRadio on the&lt;br /&gt;
PandaBoard, and don't intend to, for a while at least. The DSP software&lt;br /&gt;
needs all the CPU power it can get.&lt;br /&gt;
  &lt;br /&gt;
The major problem that most folks have run into trying to get SDR&lt;br /&gt;
software running on a non-x86 platform is dealing with the lack of FPU.&lt;br /&gt;
Anything without an FPU is just a waste of time, software floating point&lt;br /&gt;
emulation is just tooooooooo slow. Custom code to do SDR with fixed&lt;br /&gt;
point arithmetic is possible and has been done. But, most recent efforts&lt;br /&gt;
to run something like ghpsdr or ghpsdr3-alex have met with dismal&lt;br /&gt;
failure due to the fact that folks will try to boot up Ubuntu on their&lt;br /&gt;
platform of choice, install the build-essentials, and try to build the&lt;br /&gt;
SDR software like they would on their desktop. While this may result in&lt;br /&gt;
a runnable piece of code, there is currently no support for an FPU. So&lt;br /&gt;
if the software runs at all, the DSP functions will not be able to keep&lt;br /&gt;
up with the incoming data.&lt;br /&gt;
&lt;br /&gt;
This is where I diverged from the mainstream. The key event was the&lt;br /&gt;
availability of FFTW3 3.3.1-beta1 which includes support for the neon&lt;br /&gt;
FPU that is present on the OMAP4 4430/4460/4470. Unfortunately ARM made&lt;br /&gt;
this co-processor an option on Cortex-A9 implementations, and Nvidia&lt;br /&gt;
chose not to have it on Tegra2, so what I wound up with is somewhat Ti&lt;br /&gt;
specific.&lt;br /&gt;
&lt;br /&gt;
I was able to cross compile fftw3 and run several benchmarks on my&lt;br /&gt;
PandaBoard ES and was quite impressed with the result vs. what Vesprerix&lt;br /&gt;
had reported on with their implementation (fork) of fftw3. Once I was&lt;br /&gt;
convinced that the fft routines on which DTTSP depend were &amp;quot;good enough&amp;quot;&lt;br /&gt;
I proceeded to put together a buildroot build that was tuned to using&lt;br /&gt;
&amp;quot;-mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp&amp;quot;. There are lots of&lt;br /&gt;
fiddly cross-compiler options and libraries that have to be checked to&lt;br /&gt;
be sure they actually are using neon (this work has not been completed&lt;br /&gt;
yet).&lt;br /&gt;
After the cross environment was working I went about getting dspserver,&lt;br /&gt;
widget-server and all their dependencies cross-compiled, there were a&lt;br /&gt;
lot. The most troublesome was Codec2, which I still have to hand tweak&lt;br /&gt;
to get to cross-compile properly. My first effort has Codec2 support&lt;br /&gt;
patched out, but the current code does include it. The dspserver and DttSP&lt;br /&gt;
code is identical to what is in the git repository, except for the Makefile &lt;br /&gt;
which is customized to compile with my toolchain. I have modified the &lt;br /&gt;
widget-server code to remove some dead code and add calibration for the Si570.&lt;br /&gt;
&lt;br /&gt;
Another issue that I haven't dug into yet is Jack, it is necessary for&lt;br /&gt;
non-hpsdr protocol servers. Jack2 uses waf (a really old version 1.5.0 at that)&lt;br /&gt;
instead of make. I am able to cross compile Jack1 (0.121.3) since it uses make, &lt;br /&gt;
but Jack2 needs some help. Pulse audio and Port audio were no problem.&lt;br /&gt;
&lt;br /&gt;
There will be an sd card image that one can &amp;quot;dd&amp;quot; onto a blank card.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For SDR work, gcc 4.6.2 is a must.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
I build the kernel and u-boot/SPL outside of buildroot, but use the buildroot toolchain. This may change in the near future, as buildroot will soon support the PandaBoard as a target.&lt;br /&gt;
&lt;br /&gt;
== Kernel==&lt;br /&gt;
&lt;br /&gt;
=== kernel 3.3-rc2 .config ===&lt;br /&gt;
&lt;br /&gt;
== u-boot/MLO/SPL ==&lt;br /&gt;
&lt;br /&gt;
== Buildroot Internal toolchain  with uClibc ==&lt;br /&gt;
&lt;br /&gt;
Start by downloading buildroot and getting all the prerequisites installed on your build machine.&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.buildroot.net/buildroot &lt;br /&gt;
&lt;br /&gt;
Then apply the following patch from the main buildroot directory&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001_add_new_packages.patch&lt;br /&gt;
&lt;br /&gt;
Then replace the config files for buildroot, busybox, and uClibc like this&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0002_replace_configs.patch&lt;br /&gt;
&lt;br /&gt;
Build everything&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
After the build completes you will have a toolchain, packages and libraries except for codec2. This takes a bit of fiddling with to cross compile.&lt;br /&gt;
&lt;br /&gt;
Download http://freetel.svn.sourceforge.net/viewvc/freetel/codec2/?view=tar&lt;br /&gt;
&lt;br /&gt;
Untar in a convenient place, cd to that place, run ./configure, then make. This will build codec2/src/generate_codebook for your desktop platform, which will be needed later.&lt;br /&gt;
&lt;br /&gt;
Now run make menuconfig in the buildroot main dir, go to Package Selection for Target --&amp;gt; Libraries --&amp;gt; Other and select codec2&lt;br /&gt;
&lt;br /&gt;
Run make again from the main buildroot dir and wait till the build fails, which it should.&lt;br /&gt;
&lt;br /&gt;
Now copy the generate_codebook file from codec2/src/ to buildroot/output/build/codec2-289/src/&lt;br /&gt;
&lt;br /&gt;
Apply the following patch from the buildroot/output/build/codec2-289 directory&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0003_codec2_codebook.patch&lt;br /&gt;
&lt;br /&gt;
Now back to the main buildroot dir and run make again. This will finish building the codec2 library.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buildroot Crosstool-ng toolchain with glibc ===&lt;br /&gt;
&lt;br /&gt;
=== buildroot .config ===&lt;br /&gt;
&lt;br /&gt;
=== crosstool-ng config ===&lt;br /&gt;
&lt;br /&gt;
== uClibc vs glibc size and speed in a real world example ==&lt;br /&gt;
&lt;br /&gt;
After building the first PandaSDR system, I was curious as to how things might change if I used glibc. The first thing I did was do a bench mark on the floating point performance of both. uClibc was woefully inadequate in sin/cos &lt;br /&gt;
&lt;br /&gt;
http://gruntthepeon.free.fr/ssemath/neon_mathfun.html&lt;br /&gt;
&lt;br /&gt;
with this benchmark compiled with glibc the performance numbers matched closely with the website, however with uClibc the sinf/cosf numbers were off.&lt;br /&gt;
&lt;br /&gt;
Instead of &amp;quot;2.0 millions of vector evaluations/second -&amp;gt; 121 cycles/value&amp;quot; I got &amp;quot;.1 millions of vector evaluations/second -&amp;gt; 1333 cycles/value&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Based on that benchmark, I had buildroot build a new system with a crosstool-ng based toolchain using glibc 2.13. This was somewhat complicated since the gcc 4.6.2 implementation was EXPERIMENTAL. Numerous other problems were encountered, but after a while I was able to get the toolchain built and the packages compiled with neon support for cortex-a9. The SDR software dspserver and widget-server built without problems except for the lack of libgomp in the target rootfs. It ws built ok, and populated into the toolchain's staging area, it just didn't make into the final rootfs. After all was said &amp;amp; done I compared the size of the libraries and executables, glibc's libs were certainly bigger, but there were fewer of them. The packages executables and libs were about the same size. Overall the two rootfs's were very close to the same size at 32MBytes (uClibc), and 40MBytes (glibc), the largest difference being in /usr/share/locale (292KBytes vs 7.7MBytes). In operation the SDR code consumed about the same amount of cpu power too. More to come as I investigate further.&lt;br /&gt;
&lt;br /&gt;
Buildroot with uClibc was certainly easier to get running, but crossstool-ng with glibc more closely compares to what would be available in a &amp;quot;Distro&amp;quot; like ubuntu/angstrom/arch Linux. Performance without neon was not evaluated. Earlier linpack and fftw3 benchmarks showed that without neon floating performance was abysmal. Both builds had fiddly bits, but my lack of programming skill probably weighed in as well.&lt;br /&gt;
&lt;br /&gt;
Building buildroot with either uClibc or glibc (via crosstools-ng) builds all the host tools necessarry, whereas building crosstools-ng alone requires versions of host tools that you may not have on your machine. For example, my desktop 64bit Core i7 is running ubuntu karmic, it can't build crosstools-ng without updating lots of tools, but it can build buildroot with crosstools-ng. However it is currently not possible to change the crosstools-ng configuration in buildroot as it is with busybox or uClibc. It's an inconvenience, but not a show stopper. &lt;br /&gt;
&lt;br /&gt;
== rootfs ==&lt;br /&gt;
&lt;br /&gt;
=== Packages ===&lt;br /&gt;
&lt;br /&gt;
alsa-lib-1.0.24.1&lt;br /&gt;
&lt;br /&gt;
alsa-utils-1.0.24.2 &lt;br /&gt;
&lt;br /&gt;
busybox-1.19.3 &lt;br /&gt;
&lt;br /&gt;
codec2-289 &lt;br /&gt;
&lt;br /&gt;
dbus-1.4.16 &lt;br /&gt;
&lt;br /&gt;
dbus-glib-0.98 &lt;br /&gt;
&lt;br /&gt;
dropbear-2011.54 &lt;br /&gt;
&lt;br /&gt;
expat-2.0.1 &lt;br /&gt;
&lt;br /&gt;
fftw-3.3.1-beta1 &lt;br /&gt;
&lt;br /&gt;
gdb-7.3.1-target &lt;br /&gt;
&lt;br /&gt;
gdbserver-7.3.1 &lt;br /&gt;
&lt;br /&gt;
gettext-0.16.1 &lt;br /&gt;
&lt;br /&gt;
i2c-tools-3.0.3 &lt;br /&gt;
&lt;br /&gt;
input-event-daemon-v0.1.3 &lt;br /&gt;
&lt;br /&gt;
json-c-0.9 &lt;br /&gt;
&lt;br /&gt;
libconfig-1.4.8 &lt;br /&gt;
&lt;br /&gt;
libevent-2.0.14 &lt;br /&gt;
&lt;br /&gt;
libglib2-2.28.8 &lt;br /&gt;
&lt;br /&gt;
libogg-1.2.2 &lt;br /&gt;
&lt;br /&gt;
libsamplerate-0.1.8 &lt;br /&gt;
&lt;br /&gt;
libsndfile-1.0.25 &lt;br /&gt;
&lt;br /&gt;
libtool-2.2.10 &lt;br /&gt;
&lt;br /&gt;
libusb-1.0.8 &lt;br /&gt;
&lt;br /&gt;
libusb-compat-0.1.3 &lt;br /&gt;
&lt;br /&gt;
libxml2-2.7.8 &lt;br /&gt;
&lt;br /&gt;
ncurses-5.7 &lt;br /&gt;
&lt;br /&gt;
ortp-0.18.0 &lt;br /&gt;
&lt;br /&gt;
portaudio-V19 &lt;br /&gt;
&lt;br /&gt;
pulseaudio-1.0 &lt;br /&gt;
&lt;br /&gt;
speex-1.2rc1 &lt;br /&gt;
&lt;br /&gt;
wireless_tools-29 &lt;br /&gt;
&lt;br /&gt;
zlib-1.2.5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ghpsdr3-alex ==&lt;br /&gt;
&lt;br /&gt;
A good introductory guide to ghpsdr &amp;amp; ghpsdr-alex is available:&lt;br /&gt;
&lt;br /&gt;
http://openhpsdr.org/wiki/images/6/63/NewbieGuide.pdf&lt;br /&gt;
&lt;br /&gt;
Familiarity with ghpsdr-alex is useful before starting on cross-compiling bits &amp;amp; pieces of it to run on the PandaBoard.&lt;br /&gt;
&lt;br /&gt;
The normal ghpsdr3-alex package needs QtSDK installed as well a lot of graphic specific librarys. At present, this is beyond the scope of this How-To, and it will be left for another day to produce the GUI part of this, ie. QtRadio. The PandaBoard will only be running the minimal code necessary to have a functional SDR server radio. pulseaudio and portaudio are required for non hpsdr protocol servers, and have been built successfully, however at present they are not used for the widget-server and could be eliminated from the build. Only the widget-server has been tested so far.&lt;br /&gt;
&lt;br /&gt;
This code is built outside of buildroot, but using the buildroot created toolchain. This is done by adding a Makefile to dspserver, DttSP, and widget server. The Makefile has a hardcoded path to the toolchain, so it may (will) be necessary to alter it to fit individual circumstances.  &lt;br /&gt;
&lt;br /&gt;
The various parts of this package have been evolving for quite some time, the ghpsdr3-alex project is the most recent &amp;quot;fork&amp;quot; of the original ghpsdr3 software&lt;br /&gt;
&lt;br /&gt;
http://openhpsdr.org/wiki/index.php?title=Ghpsdr3&lt;br /&gt;
&lt;br /&gt;
https://github.com/alexlee188/ghpsdr3-alex&lt;br /&gt;
&lt;br /&gt;
Although this project is trying not to be a fork, in essence it is, as the code is going in a different direction than the original authors intended. Three cheers for open source....&lt;br /&gt;
&lt;br /&gt;
=== dttsp ===&lt;br /&gt;
&lt;br /&gt;
This code is very mature and does much of the heavy lifting, non fft processing for the SDR stack&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== fftw3 ===&lt;br /&gt;
&lt;br /&gt;
The latest beta of fftw3 added support for ARM neon floating point.&lt;br /&gt;
&lt;br /&gt;
http://www.fftw.org/&lt;br /&gt;
&lt;br /&gt;
This is where the heavy lifting part of the DttSP happens. Somewhat independently evolved by the fftw3 authors and Vesperix&lt;br /&gt;
&lt;br /&gt;
http://www.vesperix.com/arm/fftw-arm/&lt;br /&gt;
&lt;br /&gt;
fftw3 3.3.1-beta1 is a critical part of the SDR stack. Without neon support, SDR on ARM v7-a is not possible.   &lt;br /&gt;
&lt;br /&gt;
=== widget-server ===&lt;br /&gt;
&lt;br /&gt;
The SDR-Widget project &lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/sdr-widget/&lt;br /&gt;
&lt;br /&gt;
http://www.yoyodyneconsulting.ca/pages/SDR-Widget.html&lt;br /&gt;
&lt;br /&gt;
Sought to develop an Atmel AVR AT32UC3A3256 based USB UAC2 sound &amp;quot;card&amp;quot;. Able to digitize at 24bits and 192000 samples/second, this project provided a &amp;quot;standard of comparison&amp;quot; noise floor of better than -130dbm. Subsequent firmware development allowed a single firmware image to support UAC1, UAC2 and hpsdr protocols, allowing Linux, MacOSX, and Windows users to benefit.  &lt;br /&gt;
&lt;br /&gt;
The widget-server driver supports the hpsdr protocol allowing all users 24bit 192000 samples/second operation. The following patch removes some dead code and allows claibration of the Si570 VFO chip. This is the direct interface to the SDR harware, and provides a standard ABI to the upper layer, dspserver&lt;br /&gt;
&lt;br /&gt;
==== patch to orig ====&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== dspserver ===&lt;br /&gt;
&lt;br /&gt;
The dspserver program is the &amp;quot;middle-ware&amp;quot; between the hardware interface code, many different hardware radios are supported, through different &amp;quot;driver&amp;quot; programs:&lt;br /&gt;
&lt;br /&gt;
hiqsdr http://www.hiqsdr.org/&lt;br /&gt;
&lt;br /&gt;
perseus http://microtelecom.it/perseus/&lt;br /&gt;
&lt;br /&gt;
sdriq http://www.rfspace.com/RFSPACE/SDR-IQ.html&lt;br /&gt;
&lt;br /&gt;
softrock http://www.softrockradio.org/&lt;br /&gt;
&lt;br /&gt;
widget-server http://www.yoyodyneconsulting.ca/pages/SDR-Widget.html&lt;br /&gt;
&lt;br /&gt;
hpsdrsvr http://openhpsdr.org/index.php&lt;br /&gt;
&lt;br /&gt;
sdr1000 http://www.flex-radio.com/Products.aspx?topic=sdr1k&lt;br /&gt;
&lt;br /&gt;
usrp http://www.ettus.com/&lt;br /&gt;
&lt;br /&gt;
dspserver includes DttSP and both must be compiled with neon enabled. The toolchains built by buildroot and the associated libraries all need this enabled.&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== QtRadio ===&lt;br /&gt;
&lt;br /&gt;
QtRadio is the GUI interface for the SDR package. In the PandaBoard implementation, no such layer exists. In the future, once ubuntu is stabilised with full GPU acceleration, a GUI might be possible. OpenCL and/or OpenGL are essential. &lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=qn479WawT3U&amp;amp;feature=youtu.be&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ==&lt;br /&gt;
&lt;br /&gt;
Tested with PandaBoard EA3 and PandaBoard ES EB3.&lt;br /&gt;
&lt;br /&gt;
== SDR Widget Lite Alpha ==&lt;br /&gt;
&lt;br /&gt;
The Widget Lite Alpha boards were capture only, the Widget Beta includes audio out and supports the same common firmware and protocol as the Alpha board.&lt;br /&gt;
&lt;br /&gt;
== SDR Widget Beta ==&lt;br /&gt;
&lt;br /&gt;
http://www.yoyodyneconsulting.ca/images/SDR_Widget_Lite_Alpha2_w_LCD.JPG&lt;br /&gt;
&lt;br /&gt;
== SoftRock Lite+USB Xtall v9.0 ==&lt;br /&gt;
&lt;br /&gt;
http://wb5rvz.com/sdr/RX_V9_0/&lt;br /&gt;
&lt;br /&gt;
http://pages.cs.wisc.edu/~timc/e/sdr.html&lt;br /&gt;
&lt;br /&gt;
=== mod to directly control the Si570 from the Widget ===&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_build_SDR</id>
		<title>Panda How to build SDR</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_build_SDR"/>
				<updated>2012-02-15T15:48:05Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
What I have done is still very much a work in progress. The PandaBoard,&lt;br /&gt;
OMAP4, platform is a very powerful and flexible system, but it has its&lt;br /&gt;
limitations. I have been doing work with the PandaBoard since about&lt;br /&gt;
November 2010, so I've seen the kernel and distributions move from&lt;br /&gt;
barely runable to very capable during that time.&lt;br /&gt;
&lt;br /&gt;
For my SDR work, I run a home built &amp;quot;distro&amp;quot; which I build with&lt;br /&gt;
buildroot. It has the advantages of Gentoo as everything is built from&lt;br /&gt;
source, but it is not quite &amp;quot;plug &amp;amp; play&amp;quot;. There is a lot of fiddling&lt;br /&gt;
that I had to do to get all the dependences and libraries that dspserver&lt;br /&gt;
and widget-server need. I am currently not running QtRadio on the&lt;br /&gt;
PandaBoard, and don't intend to, for a while at least. The DSP software&lt;br /&gt;
needs all the CPU power it can get.&lt;br /&gt;
  &lt;br /&gt;
The major problem that most folks have run into trying to get SDR&lt;br /&gt;
software running on a non-x86 platform is dealing with the lack of FPU.&lt;br /&gt;
Anything without an FPU is just a waste of time, software floating point&lt;br /&gt;
emulation is just tooooooooo slow. Custom code to do SDR with fixed&lt;br /&gt;
point arithmetic is possible and has been done. But, most recent efforts&lt;br /&gt;
to run something like ghpsdr or ghpsdr3-alex have met with dismal&lt;br /&gt;
failure due to the fact that folks will try to boot up Ubuntu on their&lt;br /&gt;
platform of choice, install the build-essentials, and try to build the&lt;br /&gt;
SDR software like they would on their desktop. While this may result in&lt;br /&gt;
a runnable piece of code, there is currently no support for an FPU. So&lt;br /&gt;
if the software runs at all, the DSP functions will not be able to keep&lt;br /&gt;
up with the incoming data.&lt;br /&gt;
&lt;br /&gt;
This is where I diverged from the mainstream. The key event was the&lt;br /&gt;
availability of FFTW3 3.3.1-beta1 which includes support for the neon&lt;br /&gt;
FPU that is present on the OMAP4 4430/4460/4470. Unfortunately ARM made&lt;br /&gt;
this co-processor an option on Cortex-A9 implementations, and Nvidia&lt;br /&gt;
chose not to have it on Tegra2, so what I wound up with is somewhat Ti&lt;br /&gt;
specific.&lt;br /&gt;
&lt;br /&gt;
I was able to cross compile fftw3 and run several benchmarks on my&lt;br /&gt;
PandaBoard ES and was quite impressed with the result vs. what Vesprerix&lt;br /&gt;
had reported on with their implementation (fork) of fftw3. Once I was&lt;br /&gt;
convinced that the fft routines on which DTTSP depend were &amp;quot;good enough&amp;quot;&lt;br /&gt;
I proceeded to put together a buildroot build that was tuned to using&lt;br /&gt;
&amp;quot;-mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp&amp;quot;. There are lots of&lt;br /&gt;
fiddly cross-compiler options and libraries that have to be checked to&lt;br /&gt;
be sure they actually are using neon (this work has not been completed&lt;br /&gt;
yet).&lt;br /&gt;
After the cross environment was working I went about getting dspserver,&lt;br /&gt;
widget-server and all their dependencies cross-compiled, there were a&lt;br /&gt;
lot. The most troublesome was Codec2, which I still have to hand tweak&lt;br /&gt;
to get to cross-compile properly. My first effort has Codec2 support&lt;br /&gt;
patched out, but the current code does include it. The dspserver and DttSP&lt;br /&gt;
code is identical to what is in the git repository, except for the Makefile &lt;br /&gt;
which is customized to compile with my toolchain. I have modified the &lt;br /&gt;
widget-server code to remove some dead code and add calibration for the Si570.&lt;br /&gt;
&lt;br /&gt;
Another issue that I haven't dug into yet is Jack, it is necessary for&lt;br /&gt;
non-hpsdr protocol servers. Jack2 uses waf (a really old version 1.5.0 at that)&lt;br /&gt;
instead of make. I am able to cross compile Jack1 (0.121.3) since it uses make, &lt;br /&gt;
but Jack2 needs some help. Pulse audio and Port audio were no problem.&lt;br /&gt;
&lt;br /&gt;
There will be an sd card image that one can &amp;quot;dd&amp;quot; onto a blank card.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For SDR work, gcc 4.6.2 is a must.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
I build the kernel and u-boot/SPL outside of buildroot, but use the buildroot toolchain. This may change in the near future, as buildroot will soon support the PandaBoard as a target.&lt;br /&gt;
&lt;br /&gt;
== Kernel==&lt;br /&gt;
&lt;br /&gt;
=== kernel 3.3-rc2 .config ===&lt;br /&gt;
&lt;br /&gt;
== u-boot/MLO/SPL ==&lt;br /&gt;
&lt;br /&gt;
== Buildroot Internal toolchain  with uClibc ==&lt;br /&gt;
&lt;br /&gt;
Start by downloading buildroot and getting all the prerequisites installed on your build machine.&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.buildroot.net/buildroot &lt;br /&gt;
&lt;br /&gt;
Then apply the following patch from the main buildroot directory&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001_add_new_packages.patch&lt;br /&gt;
&lt;br /&gt;
Then replace the config files for buildroot, busybox, and uClibc like this&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0002_replace_configs.patch&lt;br /&gt;
&lt;br /&gt;
Build everything&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
After the build completes you will have a toolchain, packages and libraries except for codec2. This takes a bit of fiddling with to cross compile.&lt;br /&gt;
&lt;br /&gt;
Download http://freetel.svn.sourceforge.net/viewvc/freetel/codec2/?view=tar&lt;br /&gt;
&lt;br /&gt;
Untar in a convenient place, cd to that place, run ./configure, then make. This will build codec2/src/generate_codebook for your desktop platform, which will be needed later.&lt;br /&gt;
&lt;br /&gt;
Now run make menuconfig in the buildroot main dir, go to Package Selection for Target --&amp;gt; Libraries --&amp;gt; Other and select codec2&lt;br /&gt;
&lt;br /&gt;
Run make again from the main buildroot dir and wait till the build fails, which it should.&lt;br /&gt;
&lt;br /&gt;
Now copy the generate_codebook file from codec2/src/ to buildroot/output/build/codec2-289/src/&lt;br /&gt;
&lt;br /&gt;
Apply the following patch from the buildroot/output/build/codec2-289 directory&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0003_codec2_codebook.patch&lt;br /&gt;
&lt;br /&gt;
Now back to the main buildroot dir and run make again. This will finish building the codec2 library.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buildroot Crosstool-ng toolchain with glibc ===&lt;br /&gt;
&lt;br /&gt;
=== buildroot .config ===&lt;br /&gt;
&lt;br /&gt;
=== crosstool-ng config ===&lt;br /&gt;
&lt;br /&gt;
== uClibc vs glibc size and speed in a real world example ==&lt;br /&gt;
&lt;br /&gt;
After building the first PandaSDR system, I was curious as to how things might change if I used glibc. The first thing I did was do a bench mark on the floating point performance of both. uClibc was woefully inadequate in sin/cos &lt;br /&gt;
&lt;br /&gt;
http://gruntthepeon.free.fr/ssemath/neon_mathfun.html&lt;br /&gt;
&lt;br /&gt;
with this benchmark compiled with glibc the performance numbers matched closely with the website, however with uClibc the sinf/cosf numbers were off.&lt;br /&gt;
&lt;br /&gt;
Instead of &amp;quot;2.0 millions of vector evaluations/second -&amp;gt; 121 cycles/value&amp;quot; I got &amp;quot;.1 millions of vector evaluations/second -&amp;gt; 1333 cycles/value&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Based on that benchmark, I had buildroot build a new system with a crosstool-ng based toolchain using glibc 2.13. This was somewhat complicated since the gcc 4.6.2 implementation was EXPERIMENTAL. Numerous other problems were encountered, but after a while I was able to get the toolchain built and the packages compiled with neon support for cortex-a9. The SDR software dspserver and widget-server built without problems except for the lack of libgomp in the target rootfs. It ws built ok, and populated into the toolchain's staging area, it just didn't make into the final rootfs. After all was said &amp;amp; done I compared the size of the libraries and executables, glibc's libs were certainly bigger, but there were fewer of them. The packages executables and libs were about the same size. Overall the two rootfs's were very close to the same size at 32MBytes (uClibc), and 40MBytes (glibc), the largest difference being in /usr/share/locale (292KBytes vs 7.7MBytes). In operation the SDR code consumed about the same amount of cpu power too. More to come as I investigate further.&lt;br /&gt;
&lt;br /&gt;
Buildroot with uClibc was certainly easier to get running, but crossstool-ng with glibc more closely compares to what would be available in a &amp;quot;Distro&amp;quot; like ubuntu/angstrom/arch Linux. Performance without neon was not evaluated. Earlier linpack and fftw3 benchmarks showed that without neon floating performance was abysmal. Both builds had fiddly bits, but my lack of programming skill probably weighed in as well.&lt;br /&gt;
&lt;br /&gt;
Building buildroot with either uClibc or glibc (via crosstools-ng) builds all the host tools necessarry, whereas building crosstools-ng alone requires versions of host tools that you may not have on your machine. For example, my desktop 64bit Core i7 is running ubuntu karmic, it can't build crosstools-ng without updating lots of tools, but it can build buildroot with crosstools-ng. However it is currently not possible to change the crosstools-ng configuration in buildroot as it is with busybox or uClibc. It's an inconvenience, but not a show stopper. &lt;br /&gt;
&lt;br /&gt;
== rootfs ==&lt;br /&gt;
&lt;br /&gt;
=== Packages ===&lt;br /&gt;
&lt;br /&gt;
alsa-lib-1.0.24.1&lt;br /&gt;
&lt;br /&gt;
alsa-utils-1.0.24.2 &lt;br /&gt;
&lt;br /&gt;
busybox-1.19.3 &lt;br /&gt;
&lt;br /&gt;
codec2-289 &lt;br /&gt;
&lt;br /&gt;
dbus-1.4.16 &lt;br /&gt;
&lt;br /&gt;
dbus-glib-0.98 &lt;br /&gt;
&lt;br /&gt;
dropbear-2011.54 &lt;br /&gt;
&lt;br /&gt;
expat-2.0.1 &lt;br /&gt;
&lt;br /&gt;
fftw-3.3.1-beta1 &lt;br /&gt;
&lt;br /&gt;
gdb-7.3.1-target &lt;br /&gt;
&lt;br /&gt;
gdbserver-7.3.1 &lt;br /&gt;
&lt;br /&gt;
gettext-0.16.1 &lt;br /&gt;
&lt;br /&gt;
i2c-tools-3.0.3 &lt;br /&gt;
&lt;br /&gt;
input-event-daemon-v0.1.3 &lt;br /&gt;
&lt;br /&gt;
json-c-0.9 &lt;br /&gt;
&lt;br /&gt;
libconfig-1.4.8 &lt;br /&gt;
&lt;br /&gt;
libevent-2.0.14 &lt;br /&gt;
&lt;br /&gt;
libglib2-2.28.8 &lt;br /&gt;
&lt;br /&gt;
libogg-1.2.2 &lt;br /&gt;
&lt;br /&gt;
libsamplerate-0.1.8 &lt;br /&gt;
&lt;br /&gt;
libsndfile-1.0.25 &lt;br /&gt;
&lt;br /&gt;
libtool-2.2.10 &lt;br /&gt;
&lt;br /&gt;
libusb-1.0.8 &lt;br /&gt;
&lt;br /&gt;
libusb-compat-0.1.3 &lt;br /&gt;
&lt;br /&gt;
libxml2-2.7.8 &lt;br /&gt;
&lt;br /&gt;
ncurses-5.7 &lt;br /&gt;
&lt;br /&gt;
ortp-0.18.0 &lt;br /&gt;
&lt;br /&gt;
portaudio-V19 &lt;br /&gt;
&lt;br /&gt;
pulseaudio-1.0 &lt;br /&gt;
&lt;br /&gt;
speex-1.2rc1 &lt;br /&gt;
&lt;br /&gt;
wireless_tools-29 &lt;br /&gt;
&lt;br /&gt;
zlib-1.2.5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ghpsdr3-alex ==&lt;br /&gt;
&lt;br /&gt;
The normal ghpsdr3-alex package needs QtSDK installed as well a lot of graphic specific librarys. At present, this is beyond the scope of this How-To, and it will be left for another day to produce the GUI part of this, ie. QtRadio. The PandaBoard will only be running the minimal code necessary to have a functional SDR server radio. pulseaudio and portaudio are required for non hpsdr protocol servers, and have been built successfully, however at present they are not used for the widget-server and could be eliminated from the build.&lt;br /&gt;
&lt;br /&gt;
This code is built outside of buildroot, but using the buildroot created toolchain. This is done by adding a Makefile to dspserver, DttSP, and widget server. The Makefile has a hardcoded path to the toolchain, so it may (will) be necessary to alter it to fit individual circumstances.  &lt;br /&gt;
&lt;br /&gt;
The various parts of this package have been evolving for quite some time, the ghpsdr3-alex project is the most recent &amp;quot;fork&amp;quot; of the original ghpsdr3 software&lt;br /&gt;
&lt;br /&gt;
http://openhpsdr.org/wiki/index.php?title=Ghpsdr3&lt;br /&gt;
&lt;br /&gt;
https://github.com/alexlee188/ghpsdr3-alex&lt;br /&gt;
&lt;br /&gt;
Although this project is trying not to be a fork, in essence it is, as the code is going in a different direction than the original authors intended. Three cheers for open source....&lt;br /&gt;
&lt;br /&gt;
=== dttsp ===&lt;br /&gt;
&lt;br /&gt;
This code is very mature and does much of the heavy lifting, non fft processing for the SDR stack&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== fftw3 ===&lt;br /&gt;
&lt;br /&gt;
The latest beta of fftw3 added support for ARM neon floating point.&lt;br /&gt;
&lt;br /&gt;
http://www.fftw.org/&lt;br /&gt;
&lt;br /&gt;
This is where the heavy lifting part of the DttSP happens. Somewhat independently evolved by the fftw3 authors and Vesperix&lt;br /&gt;
&lt;br /&gt;
http://www.vesperix.com/arm/fftw-arm/&lt;br /&gt;
&lt;br /&gt;
fftw3 3.3.1-beta1 is a critical part of the SDR stack. Without neon support, SDR on ARM v7-a is not possible.   &lt;br /&gt;
&lt;br /&gt;
=== widget-server ===&lt;br /&gt;
&lt;br /&gt;
The SDR-Widget project &lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/sdr-widget/&lt;br /&gt;
&lt;br /&gt;
http://www.yoyodyneconsulting.ca/pages/SDR-Widget.html&lt;br /&gt;
&lt;br /&gt;
Sought to develop an Atmel AVR AT32UC3A3256 based USB UAC2 sound &amp;quot;card&amp;quot;. Able to digitize at 24bits and 192000 samples/second, this project provided a &amp;quot;standard of comparison&amp;quot; noise floor of better than -130dbm. Subsequent firmware development allowed a single firmware image to support UAC1, UAC2 and hpsdr protocols, allowing Linux, MacOSX, and Windows users to benefit.  &lt;br /&gt;
&lt;br /&gt;
The widget-server driver supports the hpsdr protocol allowing all users 24bit 192000 samples/second operation. The following patch removes some dead code and allows claibration of the Si570 VFO chip. This is the direct interface to the SDR harware, and provides a standard ABI to the upper layer, dspserver&lt;br /&gt;
&lt;br /&gt;
==== patch to orig ====&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== dspserver ===&lt;br /&gt;
&lt;br /&gt;
The dspserver program is the &amp;quot;middle-ware&amp;quot; between the hardware interface code, many different hardware radios are supported, through different &amp;quot;driver&amp;quot; programs:&lt;br /&gt;
&lt;br /&gt;
hiqsdr http://www.hiqsdr.org/&lt;br /&gt;
&lt;br /&gt;
perseus http://microtelecom.it/perseus/&lt;br /&gt;
&lt;br /&gt;
sdriq http://www.rfspace.com/RFSPACE/SDR-IQ.html&lt;br /&gt;
&lt;br /&gt;
softrock http://www.softrockradio.org/&lt;br /&gt;
&lt;br /&gt;
widget-server http://www.yoyodyneconsulting.ca/pages/SDR-Widget.html&lt;br /&gt;
&lt;br /&gt;
hpsdrsvr http://openhpsdr.org/index.php&lt;br /&gt;
&lt;br /&gt;
sdr1000 http://www.flex-radio.com/Products.aspx?topic=sdr1k&lt;br /&gt;
&lt;br /&gt;
usrp http://www.ettus.com/&lt;br /&gt;
&lt;br /&gt;
dspserver includes DttSP and both must be compiled with neon enabled. The toolchains built by buildroot and the associated libraries all need this enabled.&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== QtRadio ===&lt;br /&gt;
&lt;br /&gt;
QtRadio is the GUI interface for the SDR package. In the PandaBoard implementation, no such layer exists. In the future, once ubuntu is stabilised with full GPU acceleration, a GUI might be possible. OpenCL and/or OpenGL are essential. &lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=qn479WawT3U&amp;amp;feature=youtu.be&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ==&lt;br /&gt;
&lt;br /&gt;
Tested with PandaBoard EA3 and PandaBoard ES EB3.&lt;br /&gt;
&lt;br /&gt;
== SDR Widget Lite Alpha ==&lt;br /&gt;
&lt;br /&gt;
The Widget Lite Alpha boards were capture only, the Widget Beta includes audio out and supports a common firmware and protocol.&lt;br /&gt;
&lt;br /&gt;
== SDR Widget Beta ==&lt;br /&gt;
&lt;br /&gt;
http://www.yoyodyneconsulting.ca/images/SDR_Widget_Lite_Alpha2_w_LCD.JPG&lt;br /&gt;
&lt;br /&gt;
== SoftRock Lite+USB Xtall v9.0 ==&lt;br /&gt;
&lt;br /&gt;
http://wb5rvz.com/sdr/RX_V9_0/&lt;br /&gt;
&lt;br /&gt;
http://pages.cs.wisc.edu/~timc/e/sdr.html&lt;br /&gt;
&lt;br /&gt;
=== mod to directly control the Si570 from the Widget ===&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_build_SDR</id>
		<title>Panda How to build SDR</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_build_SDR"/>
				<updated>2012-02-15T15:34:46Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
What I have done is still very much a work in progress. The PandaBoard,&lt;br /&gt;
OMAP4, platform is a very powerful and flexible system, but it has its&lt;br /&gt;
limitations. I have been doing work with the PandaBoard since about&lt;br /&gt;
November 2010, so I've seen the kernel and distributions move from&lt;br /&gt;
barely runable to very capable during that time.&lt;br /&gt;
&lt;br /&gt;
For my SDR work, I run a home built &amp;quot;distro&amp;quot; which I build with&lt;br /&gt;
buildroot. It has the advantages of Gentoo as everything is built from&lt;br /&gt;
source, but it is not quite &amp;quot;plug &amp;amp; play&amp;quot;. There is a lot of fiddling&lt;br /&gt;
that I had to do to get all the dependences and libraries that dspserver&lt;br /&gt;
and widget-server need. I am currently not running QtRadio on the&lt;br /&gt;
PandaBoard, and don't intend to, for a while at least. The DSP software&lt;br /&gt;
needs all the CPU power it can get.&lt;br /&gt;
  &lt;br /&gt;
The major problem that most folks have run into trying to get SDR&lt;br /&gt;
software running on a non-x86 platform is dealing with the lack of FPU.&lt;br /&gt;
Anything without an FPU is just a waste of time, software floating point&lt;br /&gt;
emulation is just tooooooooo slow. Custom code to do SDR with fixed&lt;br /&gt;
point arithmetic is possible and has been done. But, most recent efforts&lt;br /&gt;
to run something like ghpsdr or ghpsdr3-alex have met with dismal&lt;br /&gt;
failure due to the fact that folks will try to boot up Ubuntu on their&lt;br /&gt;
platform of choice, install the build-essentials, and try to build the&lt;br /&gt;
SDR software like they would on their desktop. While this may result in&lt;br /&gt;
a runnable piece of code, there is currently no support for an FPU. So&lt;br /&gt;
if the software runs at all, the DSP functions will not be able to keep&lt;br /&gt;
up with the incoming data.&lt;br /&gt;
&lt;br /&gt;
This is where I diverged from the mainstream. The key event was the&lt;br /&gt;
availability of FFTW3 3.3.1-beta1 which includes support for the neon&lt;br /&gt;
FPU that is present on the OMAP4 4430/4460/4470. Unfortunately ARM made&lt;br /&gt;
this co-processor an option on Cortex-A9 implementations, and Nvidia&lt;br /&gt;
chose not to have it on Tegra2, so what I wound up with is somewhat Ti&lt;br /&gt;
specific.&lt;br /&gt;
&lt;br /&gt;
I was able to cross compile fftw3 and run several benchmarks on my&lt;br /&gt;
PandaBoard ES and was quite impressed with the result vs. what Vesprerix&lt;br /&gt;
had reported on with their implementation (fork) of fftw3. Once I was&lt;br /&gt;
convinced that the fft routines on which DTTSP depend were &amp;quot;good enough&amp;quot;&lt;br /&gt;
I proceeded to put together a buildroot build that was tuned to using&lt;br /&gt;
&amp;quot;-mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp&amp;quot;. There are lots of&lt;br /&gt;
fiddly cross-compiler options and libraries that have to be checked to&lt;br /&gt;
be sure they actually are using neon (this work has not been completed&lt;br /&gt;
yet).&lt;br /&gt;
After the cross environment was working I went about getting dspserver,&lt;br /&gt;
widget-server and all their dependencies cross-compiled, there were a&lt;br /&gt;
lot. The most troublesome was Codec2, which I still have to hand tweak&lt;br /&gt;
to get to cross-compile properly. My first effort has Codec2 support&lt;br /&gt;
patched out, but the current code does include it. The dspserver and DttSP&lt;br /&gt;
code is identical to what is in the git repository, except for the Makefile &lt;br /&gt;
which is customized to compile with my toolchain. I have modified the &lt;br /&gt;
widget-server code to remove some dead code and add calibration for the Si570.&lt;br /&gt;
&lt;br /&gt;
Another issue that I haven't dug into yet is Jack, it is necessary for&lt;br /&gt;
non-hpsdr protocol servers. Jack2 uses waf (a really old version 1.5.0 at that)&lt;br /&gt;
instead of make. I am able to cross compile Jack1 (0.121.3) since it uses make, &lt;br /&gt;
but Jack2 needs some help. Pulse audio and Port audio were no problem.&lt;br /&gt;
&lt;br /&gt;
There will be an sd card image that one can &amp;quot;dd&amp;quot; onto a blank card.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For SDR work, gcc 4.6.2 is a must.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
I build the kernel and u-boot/SPL outside of buildroot, but use the buildroot toolchain. This may change in the near future, as buildroot will soon support the PandaBoard as a target.&lt;br /&gt;
&lt;br /&gt;
== Kernel==&lt;br /&gt;
&lt;br /&gt;
=== kernel 3.3-rc2 .config ===&lt;br /&gt;
&lt;br /&gt;
== u-boot/MLO/SPL ==&lt;br /&gt;
&lt;br /&gt;
== Buildroot Internal toolchain  with uClibc ==&lt;br /&gt;
&lt;br /&gt;
Start by downloading buildroot and getting all the prerequisites installed on your build machine.&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.buildroot.net/buildroot &lt;br /&gt;
&lt;br /&gt;
Then apply the following patch from the main buildroot directory&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001_add_new_packages.patch&lt;br /&gt;
&lt;br /&gt;
Then replace the config files for buildroot, busybox, and uClibc like this&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0002_replace_configs.patch&lt;br /&gt;
&lt;br /&gt;
Build everything&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
After the build completes you will have a toolchain, packages and libraries except for codec2. This takes a bit of fiddling with to cross compile.&lt;br /&gt;
&lt;br /&gt;
Download http://freetel.svn.sourceforge.net/viewvc/freetel/codec2/?view=tar&lt;br /&gt;
&lt;br /&gt;
Untar in a convenient place, cd to that place, run ./configure, then make. This will build codec2/src/generate_codebook for your desktop platform, which will be needed later.&lt;br /&gt;
&lt;br /&gt;
Now run make menuconfig in the buildroot main dir, go to Package Selection for Target --&amp;gt; Libraries --&amp;gt; Other and select codec2&lt;br /&gt;
&lt;br /&gt;
Run make again from the main buildroot dir and wait till the build fails, which it should.&lt;br /&gt;
&lt;br /&gt;
Now copy the generate_codebook file from codec2/src/ to buildroot/output/build/codec2-289/src/&lt;br /&gt;
&lt;br /&gt;
Apply the following patch from the buildroot/output/build/codec2-289 directory&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0003_codec2_codebook.patch&lt;br /&gt;
&lt;br /&gt;
Now back to the main buildroot dir and run make again. This will finish building the codec2 library.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buildroot Crosstool-ng toolchain with glibc ===&lt;br /&gt;
&lt;br /&gt;
=== buildroot .config ===&lt;br /&gt;
&lt;br /&gt;
=== crosstool-ng config ===&lt;br /&gt;
&lt;br /&gt;
== uClibc vs glibc size and speed in a real world example ==&lt;br /&gt;
&lt;br /&gt;
After building the first PandaSDR system, I was curious as to how things might change if I used glibc. The first thing I did was do a bench mark on the floating point performance of both. uClibc was woefully inadequate in sin/cos &lt;br /&gt;
&lt;br /&gt;
http://gruntthepeon.free.fr/ssemath/neon_mathfun.html&lt;br /&gt;
&lt;br /&gt;
with this benchmark compiled with glibc the performance numbers matched closely with the website, however with uClibc the sinf/cosf numbers were off.&lt;br /&gt;
&lt;br /&gt;
Instead of &amp;quot;2.0 millions of vector evaluations/second -&amp;gt; 121 cycles/value&amp;quot; I got &amp;quot;.1 millions of vector evaluations/second -&amp;gt; 1333 cycles/value&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Based on that benchmark, I had buildroot build a new system with a crosstool-ng based toolchain using glibc 2.13. This was somewhat complicated since the gcc 4.6.2 implementation was EXPERIMENTAL. Numerous other problems were encountered, but after a while I was able to get the toolchain built and the packages compiled with neon support for cortex-a9. The SDR software dspserver and widget-server built without problems except for the lack of libgomp in the target rootfs. It ws built ok, and populated into the toolchain's staging area, it just didn't make into the final rootfs. After all was said &amp;amp; done I compared the size of the libraries and executables, glibc's libs were certainly bigger, but there were fewer of them. The packages executables and libs were about the same size. Overall the two rootfs's were very close to the same size at 32MBytes (uClibc), and 40MBytes (glibc), the largest difference being in /usr/share/locale (292KBytes vs 7.7MBytes). In operation the SDR code consumed about the same amount of cpu power too. More to come as I investigate further.&lt;br /&gt;
&lt;br /&gt;
Buildroot with uClibc was certainly easier to get running, but crossstool-ng with glibc more closely compares to what would be available in a &amp;quot;Distro&amp;quot; like ubuntu/angstrom/arch Linux. Performance without neon was not evaluated. Earlier linpack and fftw3 benchmarks showed that without neon floating performance was abysmal. Both builds had fiddly bits, but my lack of programming skill probably weighed in as well.&lt;br /&gt;
&lt;br /&gt;
Building buildroot with either uClibc or glibc (via crosstools-ng) builds all the host tools necessarry, whereas building crosstools-ng alone requires versions of host tools that you may not have on your machine. For example, my desktop 64bit Core i7 is running ubuntu karmic, it can't build crosstools-ng without updating lots of tools, but it can build buildroot with crosstools-ng. However it is currently not possible to change the crosstools-ng configuration in buildroot as it is with busybox or uClibc. It's an inconvenience, but not a show stopper. &lt;br /&gt;
&lt;br /&gt;
== rootfs ==&lt;br /&gt;
&lt;br /&gt;
=== Packages ===&lt;br /&gt;
&lt;br /&gt;
alsa-lib-1.0.24.1&lt;br /&gt;
&lt;br /&gt;
alsa-utils-1.0.24.2 &lt;br /&gt;
&lt;br /&gt;
busybox-1.19.3 &lt;br /&gt;
&lt;br /&gt;
codec2-289 &lt;br /&gt;
&lt;br /&gt;
dbus-1.4.16 &lt;br /&gt;
&lt;br /&gt;
dbus-glib-0.98 &lt;br /&gt;
&lt;br /&gt;
dropbear-2011.54 &lt;br /&gt;
&lt;br /&gt;
expat-2.0.1 &lt;br /&gt;
&lt;br /&gt;
fftw-3.3.1-beta1 &lt;br /&gt;
&lt;br /&gt;
gdb-7.3.1-target &lt;br /&gt;
&lt;br /&gt;
gdbserver-7.3.1 &lt;br /&gt;
&lt;br /&gt;
gettext-0.16.1 &lt;br /&gt;
&lt;br /&gt;
i2c-tools-3.0.3 &lt;br /&gt;
&lt;br /&gt;
input-event-daemon-v0.1.3 &lt;br /&gt;
&lt;br /&gt;
json-c-0.9 &lt;br /&gt;
&lt;br /&gt;
libconfig-1.4.8 &lt;br /&gt;
&lt;br /&gt;
libevent-2.0.14 &lt;br /&gt;
&lt;br /&gt;
libglib2-2.28.8 &lt;br /&gt;
&lt;br /&gt;
libogg-1.2.2 &lt;br /&gt;
&lt;br /&gt;
libsamplerate-0.1.8 &lt;br /&gt;
&lt;br /&gt;
libsndfile-1.0.25 &lt;br /&gt;
&lt;br /&gt;
libtool-2.2.10 &lt;br /&gt;
&lt;br /&gt;
libusb-1.0.8 &lt;br /&gt;
&lt;br /&gt;
libusb-compat-0.1.3 &lt;br /&gt;
&lt;br /&gt;
libxml2-2.7.8 &lt;br /&gt;
&lt;br /&gt;
ncurses-5.7 &lt;br /&gt;
&lt;br /&gt;
ortp-0.18.0 &lt;br /&gt;
&lt;br /&gt;
portaudio-V19 &lt;br /&gt;
&lt;br /&gt;
pulseaudio-1.0 &lt;br /&gt;
&lt;br /&gt;
speex-1.2rc1 &lt;br /&gt;
&lt;br /&gt;
wireless_tools-29 &lt;br /&gt;
&lt;br /&gt;
zlib-1.2.5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ghpsdr3-alex ==&lt;br /&gt;
&lt;br /&gt;
The normal ghpsdr3-alex package needs QtSDK installed as well a lot of graphic specific librarys. At present, this is beyond the scope of this How-To, and it will be left for another day to produce the GUI part of this, ie. QtRadio. The PandaBoard will only be running the minimal code necessary to have a functional SDR server radio. pulseaudio and portaudio are required for non hpsdr protocol servers, and have been built successfully, however at present they are not used for the widget-server and could be eliminated from the build.&lt;br /&gt;
&lt;br /&gt;
This code is built outside of buildroot, but using the buildroot created toolchain. This is done by adding a Makefile to dspserver, DttSP, and widget server. The Makefile has a hardcoded path to the toolchain, so it may (will) be necessary to alter it to fit individual circumstances.  &lt;br /&gt;
&lt;br /&gt;
The various parts of this package have been evolving for quite some time, the ghpsdr3-alex project is the most recent &amp;quot;fork&amp;quot; of the original ghpsdr3 software&lt;br /&gt;
&lt;br /&gt;
http://openhpsdr.org/wiki/index.php?title=Ghpsdr3&lt;br /&gt;
&lt;br /&gt;
https://github.com/alexlee188/ghpsdr3-alex&lt;br /&gt;
&lt;br /&gt;
Although this project is trying not to be a fork, in essence it is, as the code is going in a different direction than the original authors intended. Three cheers for open source....&lt;br /&gt;
&lt;br /&gt;
=== dttsp ===&lt;br /&gt;
&lt;br /&gt;
This code is very mature and does much of the heavy lifting, non fft processing for the SDR stack&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== fftw3 ===&lt;br /&gt;
&lt;br /&gt;
The latest beta of fftw3 added support for ARM neon floating point.&lt;br /&gt;
&lt;br /&gt;
http://www.fftw.org/&lt;br /&gt;
&lt;br /&gt;
This is where the heavy lifting part of the DttSP happens. Somewhat independently evolved by the fftw3 authors and Vesperix&lt;br /&gt;
&lt;br /&gt;
http://www.vesperix.com/arm/fftw-arm/&lt;br /&gt;
&lt;br /&gt;
fftw3 3.3.1-beta1 is a critical part of the SDR stack. Without neon support, SDR on ARM v7-a is not possible.   &lt;br /&gt;
&lt;br /&gt;
=== widget-server ===&lt;br /&gt;
&lt;br /&gt;
The SDR-Widget project &lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/sdr-widget/&lt;br /&gt;
&lt;br /&gt;
http://www.yoyodyneconsulting.ca/pages/SDR-Widget.html&lt;br /&gt;
&lt;br /&gt;
Sought to develop an Atmel AVR AT32UC3A3256 based USB UAC2 sound &amp;quot;card&amp;quot;. Able to digitize at 24bits and 192000 samples/second, this project provided a &amp;quot;standard of comparison&amp;quot; noise floor of better than -130dbm. Subsequent firmware development allowed a single firmware image to support UAC1, UAC2 and hpsdr protocols, allowing Linux, MacOSX, and Windows users to benefit.  &lt;br /&gt;
&lt;br /&gt;
The widget-server driver supports the hpsdr protocol allowing all users 24bit 192000 samples/second operation. The following patch removes some dead code and allows claibration of the Si570 VFO chip. This is the direct interface to the SDR harware, and provides a standard ABI to the upper layer, dspserver&lt;br /&gt;
&lt;br /&gt;
==== patch to orig ====&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== dspserver ===&lt;br /&gt;
&lt;br /&gt;
The dspserver program is the &amp;quot;middle-ware&amp;quot; between the hardware interface code, many different hardware radios are supported, through different &amp;quot;driver&amp;quot; programs:&lt;br /&gt;
&lt;br /&gt;
hiqsdr http://www.hiqsdr.org/&lt;br /&gt;
&lt;br /&gt;
perseus http://microtelecom.it/perseus/&lt;br /&gt;
&lt;br /&gt;
sdriq http://www.rfspace.com/RFSPACE/SDR-IQ.html&lt;br /&gt;
&lt;br /&gt;
softrock http://www.softrockradio.org/&lt;br /&gt;
&lt;br /&gt;
widget-server http://www.yoyodyneconsulting.ca/pages/SDR-Widget.html&lt;br /&gt;
&lt;br /&gt;
hpsdrsvr http://openhpsdr.org/index.php&lt;br /&gt;
&lt;br /&gt;
sdr1000 http://www.flex-radio.com/Products.aspx?topic=sdr1k&lt;br /&gt;
&lt;br /&gt;
usrp http://www.ettus.com/&lt;br /&gt;
&lt;br /&gt;
dspserver includes DttSP and both must be compiled with neon enabled. The toolchains built by buildroot and the associated libraries all need this enabled.&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== QtRadio ===&lt;br /&gt;
&lt;br /&gt;
QtRadio is the GUI interface for the SDR package. In the PandaBoard implementation, no such layer exists. In the future, once ubuntu is stabilised with full GPU acceleration, a GUI might be possible. OpenCL and/or OpenGL are essential. &lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ==&lt;br /&gt;
&lt;br /&gt;
Tested with PandaBoard EA3 and PandaBoard ES EB3.&lt;br /&gt;
&lt;br /&gt;
== SDR Widget Lite Alpha ==&lt;br /&gt;
&lt;br /&gt;
The Widget Lite Alpha boards were capture only, the Widget Beta includes audio out and supports a common firmware and protocol.&lt;br /&gt;
&lt;br /&gt;
== SoftRock Lite+USB Xtall v9.0 ==&lt;br /&gt;
&lt;br /&gt;
=== mod to directly control the Si570 from the Widget ===&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_build_SDR</id>
		<title>Panda How to build SDR</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_build_SDR"/>
				<updated>2012-02-15T02:42:10Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
What I have done is still very much a work in progress. The PandaBoard,&lt;br /&gt;
OMAP4, platform is a very powerful and flexible system, but it has its&lt;br /&gt;
limitations. I have been doing work with the PandaBoard since about&lt;br /&gt;
November 2010, so I've seen the kernel and distributions move from&lt;br /&gt;
barely runable to very capable during that time.&lt;br /&gt;
&lt;br /&gt;
For my SDR work, I run a home built &amp;quot;distro&amp;quot; which I build with&lt;br /&gt;
buildroot. It has the advantages of Gentoo as everything is built from&lt;br /&gt;
source, but it is not quite &amp;quot;plug &amp;amp; play&amp;quot;. There is a lot of fiddling&lt;br /&gt;
that I had to do to get all the dependences and libraries that dspserver&lt;br /&gt;
and widget-server need. I am currently not running QtRadio on the&lt;br /&gt;
PandaBoard, and don't intend to, for a while at least. The DSP software&lt;br /&gt;
needs all the CPU power it can get.&lt;br /&gt;
  &lt;br /&gt;
The major problem that most folks have run into trying to get SDR&lt;br /&gt;
software running on a non-x86 platform is dealing with the lack of FPU.&lt;br /&gt;
Anything without an FPU is just a waste of time, software floating point&lt;br /&gt;
emulation is just tooooooooo slow. Custom code to do SDR with fixed&lt;br /&gt;
point arithmetic is possible and has been done. But, most recent efforts&lt;br /&gt;
to run something like ghpsdr or ghpsdr3-alex have met with dismal&lt;br /&gt;
failure due to the fact that folks will try to boot up Ubuntu on their&lt;br /&gt;
platform of choice, install the build-essentials, and try to build the&lt;br /&gt;
SDR software like they would on their desktop. While this may result in&lt;br /&gt;
a runnable piece of code, there is currently no support for an FPU. So&lt;br /&gt;
if the software runs at all, the DSP functions will not be able to keep&lt;br /&gt;
up with the incoming data.&lt;br /&gt;
&lt;br /&gt;
This is where I diverged from the mainstream. The key event was the&lt;br /&gt;
availability of FFTW3 3.3.1-beta1 which includes support for the neon&lt;br /&gt;
FPU that is present on the OMAP4 4430/4460/4470. Unfortunately ARM made&lt;br /&gt;
this co-processor an option on Cortex-A9 implementations, and Nvidia&lt;br /&gt;
chose not to have it on Tegra2, so what I wound up with is somewhat Ti&lt;br /&gt;
specific.&lt;br /&gt;
&lt;br /&gt;
I was able to cross compile fftw3 and run several benchmarks on my&lt;br /&gt;
PandaBoard ES and was quite impressed with the result vs. what Vesprerix&lt;br /&gt;
had reported on with their implementation (fork) of fftw3. Once I was&lt;br /&gt;
convinced that the fft routines on which DTTSP depend were &amp;quot;good enough&amp;quot;&lt;br /&gt;
I proceeded to put together a buildroot build that was tuned to using&lt;br /&gt;
&amp;quot;-mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp&amp;quot;. There are lots of&lt;br /&gt;
fiddly cross-compiler options and libraries that have to be checked to&lt;br /&gt;
be sure they actually are using neon (this work has not been completed&lt;br /&gt;
yet).&lt;br /&gt;
After the cross environment was working I went about getting dspserver,&lt;br /&gt;
widget-server and all their dependencies cross-compiled, there were a&lt;br /&gt;
lot. The most troublesome was Codec2, which I still have to hand tweak&lt;br /&gt;
to get to cross-compile properly. My first effort has Codec2 support&lt;br /&gt;
patched out, but the current code does include it. The dspserver and DttSP&lt;br /&gt;
code is identical to what is in the git repository, except for the Makefile &lt;br /&gt;
which is customized to compile with my toolchain. I have modified the &lt;br /&gt;
widget-server code to remove some dead code and add calibration for the Si570.&lt;br /&gt;
&lt;br /&gt;
Another issue that I haven't dug into yet is Jack, it is necessary for&lt;br /&gt;
non-hpsdr protocol servers. Jack2 uses waf (a really old version 1.5.0 at that)&lt;br /&gt;
instead of make. I am able to cross compile Jack1 (0.121.3) since it uses make, &lt;br /&gt;
but Jack2 needs some help. Pulse audio and Port audio were no problem.&lt;br /&gt;
&lt;br /&gt;
There will be an sd card image that one can &amp;quot;dd&amp;quot; onto a blank card.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For SDR work, gcc 4.6.2 is a must.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
I build the kernel and u-boot/SPL outside of buildroot, but use the buildroot toolchain. This may change in the near future, as buildroot will soon support the PandaBoard as a target.&lt;br /&gt;
&lt;br /&gt;
== Kernel==&lt;br /&gt;
&lt;br /&gt;
=== kernel 3.3-rc2 .config ===&lt;br /&gt;
&lt;br /&gt;
== u-boot/MLO/SPL ==&lt;br /&gt;
&lt;br /&gt;
== Buildroot Internal toolchain  with uClibc ==&lt;br /&gt;
&lt;br /&gt;
Start by downloading buildroot and getting all the prerequisites installed on your build machine.&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.buildroot.net/buildroot &lt;br /&gt;
&lt;br /&gt;
Then apply the following patch from the main buildroot directory&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001_add_new_packages.patch&lt;br /&gt;
&lt;br /&gt;
Then replace the config files for buildroot, busybox, and uClibc like this&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0002_replace_configs.patch&lt;br /&gt;
&lt;br /&gt;
Build everything&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
After the build completes you will have a toolchain, packages and libraries except for codec2. This takes a bit of fiddling with to cross compile.&lt;br /&gt;
&lt;br /&gt;
Download http://freetel.svn.sourceforge.net/viewvc/freetel/codec2/?view=tar&lt;br /&gt;
&lt;br /&gt;
Untar in a convenient place, cd to that place, run ./configure, then make. This will build codec2/src/generate_codebook for your desktop platform, which will be needed later.&lt;br /&gt;
&lt;br /&gt;
Now run make menuconfig in the buildroot main dir, go to Package Selection for Target --&amp;gt; Libraries --&amp;gt; Other and select codec2&lt;br /&gt;
&lt;br /&gt;
Run make again from the main buildroot dir and wait till the build fails, which it should.&lt;br /&gt;
&lt;br /&gt;
Now copy the generate_codebook file from codec2/src/ to buildroot/output/build/codec2-289/src/&lt;br /&gt;
&lt;br /&gt;
Apply the following patch from the buildroot/output/build/codec2-289 directory&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0003_codec2_codebook.patch&lt;br /&gt;
&lt;br /&gt;
Now back to the main buildroot dir and run make again. This will finish building the codec2 library.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buildroot Crosstool-ng toolchain with glibc ===&lt;br /&gt;
&lt;br /&gt;
=== buildroot .config ===&lt;br /&gt;
&lt;br /&gt;
=== crosstool-ng config ===&lt;br /&gt;
&lt;br /&gt;
== uClibc vs glibc size and speed in a real world example ==&lt;br /&gt;
&lt;br /&gt;
After building the first PandaSDR system, I was curious as to how things might change if I used glibc. The first thing I did was do a bench mark on the floating point performance of both. uClibc was woefully inadequate in sin/cos &lt;br /&gt;
&lt;br /&gt;
http://gruntthepeon.free.fr/ssemath/neon_mathfun.html&lt;br /&gt;
&lt;br /&gt;
with this benchmark compiled with glibc the performance numbers matched closely with the website, however with uClibc the sinf/cosf numbers were off.&lt;br /&gt;
&lt;br /&gt;
Instead of &amp;quot;2.0 millions of vector evaluations/second -&amp;gt; 121 cycles/value&amp;quot; I got &amp;quot;.1 millions of vector evaluations/second -&amp;gt; 1333 cycles/value&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Based on that benchmark, I had buildroot build a new system with a crosstool-ng based toolchain using glibc 2.13. This was somewhat complicated since the gcc 4.6.2 implementation was EXPERIMENTAL. Numerous other problems were encountered, but after a while I was able to get the toolchain built and the packages compiled with neon support for cortex-a9. The SDR software dspserver and widget-server built without problems except for the lack of libgomp in the target rootfs. It ws built ok, and populated into the toolchain's staging area, it just didn't make into the final rootfs. After all was said &amp;amp; done I compared the size of the libraries and executables, glibc's libs were certainly bigger, but there were fewer of them. The packages executables and libs were about the same size. Overall the two rootfs's were very close to the same size at 32MBytes (uClibc), and 40MBytes (glibc), the largest difference being in /usr/share/locale (292KBytes vs 7.7MBytes). In operation the SDR code consumed about the same amount of cpu power too. More to come as I investigate further.&lt;br /&gt;
&lt;br /&gt;
Buildroot with uClibc was certainly easier to get running, but crossstool-ng with glibc more closely compares to what would be available in a &amp;quot;Distro&amp;quot; like ubuntu/angstrom/arch Linux. Performance without neon was not evaluated. Earlier linpack and fftw3 benchmarks showed that without neon floating performance was abysmal. Both builds had fiddly bits, but my lack of programming skill probably weighed in as well.&lt;br /&gt;
&lt;br /&gt;
Building buildroot with either uClibc or glibc (via crosstools-ng) builds all the host tools necessarry, whereas building crosstools-ng alone requires versions of host tools that you may not have on your machine. For example, my desktop 64bit Core i7 is running ubuntu karmic, it can't build crosstools-ng without updating lots of tools, but it can build buildroot with crosstools-ng. However it is currently not possible to change the crosstools-ng configuration in buildroot as it is with busybox or uClibc. It's an inconvenience, but not a show stopper. &lt;br /&gt;
&lt;br /&gt;
== rootfs ==&lt;br /&gt;
&lt;br /&gt;
=== Packages ===&lt;br /&gt;
&lt;br /&gt;
alsa-lib-1.0.24.1&lt;br /&gt;
&lt;br /&gt;
alsa-utils-1.0.24.2 &lt;br /&gt;
&lt;br /&gt;
busybox-1.19.3 &lt;br /&gt;
&lt;br /&gt;
codec2-289 &lt;br /&gt;
&lt;br /&gt;
dbus-1.4.16 &lt;br /&gt;
&lt;br /&gt;
dbus-glib-0.98 &lt;br /&gt;
&lt;br /&gt;
dropbear-2011.54 &lt;br /&gt;
&lt;br /&gt;
expat-2.0.1 &lt;br /&gt;
&lt;br /&gt;
fftw-3.3.1-beta1 &lt;br /&gt;
&lt;br /&gt;
gdb-7.3.1-target &lt;br /&gt;
&lt;br /&gt;
gdbserver-7.3.1 &lt;br /&gt;
&lt;br /&gt;
gettext-0.16.1 &lt;br /&gt;
&lt;br /&gt;
i2c-tools-3.0.3 &lt;br /&gt;
&lt;br /&gt;
input-event-daemon-v0.1.3 &lt;br /&gt;
&lt;br /&gt;
json-c-0.9 &lt;br /&gt;
&lt;br /&gt;
libconfig-1.4.8 &lt;br /&gt;
&lt;br /&gt;
libevent-2.0.14 &lt;br /&gt;
&lt;br /&gt;
libglib2-2.28.8 &lt;br /&gt;
&lt;br /&gt;
libogg-1.2.2 &lt;br /&gt;
&lt;br /&gt;
libsamplerate-0.1.8 &lt;br /&gt;
&lt;br /&gt;
libsndfile-1.0.25 &lt;br /&gt;
&lt;br /&gt;
libtool-2.2.10 &lt;br /&gt;
&lt;br /&gt;
libusb-1.0.8 &lt;br /&gt;
&lt;br /&gt;
libusb-compat-0.1.3 &lt;br /&gt;
&lt;br /&gt;
libxml2-2.7.8 &lt;br /&gt;
&lt;br /&gt;
ncurses-5.7 &lt;br /&gt;
&lt;br /&gt;
ortp-0.18.0 &lt;br /&gt;
&lt;br /&gt;
portaudio-V19 &lt;br /&gt;
&lt;br /&gt;
pulseaudio-1.0 &lt;br /&gt;
&lt;br /&gt;
speex-1.2rc1 &lt;br /&gt;
&lt;br /&gt;
wireless_tools-29 &lt;br /&gt;
&lt;br /&gt;
zlib-1.2.5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ghpsdr3-alex ==&lt;br /&gt;
&lt;br /&gt;
The normal ghpsdr3-alex package needs QtSDK installed as well a lot of graphic specific librarys. At present, this is beyond the scope of this How-To, and it will be left for another day to produce the GUI part of this, ie. QtRadio. The PandaBoard will only be running the minimal code necessary to have a functional SDR server radio. pulseaudio and portaudio are required for non hpsdr protocol servers, and have been built successfully, however at present they are not used for the widget-server and could be eliminated from the build.&lt;br /&gt;
&lt;br /&gt;
This code is built outside of buildroot, but using the buildroot created toolchain. This is done by adding a Makefile to dspserver, DttSP, and widget server. The Makefile has a hardcoded path to the toolchain, so it may (will) be necessary to alter it to fit individual circumstances.  &lt;br /&gt;
&lt;br /&gt;
The various parts of this package have been evolving for quite some time, the ghpsdr3-alex project is the most recent &amp;quot;fork&amp;quot; of the original ghpsdr3 software&lt;br /&gt;
&lt;br /&gt;
http://openhpsdr.org/wiki/index.php?title=Ghpsdr3&lt;br /&gt;
&lt;br /&gt;
https://github.com/alexlee188/ghpsdr3-alex&lt;br /&gt;
&lt;br /&gt;
Although this project is trying not to be a fork, in essence it is, as the code is going in a different direction than the original authors intended. Three cheers for open source....&lt;br /&gt;
&lt;br /&gt;
=== dttsp ===&lt;br /&gt;
&lt;br /&gt;
This code is very mature and does much of the heavy lifting, non fft processing for the SDR stack&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== fftw3 ===&lt;br /&gt;
&lt;br /&gt;
The latest beta of fftw3 added support for ARM neon floating point.&lt;br /&gt;
&lt;br /&gt;
http://www.fftw.org/&lt;br /&gt;
&lt;br /&gt;
This is where the heavy lifting part of the DttSP happens. Somewhat independently evolved by the fftw3 authors and Vesperix&lt;br /&gt;
&lt;br /&gt;
http://www.vesperix.com/arm/fftw-arm/&lt;br /&gt;
&lt;br /&gt;
fftw3 3.3.1-beta1 is a critical part of the SDR stack. Without neon support, SDR on ARM v7-a is not possible.   &lt;br /&gt;
&lt;br /&gt;
=== widget-server ===&lt;br /&gt;
&lt;br /&gt;
The SDR-Widget project &lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/sdr-widget/&lt;br /&gt;
&lt;br /&gt;
http://www.yoyodyneconsulting.ca/pages/SDR-Widget.html&lt;br /&gt;
&lt;br /&gt;
Sought to develop an Atmel AVR AT32UC3A3256 based USB UAC2 sound &amp;quot;card&amp;quot;. Able to digitize at 24bits and 192000 samples/second, this project provided a &amp;quot;standard of comparison&amp;quot; noise floor of better than -130dbm. Subsequent firmware development allowed a single firmware image to support UAC1, UAC2 and hpsdr protocols, allowing Linux, MacOSX, and Windows users to benefit.  &lt;br /&gt;
&lt;br /&gt;
The widget-server driver supports the hpsdr protocol allowing all users 24bit 192000 samples/second operation. The following patch removes some dead code and allows claibration of the Si570 VFO chip. This is the direct interface to the SDR harware, and provides a standard ABI to the upper layer, dspserver&lt;br /&gt;
&lt;br /&gt;
==== patch to orig ====&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== dspserver ===&lt;br /&gt;
&lt;br /&gt;
The dspserver program is the &amp;quot;middle-ware&amp;quot; between the hardware interface code, many different hardware radios are supported, through different &amp;quot;driver&amp;quot; programs:&lt;br /&gt;
&lt;br /&gt;
hiqsdr&lt;br /&gt;
&lt;br /&gt;
perseus&lt;br /&gt;
&lt;br /&gt;
sdriq&lt;br /&gt;
&lt;br /&gt;
softrock&lt;br /&gt;
&lt;br /&gt;
widget-server&lt;br /&gt;
&lt;br /&gt;
hpsdrsvr&lt;br /&gt;
&lt;br /&gt;
sdr1000&lt;br /&gt;
&lt;br /&gt;
usrp&lt;br /&gt;
&lt;br /&gt;
dspserver includes DttSP and both must be compiled with neon enabled. The toolchains built by buildroot and the associated libraries all need this enabled.&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== QtRadio ===&lt;br /&gt;
&lt;br /&gt;
QtRadio is the GUI interface for the SDR package. In the PandaBoard implementation, no such layer exists. In the future, once ubuntu is stabilised with full GPU acceleration, a GUI might be possible. OpenCL and/or OpenGL are essential. &lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ==&lt;br /&gt;
&lt;br /&gt;
Tested with PandaBoard EA3 and PandaBoard ES EB3.&lt;br /&gt;
&lt;br /&gt;
== SDR Widget Lite Alpha ==&lt;br /&gt;
&lt;br /&gt;
The Widget Lite Alpha boards were capture only, the Widget Beta includes audio out and supports a common firmware and protocol.&lt;br /&gt;
&lt;br /&gt;
== SoftRock Lite+USB Xtall v9.0 ==&lt;br /&gt;
&lt;br /&gt;
=== mod to directly control the Si570 from the Widget ===&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_build_SDR</id>
		<title>Panda How to build SDR</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_build_SDR"/>
				<updated>2012-02-15T02:29:26Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
What I have done is still very much a work in progress. The PandaBoard,&lt;br /&gt;
OMAP4, platform is a very powerful and flexible system, but it has its&lt;br /&gt;
limitations. I have been doing work with the PandaBoard since about&lt;br /&gt;
November 2010, so I've seen the kernel and distributions move from&lt;br /&gt;
barely runable to very capable during that time.&lt;br /&gt;
&lt;br /&gt;
For my SDR work, I run a home built &amp;quot;distro&amp;quot; which I build with&lt;br /&gt;
buildroot. It has the advantages of Gentoo as everything is built from&lt;br /&gt;
source, but it is not quite &amp;quot;plug &amp;amp; play&amp;quot;. There is a lot of fiddling&lt;br /&gt;
that I had to do to get all the dependences and libraries that dspserver&lt;br /&gt;
and widget-server need. I am currently not running QtRadio on the&lt;br /&gt;
PandaBoard, and don't intend to, for a while at least. The DSP software&lt;br /&gt;
needs all the CPU power it can get.&lt;br /&gt;
  &lt;br /&gt;
The major problem that most folks have run into trying to get SDR&lt;br /&gt;
software running on a non-x86 platform is dealing with the lack of FPU.&lt;br /&gt;
Anything without an FPU is just a waste of time, software floating point&lt;br /&gt;
emulation is just tooooooooo slow. Custom code to do SDR with fixed&lt;br /&gt;
point arithmetic is possible and has been done. But, most recent efforts&lt;br /&gt;
to run something like ghpsdr or ghpsdr3-alex have met with dismal&lt;br /&gt;
failure due to the fact that folks will try to boot up Ubuntu on their&lt;br /&gt;
platform of choice, install the build-essentials, and try to build the&lt;br /&gt;
SDR software like they would on their desktop. While this may result in&lt;br /&gt;
a runnable piece of code, there is currently no support for an FPU. So&lt;br /&gt;
if the software runs at all, the DSP functions will not be able to keep&lt;br /&gt;
up with the incoming data.&lt;br /&gt;
&lt;br /&gt;
This is where I diverged from the mainstream. The key event was the&lt;br /&gt;
availability of FFTW3 3.3.1-beta1 which includes support for the neon&lt;br /&gt;
FPU that is present on the OMAP4 4430/4460/4470. Unfortunately ARM made&lt;br /&gt;
this co-processor an option on Cortex-A9 implementations, and Nvidia&lt;br /&gt;
chose not to have it on Tegra2, so what I wound up with is somewhat Ti&lt;br /&gt;
specific.&lt;br /&gt;
&lt;br /&gt;
I was able to cross compile fftw3 and run several benchmarks on my&lt;br /&gt;
PandaBoard ES and was quite impressed with the result vs. what Vesprerix&lt;br /&gt;
had reported on with their implementation (fork) of fftw3. Once I was&lt;br /&gt;
convinced that the fft routines on which DTTSP depend were &amp;quot;good enough&amp;quot;&lt;br /&gt;
I proceeded to put together a buildroot build that was tuned to using&lt;br /&gt;
&amp;quot;-mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp&amp;quot;. There are lots of&lt;br /&gt;
fiddly cross-compiler options and libraries that have to be checked to&lt;br /&gt;
be sure they actually are using neon (this work has not been completed&lt;br /&gt;
yet).&lt;br /&gt;
After the cross environment was working I went about getting dspserver,&lt;br /&gt;
widget-server and all their dependencies cross-compiled, there were a&lt;br /&gt;
lot. The most troublesome was Codec2, which I still have to hand tweak&lt;br /&gt;
to get to cross-compile properly. My first effort has Codec2 support&lt;br /&gt;
patched out, but the current code does include it. The dspserver and DttSP&lt;br /&gt;
code is identical to what is in the git repository, except for the Makefile &lt;br /&gt;
which is customized to compile with my toolchain. I have modified the &lt;br /&gt;
widget-server code to remove some dead code and add calibration for the Si570.&lt;br /&gt;
&lt;br /&gt;
Another issue that I haven't dug into yet is Jack, it is necessary for&lt;br /&gt;
non-hpsdr protocol servers. Jack2 uses waf (a really old version 1.5.0 at that)&lt;br /&gt;
instead of make. I am able to cross compile Jack1 (0.121.3) since it uses make, &lt;br /&gt;
but Jack2 needs some help. Pulse audio and Port audio were no problem.&lt;br /&gt;
&lt;br /&gt;
There will be an sd card image that one can &amp;quot;dd&amp;quot; onto a blank card.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For SDR work, gcc 4.6.2 is a must.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
I build the kernel and u-boot/SPL outside of buildroot, but use the buildroot toolchain. This may change in the near future, as buildroot will soon support the PandaBoard as a target.&lt;br /&gt;
&lt;br /&gt;
== Kernel==&lt;br /&gt;
&lt;br /&gt;
=== kernel 3.3-rc2 .config ===&lt;br /&gt;
&lt;br /&gt;
== u-boot/MLO/SPL ==&lt;br /&gt;
&lt;br /&gt;
== Buildroot Internal toolchain  with uClibc ==&lt;br /&gt;
&lt;br /&gt;
Start by downloading buildroot and getting all the prerequisites installed on your build machine.&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.buildroot.net/buildroot &lt;br /&gt;
&lt;br /&gt;
Then apply the following patch from the main buildroot directory&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001_add_new_packages.patch&lt;br /&gt;
&lt;br /&gt;
Then replace the config files for buildroot, busybox, and uClibc like this&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0002_replace_configs.patch&lt;br /&gt;
&lt;br /&gt;
Build everything&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
After the build completes you will have a toolchain, packages and libraries except for codec2. This takes a bit of fiddling with to cross compile.&lt;br /&gt;
&lt;br /&gt;
Download http://freetel.svn.sourceforge.net/viewvc/freetel/codec2/?view=tar&lt;br /&gt;
&lt;br /&gt;
Untar in a convenient place, cd to that place, run ./configure, then make. This will build codec2/src/generate_codebook for your desktop platform, which will be needed later.&lt;br /&gt;
&lt;br /&gt;
Now run make menuconfig in the buildroot main dir, go to Package Selection for Target --&amp;gt; Libraries --&amp;gt; Other and select codec2&lt;br /&gt;
&lt;br /&gt;
Run make again from the main buildroot dir and wait till the build fails, which it should.&lt;br /&gt;
&lt;br /&gt;
Now copy the generate_codebook file from codec2/src/ to buildroot/output/build/codec2-289/src/&lt;br /&gt;
&lt;br /&gt;
Apply the following patch from the buildroot/output/build/codec2-289 directory&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0003_codec2_codebook.patch&lt;br /&gt;
&lt;br /&gt;
Now back to the main buildroot dir and run make again. This will finish building the codec2 library.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buildroot Crosstool-ng toolchain with glibc ===&lt;br /&gt;
&lt;br /&gt;
=== buildroot .config ===&lt;br /&gt;
&lt;br /&gt;
=== crosstool-ng config ===&lt;br /&gt;
&lt;br /&gt;
== uClibc vs glibc size and speed in a real world example ==&lt;br /&gt;
&lt;br /&gt;
After building the first PandaSDR system, I was curious as to how things might change if I used glibc. The first thing I did was do a bench mark on the floating point performance of both. uClibc was woefully inadequate in sin/cos &lt;br /&gt;
&lt;br /&gt;
http://gruntthepeon.free.fr/ssemath/neon_mathfun.html&lt;br /&gt;
&lt;br /&gt;
with this benchmark compiled with glibc the performance numbers matched closely with the website, however with uClibc the sinf/cosf numbers were off.&lt;br /&gt;
&lt;br /&gt;
Instead of &amp;quot;2.0 millions of vector evaluations/second -&amp;gt; 121 cycles/value&amp;quot; I got &amp;quot;.1 millions of vector evaluations/second -&amp;gt; 1333 cycles/value&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Based on that benchmark, I had buildroot build a new system with a crosstool-ng based toolchain using glibc 2.13. This was somewhat complicated since the gcc 4.6.2 implementation was EXPERIMENTAL. Numerous other problems were encountered, but after a while I was able to get the toolchain built and the packages compiled with neon support for cortex-a9. The SDR software dspserver and widget-server built without problems except for the lack of libgomp in the target rootfs. It ws built ok, and populated into the toolchain's staging area, it just didn't make into the final rootfs. After all was said &amp;amp; done I compared the size of the libraries and executables, glibc's libs were certainly bigger, but there were fewer of them. The packages executables and libs were about the same size. Overall the two rootfs's were very close to the same size at 32MBytes (uClibc), and 40MBytes (glibc), the largest difference being in /usr/share/locale (292KBytes vs 7.7MBytes). In operation the SDR code consumed about the same amount of cpu power too. More to come as I investigate further.&lt;br /&gt;
&lt;br /&gt;
Buildroot with uClibc was certainly easier to get running, but crossstool-ng with glibc more closely compares to what would be available in a &amp;quot;Distro&amp;quot; like ubuntu/angstrom/arch Linux. Performance without neon was not evaluated. Earlier linpack and fftw3 benchmarks showed that without neon floating performance was abysmal. Both builds had fiddly bits, but my lack of programming skill probably weighed in as well.&lt;br /&gt;
&lt;br /&gt;
Building buildroot with either uClibc or glibc (via crosstools-ng) builds all the host tools necessarry, whereas building crosstools-ng al alone requires versions of host tools that you may not have on your machine. For example, my desktop 64bit Core i7 is running ubuntu karmic, it can't build crosstools-ng without updating lots of tools, but it can build buildroot with crosstools-ng. However it is currently not possible to change the crosstools-ng configuration in buildroot as it is with busybox or uClibc. It's an inconvenience, but not a show stopper. &lt;br /&gt;
&lt;br /&gt;
== rootfs ==&lt;br /&gt;
&lt;br /&gt;
=== Packages ===&lt;br /&gt;
&lt;br /&gt;
alsa-lib-1.0.24.1&lt;br /&gt;
&lt;br /&gt;
alsa-utils-1.0.24.2 &lt;br /&gt;
&lt;br /&gt;
busybox-1.19.3 &lt;br /&gt;
&lt;br /&gt;
codec2-289 &lt;br /&gt;
&lt;br /&gt;
dbus-1.4.16 &lt;br /&gt;
&lt;br /&gt;
dbus-glib-0.98 &lt;br /&gt;
&lt;br /&gt;
dropbear-2011.54 &lt;br /&gt;
&lt;br /&gt;
expat-2.0.1 &lt;br /&gt;
&lt;br /&gt;
fftw-3.3.1-beta1 &lt;br /&gt;
&lt;br /&gt;
gdb-7.3.1-target &lt;br /&gt;
&lt;br /&gt;
gdbserver-7.3.1 &lt;br /&gt;
&lt;br /&gt;
gettext-0.16.1 &lt;br /&gt;
&lt;br /&gt;
i2c-tools-3.0.3 &lt;br /&gt;
&lt;br /&gt;
input-event-daemon-v0.1.3 &lt;br /&gt;
&lt;br /&gt;
json-c-0.9 &lt;br /&gt;
&lt;br /&gt;
libconfig-1.4.8 &lt;br /&gt;
&lt;br /&gt;
libevent-2.0.14 &lt;br /&gt;
&lt;br /&gt;
libglib2-2.28.8 &lt;br /&gt;
&lt;br /&gt;
libogg-1.2.2 &lt;br /&gt;
&lt;br /&gt;
libsamplerate-0.1.8 &lt;br /&gt;
&lt;br /&gt;
libsndfile-1.0.25 &lt;br /&gt;
&lt;br /&gt;
libtool-2.2.10 &lt;br /&gt;
&lt;br /&gt;
libusb-1.0.8 &lt;br /&gt;
&lt;br /&gt;
libusb-compat-0.1.3 &lt;br /&gt;
&lt;br /&gt;
libxml2-2.7.8 &lt;br /&gt;
&lt;br /&gt;
ncurses-5.7 &lt;br /&gt;
&lt;br /&gt;
ortp-0.18.0 &lt;br /&gt;
&lt;br /&gt;
portaudio-V19 &lt;br /&gt;
&lt;br /&gt;
pulseaudio-1.0 &lt;br /&gt;
&lt;br /&gt;
speex-1.2rc1 &lt;br /&gt;
&lt;br /&gt;
wireless_tools-29 &lt;br /&gt;
&lt;br /&gt;
zlib-1.2.5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ghpsdr3-alex ==&lt;br /&gt;
&lt;br /&gt;
The normal ghpsdr3-alex package needs QtSDK installed as well a lot of graphic specific librarys. At present, this is beyond the scope of this How-To, and it will be left for another day to produce the GUI part of this, ie. QtRadio. The PandaBoard will only be running the minimal code necessary to have a functional SDR server radio. pulseaudio and portaudio are required for non hpsdr protocol servers, and have been built successfully, however at present they are not used for the widget-server and could be eliminated from the build.&lt;br /&gt;
&lt;br /&gt;
This code is built outside of buildroot, but using the buildroot created toolchain. This is done by adding a Makefile to dspserver, DttSP, and widget server. The Makefile has a hardcoded path to the toolchain, so it may (will) be necessary to alter it to fit individual circumstances.  &lt;br /&gt;
&lt;br /&gt;
The various parts of this package have been evolving for quite some time, the ghpsdr3-alex project is the most recent &amp;quot;fork&amp;quot; of the original ghpsdr3 software&lt;br /&gt;
&lt;br /&gt;
http://openhpsdr.org/wiki/index.php?title=Ghpsdr3&lt;br /&gt;
&lt;br /&gt;
https://github.com/alexlee188/ghpsdr3-alex&lt;br /&gt;
&lt;br /&gt;
Although this project is trying not to be a fork, in essence it is, as the code is going in a different direction than the original authors intended. Three cheers for open source....&lt;br /&gt;
&lt;br /&gt;
=== dttsp ===&lt;br /&gt;
&lt;br /&gt;
This code is very mature and does much of the heavy lifting, non fft processing for the SDR stack&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== fftw3 ===&lt;br /&gt;
&lt;br /&gt;
The latest beta of fftw3 added support for ARM neon floating point.&lt;br /&gt;
&lt;br /&gt;
http://www.fftw.org/&lt;br /&gt;
&lt;br /&gt;
This is where the heavy lifting part of the DttSP happens. Somewhat independently evolved by the fftw3 authors and Vesperix&lt;br /&gt;
&lt;br /&gt;
http://www.vesperix.com/arm/fftw-arm/&lt;br /&gt;
&lt;br /&gt;
fftw3 3.3.1-beta1 is a critical part of the SDR stack. Without neon support, SDR on ARM v7-a is not possible.   &lt;br /&gt;
&lt;br /&gt;
=== widget-server ===&lt;br /&gt;
&lt;br /&gt;
The SDR-Widget project &lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/sdr-widget/&lt;br /&gt;
&lt;br /&gt;
http://www.yoyodyneconsulting.ca/pages/SDR-Widget.html&lt;br /&gt;
&lt;br /&gt;
Sought to develop an Atmel AVR AT32UC3A3256 based USB UAC2 sound &amp;quot;card&amp;quot;. Able to digitize at 24bits and 192000 samples/second, this project provided a &amp;quot;standard of comparison&amp;quot; noise floor of better than -130dbm. Subsequent firmware development allowed a single firmware image to support UAC1, UAC2 and hpsdr protocols, allowing Linux, MacOSX, and Windows users to benefit.  &lt;br /&gt;
&lt;br /&gt;
The widget-server driver supports the hpsdr protocol allowing all users 24bit 192000 samples/second operation. The following patch removes some dead code and allows claibration of the Si570 VFO chip. This is the direct interface to the SDR harware, and provides a standard ABI to the upper layer.&lt;br /&gt;
&lt;br /&gt;
==== patch to orig ====&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== dspserver ===&lt;br /&gt;
&lt;br /&gt;
The dspserver program is the &amp;quot;middle-ware&amp;quot; between the hardware interface code, many different hardware radios are supported:&lt;br /&gt;
&lt;br /&gt;
hiqsdr&lt;br /&gt;
&lt;br /&gt;
perseus&lt;br /&gt;
&lt;br /&gt;
sdriq&lt;br /&gt;
&lt;br /&gt;
softrock&lt;br /&gt;
&lt;br /&gt;
widget-server&lt;br /&gt;
&lt;br /&gt;
hpsdrsvr&lt;br /&gt;
&lt;br /&gt;
sdr1000&lt;br /&gt;
&lt;br /&gt;
usrp&lt;br /&gt;
&lt;br /&gt;
dspserver includes DttSP and both must be compiled with neon enabled. &lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== QtRadio ===&lt;br /&gt;
&lt;br /&gt;
QtRadio is the GUI interface for the SDR package. In the PandaBoard implementation, no such layer exists. In the future, once ubuntu is stabilised with full GPU acceleration, a GUI might be possible. OpenCL and/or OpenGL are essential. &lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ==&lt;br /&gt;
&lt;br /&gt;
Tested with PandaBoard EA3 and PandaBoard ES EB3.&lt;br /&gt;
&lt;br /&gt;
== SDR Widget Lite Alpha ==&lt;br /&gt;
&lt;br /&gt;
The Widget Lite Alpha boards were capture only, the Widget Beta includes audio out and supports a common firmware and protocol.&lt;br /&gt;
&lt;br /&gt;
== SoftRock Lite+USB Xtall v9.0 ==&lt;br /&gt;
&lt;br /&gt;
=== mod to directly control the Si570 from the Widget ===&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	<entry>
		<id>http://www.elinux.org/Panda_How_to_build_SDR</id>
		<title>Panda How to build SDR</title>
		<link rel="alternate" type="text/html" href="http://www.elinux.org/Panda_How_to_build_SDR"/>
				<updated>2012-02-13T17:20:31Z</updated>
		
		<summary type="html">&lt;p&gt;KenMcGuire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
What I have done is still very much a work in progress. The PandaBoard,&lt;br /&gt;
OMAP4, platform is a very powerful and flexible system, but it has its&lt;br /&gt;
limitations. I have been doing work with the PandaBoard since about&lt;br /&gt;
November 2010, so I've seen the kernel and distributions move from&lt;br /&gt;
barely runable to very capable during that time.&lt;br /&gt;
&lt;br /&gt;
For my SDR work, I run a home built &amp;quot;distro&amp;quot; which I build with&lt;br /&gt;
buildroot. It has the advantages of Gentoo as everything is built from&lt;br /&gt;
source, but it is not quite &amp;quot;plug &amp;amp; play&amp;quot;. There is a lot of fiddling&lt;br /&gt;
that I had to do to get all the dependences and libraries that dspserver&lt;br /&gt;
and widget-server need. I am currently not running QtRadio on the&lt;br /&gt;
PandaBoard, and don't intend to, for a while at least. The DSP software&lt;br /&gt;
needs all the CPU power it can get.&lt;br /&gt;
  &lt;br /&gt;
The major problem that most folks have run into trying to get SDR&lt;br /&gt;
software running on a non-x86 platform is dealing with the lack of FPU.&lt;br /&gt;
Anything without an FPU is just a waste of time, software floating point&lt;br /&gt;
emulation is just tooooooooo slow. Custom code to do SDR with fixed&lt;br /&gt;
point arithmetic is possible and has been done. But, most recent efforts&lt;br /&gt;
to run something like ghpsdr or ghpsdr3-alex have met with dismal&lt;br /&gt;
failure due to the fact that folks will try to boot up Ubuntu on their&lt;br /&gt;
platform of choice, install the build-essentials, and try to build the&lt;br /&gt;
SDR software like they would on their desktop. While this may result in&lt;br /&gt;
a runnable piece of code, there is currently no support for an FPU. So&lt;br /&gt;
if the software runs at all, the DSP functions will not be able to keep&lt;br /&gt;
up with the incoming data.&lt;br /&gt;
&lt;br /&gt;
This is where I diverged from the mainstream. The key event was the&lt;br /&gt;
availability of FFTW3 3.3.1-beta1 which includes support for the neon&lt;br /&gt;
FPU that is present on the OMAP4 4430/4460/4470. Unfortunately ARM made&lt;br /&gt;
this co-processor an option on Cortex-A9 implementations, and Nvidia&lt;br /&gt;
chose not to have it on Tegra2, so what I wound up with is somewhat Ti&lt;br /&gt;
specific.&lt;br /&gt;
&lt;br /&gt;
I was able to cross compile fftw3 and run several benchmarks on my&lt;br /&gt;
PandaBoard ES and was quite impressed with the result vs. what Vesprerix&lt;br /&gt;
had reported on with their implementation (fork) of fftw3. Once I was&lt;br /&gt;
convinced that the fft routines on which DTTSP depend were &amp;quot;good enough&amp;quot;&lt;br /&gt;
I proceeded to put together a buildroot build that was tuned to using&lt;br /&gt;
&amp;quot;-mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp&amp;quot;. There are lots of&lt;br /&gt;
fiddly cross-compiler options and libraries that have to be checked to&lt;br /&gt;
be sure they actually are using neon (this work has not been completed&lt;br /&gt;
yet).&lt;br /&gt;
After the cross environment was working I went about getting dspserver,&lt;br /&gt;
widget-server and all their dependencies cross-compiled, there were a&lt;br /&gt;
lot. The most troublesome was Codec2, which I still have to hand tweak&lt;br /&gt;
to get to cross-compile properly. My first effort has Codec2 support&lt;br /&gt;
patched out, but the current code does include it. The dspserver and DttSP&lt;br /&gt;
code is identical to what is in the git repository, except for the Makefile &lt;br /&gt;
which is customized to compile with my toolchain. I have modified the &lt;br /&gt;
widget-server code to remove some dead code and add calibration for the Si570.&lt;br /&gt;
&lt;br /&gt;
Another issue that I haven't dug into yet is Jack, it is necessary for&lt;br /&gt;
non-hpsdr protocol servers. Jack2 uses waf (a really old version 1.5.0 at that)&lt;br /&gt;
instead of make. I am able to cross compile Jack1 (0.121.3) since it uses make, &lt;br /&gt;
but Jack2 needs some help. Pulse audio and Port audio were no problem.&lt;br /&gt;
&lt;br /&gt;
There will be an sd card image that one can &amp;quot;dd&amp;quot; onto a blank card.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For SDR work, gcc 4.6.2 is a must.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
I build the kernel and u-boot/SPL outside of buildroot, but use the buildroot toolchain. This may change in the near future, as buildroot will soon support the PandaBoard as a target.&lt;br /&gt;
&lt;br /&gt;
== Kernel==&lt;br /&gt;
&lt;br /&gt;
=== kernel 3.3-rc2 .config ===&lt;br /&gt;
&lt;br /&gt;
== u-boot/MLO/SPL ==&lt;br /&gt;
&lt;br /&gt;
== Buildroot Internal toolchain  with uClibc ==&lt;br /&gt;
&lt;br /&gt;
Start by downloading buildroot and getting all the prerequisites installed on your build machine.&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.buildroot.net/buildroot &lt;br /&gt;
&lt;br /&gt;
Then apply the following patch from the main buildroot directory&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0001_add_new_packages.patch&lt;br /&gt;
&lt;br /&gt;
Then replace the config files for buildroot, busybox, and uClibc like this&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0002_replace_configs.patch&lt;br /&gt;
&lt;br /&gt;
Build everything&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
After the build completes you will have a toolchain, packages and libraries except for codec2. This takes a bit of fiddling with to cross compile.&lt;br /&gt;
&lt;br /&gt;
Download http://freetel.svn.sourceforge.net/viewvc/freetel/codec2/?view=tar&lt;br /&gt;
&lt;br /&gt;
Untar in a convenient place, cd to that place, run ./configure, then make. This will build codec2/src/generate_codebook for your desktop platform, which will be needed later.&lt;br /&gt;
&lt;br /&gt;
Now run make menuconfig in the buildroot main dir, go to Package Selection for Target --&amp;gt; Libraries --&amp;gt; Other and select codec2&lt;br /&gt;
&lt;br /&gt;
Run make again from the main buildroot dir and wait till the build fails, which it should.&lt;br /&gt;
&lt;br /&gt;
Now copy the generate_codebook file from codec2/src/ to buildroot/output/build/codec2-289/src/&lt;br /&gt;
&lt;br /&gt;
Apply the following patch from the buildroot/output/build/codec2-289 directory&lt;br /&gt;
&lt;br /&gt;
 patch -p1 &amp;lt; 0003_codec2_codebook.patch&lt;br /&gt;
&lt;br /&gt;
Now back to the main buildroot dir and run make again. This will finish building the codec2 library.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buildroot Crosstool-ng toolchain with glibc ===&lt;br /&gt;
&lt;br /&gt;
=== buildroot .config ===&lt;br /&gt;
&lt;br /&gt;
=== crosstool-ng config ===&lt;br /&gt;
&lt;br /&gt;
== uClibc vs glibc size and speed in a real world example ==&lt;br /&gt;
&lt;br /&gt;
After building the first PandaSDR system, I was curious as to how things might change if I used glibc. The first thing I did was do a bench mark on the floating point performance of both. uClibc was woefully inadequate in sin/cos &lt;br /&gt;
&lt;br /&gt;
http://gruntthepeon.free.fr/ssemath/neon_mathfun.html&lt;br /&gt;
&lt;br /&gt;
with this benchmark compiled with glibc the performance numbers matched closely with the website, however with uClibc the sinf/cosf numbers were off.&lt;br /&gt;
&lt;br /&gt;
Instead of &amp;quot;2.0 millions of vector evaluations/second -&amp;gt; 121 cycles/value&amp;quot; I got &amp;quot;.1 millions of vector evaluations/second -&amp;gt; 1333 cycles/value&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Based on that benchmark, I had buildroot build a new system with a crosstool-ng based toolchain using glibc 2.13. This was somewhat complicated since the gcc 4.6.2 implementation was EXPERIMENTAL. Numerous other problems were encountered, but after a while I was able to get the toolchain built and the packages compiled with neon support for cortex-a9. The SDR software dspserver and widget-server built without problems except for the lack of libgomp in the target rootfs. It ws built ok, and populated into the toolchain's staging area, it just didn't make into the final rootfs. After all was said &amp;amp; done I compared the size of the libraries and executables, glibc's libs were certainly bigger, but there were fewer of them. The packages executables and libs were about the same size. Overall the two rootfs's were very close to the same size at 32MBytes (uClibc), and 40MBytes (glibc), the largest difference being in /usr/share/locale (292KBytes vs 7.7MBytes). In operation the SDR code consumed about the same amount of cpu power too. More to come as I investigate further.&lt;br /&gt;
&lt;br /&gt;
Buildroot with uClibc was certainly easier to get running, but crossstool-ng with glibc more closely compares to what would be available in a &amp;quot;Distro&amp;quot; like ubuntu/angstrom/arch Linux. Performance without neon was not evaluated. Earlier linpack and fftw3 benchmarks showed that without neon floating performance was abysmal. Both builds had fiddly bits, but my lack of programming skill probably weighed in as well.&lt;br /&gt;
&lt;br /&gt;
Building buildroot with either uClibc or glibc (via crosstools-ng) builds all the host tools necessarry, whereas building crosstools-ng al alone requires versions of host tools that you may not have on your machine. For example, my desktop 64bit Core i7 is running ubuntu karmic, it can't build crosstools-ng without updating lots of tools, but it can build buildroot with crosstools-ng. However it is currently not possible to change the crosstools-ng configuration in buildroot as it is with busybox or uClibc. It's an inconvenience, but not a show stopper. &lt;br /&gt;
&lt;br /&gt;
== rootfs ==&lt;br /&gt;
&lt;br /&gt;
=== Packages ===&lt;br /&gt;
&lt;br /&gt;
alsa-lib-1.0.24.1&lt;br /&gt;
&lt;br /&gt;
alsa-utils-1.0.24.2 &lt;br /&gt;
&lt;br /&gt;
busybox-1.19.3 &lt;br /&gt;
&lt;br /&gt;
codec2-289 &lt;br /&gt;
&lt;br /&gt;
dbus-1.4.16 &lt;br /&gt;
&lt;br /&gt;
dbus-glib-0.98 &lt;br /&gt;
&lt;br /&gt;
dropbear-2011.54 &lt;br /&gt;
&lt;br /&gt;
expat-2.0.1 &lt;br /&gt;
&lt;br /&gt;
fftw-3.3.1-beta1 &lt;br /&gt;
&lt;br /&gt;
gdb-7.3.1-target &lt;br /&gt;
&lt;br /&gt;
gdbserver-7.3.1 &lt;br /&gt;
&lt;br /&gt;
gettext-0.16.1 &lt;br /&gt;
&lt;br /&gt;
i2c-tools-3.0.3 &lt;br /&gt;
&lt;br /&gt;
input-event-daemon-v0.1.3 &lt;br /&gt;
&lt;br /&gt;
json-c-0.9 &lt;br /&gt;
&lt;br /&gt;
libconfig-1.4.8 &lt;br /&gt;
&lt;br /&gt;
libevent-2.0.14 &lt;br /&gt;
&lt;br /&gt;
libglib2-2.28.8 &lt;br /&gt;
&lt;br /&gt;
libogg-1.2.2 &lt;br /&gt;
&lt;br /&gt;
libsamplerate-0.1.8 &lt;br /&gt;
&lt;br /&gt;
libsndfile-1.0.25 &lt;br /&gt;
&lt;br /&gt;
libtool-2.2.10 &lt;br /&gt;
&lt;br /&gt;
libusb-1.0.8 &lt;br /&gt;
&lt;br /&gt;
libusb-compat-0.1.3 &lt;br /&gt;
&lt;br /&gt;
libxml2-2.7.8 &lt;br /&gt;
&lt;br /&gt;
ncurses-5.7 &lt;br /&gt;
&lt;br /&gt;
ortp-0.18.0 &lt;br /&gt;
&lt;br /&gt;
portaudio-V19 &lt;br /&gt;
&lt;br /&gt;
pulseaudio-1.0 &lt;br /&gt;
&lt;br /&gt;
speex-1.2rc1 &lt;br /&gt;
&lt;br /&gt;
wireless_tools-29 &lt;br /&gt;
&lt;br /&gt;
zlib-1.2.5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ghpsdr3-alex ==&lt;br /&gt;
&lt;br /&gt;
The normal ghpsdr3-alex package needs QtSDK installed as well a lot of graphic specific librarys. At present, this is beyond the scope of this How-To, and it will be left for another day to produce the GUI part of this, ie. QtRadio. The PandaBoard will only be running the minimal code necessary to have a functional SDR server radio. pulseaudio and portaudio are required for non hpsdr protocol servers, and have been built successfully, however at present they are not used for the widget-server and could be eliminated from the build.&lt;br /&gt;
&lt;br /&gt;
This code is built outside of buildroot, but using the buildroot created toolchain. This is done by adding a Makefile to dspserver, DttSP, and widget server. The Makefile has a hardcoded path to the toolchain, so it may (will) be necessary to alter it to fit individual circumstances.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== dttsp ===&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== widget-server ===&lt;br /&gt;
&lt;br /&gt;
==== patch to orig ====&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== dspserver ===&lt;br /&gt;
&lt;br /&gt;
==== Makefile ====&lt;br /&gt;
&lt;br /&gt;
=== QtRadio ===&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== PandaBoard ==&lt;br /&gt;
&lt;br /&gt;
== SDR Widget Lite Alpha ==&lt;br /&gt;
&lt;br /&gt;
== SoftRock Lite+USB Xtall v9.0 ==&lt;br /&gt;
&lt;br /&gt;
=== mod to directly control the Si570 from the Widget ===&lt;/div&gt;</summary>
		<author><name>KenMcGuire</name></author>	</entry>

	</feed>