Archive

Posts Tagged ‘Linux’

CuBoxTV is a $100 OpenELEC TV Box Powered by Freescale i.MX6 Quad SoC

November 26th, 2014 5 comments

Last year, Solidrun launched their Cubox-i mini PCs powered by Freescale i.MX6 single, dual or quad core processor, and running Debian, OpenSUSE, Android 4.4, or various XBMC based Linux distributions. The company has now announced a new product called CuboxTV, that on surface looks similar to their Cubox-i4Pro mini PC with a quad core processor, but instead of running Linux desktop distributions, or Android, it’s pre-loaded with OpenELEC Linux distribution running Kodi 14.

CuboxTVCuboxTV specifications:

  • SoC – Freescale i.MX6 Quad with four Cortex A9 core up to 1GHz, and Vivante GC2000 3D GPU
  • System Memory – 1GB SDRAM @ 1066 MHz
  • Storage – 8GB internal storage + micro SD interface
  • Video Output – HDMI 1.4b, 3D support
  • Video Decoders – MPEG-4 ASP, XVID, H.264 HP, H.263, MPEG-2 MP, MJPEG BP, VP8, Sorenson-H263.
  • Video Encoders –  MPEG-4 SP, H.264 BP, H.263, MJPEG BP
  • Image Codecs – JPEG, BMP, GIF, PNG.
  • Audio Decoders – AAC, AACPlus, MP3, Vorbis, FLAC, audio encoder SBC, MP3, speech codecs G.723.1, G.726, G.711, G.729AB, NB/WB AMR.
  • Audio Encoders – SBC, MP3.
  • Speech Codecs – G.723.1, G.726, G.711, G.729AB,NB/WB AMR.
  • Audio Output – HDMI, optical S/PDIF
  • Connectivity – Gigabit Ethernet (Limited to 470 Mbps)
  • USB – 2x USB 2.0 host port
  • Misc – IR receiver
  • Power – 5V/3A
  • Dimensions – 5.08 x 5.08 x 5.08 cm
CuboxTV_Kodi_Linux_OpenELEC

CuboxTV, or is it Cubox-i4?

The picture above can be found on CuboxTV product page, but it’s probably a picture of Cubox-i4Pro, as CuboxTV lacks the eSATA port, and the micro USB “service” port (for serial console) according to specifications listed by SolidRun. Other differences include lack of Wi-Fi/Bluetooth connectivity, and 1GB RAM instead of 2GB RAM.

So CuboxTV has been optimized to provide a cost effective solution dedicated to media playback, and while Cubox-i4Pro sells for $139.99, CuboxTV goes for $99.99 during the pre-sale period (first two weeks?), and $124.99 thereafter.

Via Liliputing and Harley.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Imp Computer is an Ubuntu 14.04 mini PC Based on ODROID-U3 Development Board (Crowdfunding)

November 25th, 2014 3 comments

Hardkernel ODROID-U3 is a development board powered by Samsung Exynos 4412 quad core Cortex A9 processor that’s both small and cost effective at $59, not including required storage and shipping. An Israeli start-up named Imp Computer has now launched a mini PC of the same name, based on ODROID-U3 board, and running Lintux Ubuntu 14.04 with Cinnamon based Imp Desktop environment, and various pre-installed software packages like Chrome and Firefox web browsers, Kodi/XBMC, etc.., and somehow Microsoft Office with Word, Excel, PowerPoint, and Outlook are also listed, which does not seem right on an ARM Linux machine, but they are apparently using Microsoft Office Online to achieve this feast.

Imp_Computer
Imp computer specifications:

  • SoC – Samsung Exynos 4412 Prime @ 1.7 Ghz with ARM Mali-400MP4 GPU @ 440MHz
  • System Memory – 2GB @ 880MHz
  • Storage – 8 or 16 GB internal storage (micro SD card)
  • USB – 3x USB 2.0 Host ports, 1x USB 2.0 device for ADB/mass storage
  • Connectivity – 10/100Mbps Ethernet (LAN9730)
  • Video Output – micro HDMI
  • Audio Output – 3.5mm audio jack, micro HDMI
  • DC Power – 5V/2A
  • Dimensions – 10.92 x 10.92 x 3.05 cm

The mini PC comes with a power adapter, a USB Wi-Fi dongle, and a mini HDMI to HDMI cable.Imp_Computer_Ports

A wireless HDMI stick (DLNA, Airplay), and a wireless keyboard & trackpad are also available as options. One of the advantage of this device is that the software is fully open source, and it leverages the work done by Hardkernel and member of ODROID community for Ubuntu and Android support. Their solution appears to have brought several open source solutions together (Linux, ownCloud, XBMC, etc..) to make easier for the end-user.

Imp Desktop Including Microsoft Office Icon

Imp Desktop Including Microsoft Office Icon

The project is now on Indiegogo (fixed funding), where the developers aim to raise at least $100,000 for mass production. A $129 early bird pledge should get the 8GB storage version including required accessories such as power supply and cable, and once all 250 early bird perks are gone, it will go for $149. The premium edition version with 16GB storage is $199, which seems a steep markup for just 8GB storage extra, and maybe a better looking case (not so clear). Shipping is free to the US, and $15 to the rest of the world. Delivery is expected to be in March/April 2015.

You can also find some more details on Imp Computer website.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Technologic TS-7250-V2 Industrial Grade Embedded Computer Features Marvell PXA166/PXA168 Processor

November 24th, 2014 1 comment

Technologic Systems, as US based embedded systems solutions company, has announced availability of their TS-7250-V2 industrial grade PC/104 single board computer powered by Marvell PXA166 or PXA168 ARMv5 processor, with 512 MB RAM, 2GB eMMC SLC flash, single or dual Ethernet, and an optional Lattice FPGA with up to 17k LUT (Look-up Tables) among other features. They also have two enclosures namely TS-ENC720 (1x RJ45 port), and TS-ENC720-2ETH (2x RJ45 ports) for the boards.

Technologic_Systems_TS-7250-V2TS-7250-V2 technical specifications:

  • Processor (one of the two)
    • Marvell PXA166 Sheeva ARMv5 processor up to 800 MHz
    • Marvell PXA168 Sheeva ARMv5 processor up to 1066 MHz
  • FPGA – 17 KLut Lattice LFXP2-8E FPGA
  • System Memory –  512 MB RAM
  • Storage – micro SD card socket + optional 2GB eMMC flash + optional full size SD card socket
  • Connectivity – 1x or 2x 10/100 Ethernet ports,
  • USB – 2x USB HS host ports, 1x micro USB device connector (console port)
  • Serial – 3x RS-232 serial ports, 3x TTL serial ports, RS-485 port, optional RS-422 port, and optional CAN port if Lattice FPGA selected.
  • Expansion Headers
    • PC/104 connector + optional 40-pin PC/104 connector
    • LCD and DIO Headers
    • 75 TTL DIO (including PC/104 conn)
  • Other I/Os – A/D converter, 5 channels (with 4-20 mA current loop)
  • Misc – RTC with battery and temp compensation, temperature Sensor
  • Power Supply –  5VDC or 8-28VDC power input
  • Temperature Range –  Industrial temperature range (-40°C to 85°C)

 

TS-ENC720-7200-2ETH_Rear_View

TS-ENC720-7200-2ETH Kit

TS-7250-V2 can boot from either the onboard eMMC SLC flash or microSD card to an embedded Linux distributions based on Linux kernel 3.14, or Debian 7 “Wheezy” distribution. The board can boot in 0.87 seconds to a busyBox terminal shell, but the company also provided an older Linux 2.6.34 kernel that can boot in 0.52 seconds to the command line. The company claims there’s no proprietary source code in the kernel as hardware specific functionalities are handled by user-space utilities such as spictl, sdctl, xuartctl, etc…, and the company also provides drivers for all on board peripherals. The company will also provide Opencore source core for the FPGA. More details about software support can be found on TS-7520-V2 Wiki. Schematics (PDF) and mechanical drawings (PDF) can also be downloaded from the documentation page.

The TS-7250-V2 single board computer can be purchased now starting at $165 for 100-unit orders. Models include TS-7250-V2-512-8S-I industrial temperature baord with PXA166 and 512 MB DDR2 ($199), and TS-7250-V2-512-4096F-10S-I-DEV, the version recommended for development, is also an industrial temperature grade board, but instead featuring  Marvell PXA168 processor, 512MB DDR2 RAM, 2GB Flash (4GB eMMC configured as 2GB SLC Flash), 2x 10/100 Ethernet ports, and 1x RS-422 port ($251). More information may be found on Technologic Systems TS-7250-V2 product page, and more pricing options are listed in the press release.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

CubieTruck Metal Case Unboxing and Disassembly

November 19th, 2014 15 comments

CubieTruck Metal Case is a kit comprised of CubieTruck (aka CubieBoard 3), a 128GB SSD, a 5,300 mAh battery, a power adapter, and various cables. In case you are not familiar with CubieTruck, it’s a development board by CubieTech, based on Allwinner A20 dual core ARM Cortex A7 processor with 2GB RAM, 8GB NAND flash, a SATA connector, HDMI & VGA outputs, Gigabit Ethernet, 2 USB host ports, and a mini USB OTG port. CubieTech decided to sent me a kit, as it was featured on CNX Software, and today, I’ll show what’s exactly is inside the kit since the product description is not 100% clear. I’ve been told it’s pre-installed with Lubuntu, so in a separate post next week, I’ll try Linux, report on the SSD performance, and check the battery UPS function, and possibly life on a charge.

CubieTruck Metal Case Unboxing

I’ve received the kit in a cardboard box by Fedex. It’s mostly a blank box so I skipped the picture. Contrary to what I believed, the kit comes mostly pre-assembled.

CubieTruck Metal Case Kit (Click to Enlarge)

CubieTruck Metal Case Kit (Click to Enlarge)

CubieTruck board, the 128GB SSD, and the battery are already fitted into the metallic enclosure. Extra accessories include a Wi-Fi antenna, a mini USB to USB cable, an OTG adapter, a 5V/2.5A power supply with its corresponding USB cable, front and rear panels with ports’ description, and 3M stickers to tape then against the case.
Metal_Plate_with_Sticker
So you just need to peel the 3M sticker, tape it on the back of the metallic plate, and remove the bits hiding the connector by pushing with a thin object. I simply used my cutter. Then remove the second layer, and stick it on the front or rear panel. If you plan to open the box first, to access the headers, you should delay this step since you’ll have to take out the plates to open the device.

Front Metal Plate with Ports Description Installed (Click to Enlarge)

Front Metal Plate with Ports Description Installed (Click to Enlarge)

So on the front you’ve got the IR receiver, the power button, four LEDs (for volume?), a micro SD card slot, an headphone jack, a mini USB OTG port, and two USB 2.0 host ports.

CubieTruck_Metal_Case_Kit_Rear_PanelThe VGA port, optical S/PDIF, HDMI port, Gigabit Ethernet port, power barrel, and Wi-FI antenna connector can be found on the rear panel.

CubieTruck_Metal_Case_ButtonsThere are also two button on the side of the device for Reset (small), and FEL mode (big) that allows you to update the firmware.

CubieTruck Metal Case Kit Internals

I’ve also disassembled the kit to see what’s inside. You have to remove 10 screws in total on the front and rear panels to be able to take out the board.

Metal Case for CubieTruck (Click to Enlarge)

Metal Case for CubieTruck (Click to Enlarge)

The Board/SSD/Battery then slide easily out of the metallic enclosure.

CubieTruck Development Board (Click to Enlarge)

CubieTruck Development Board (Click to Enlarge)

Untighten four more screws to remove the board and reveal the SSD.

128GB Chiang Jiu SDD (Click toEnlarge)

128GB Chiang Jiu SDD (Click to Enlarge)

Contrary to the KingSpec C3000.6-M128 SSD found in the installation instructions, I got a 128GB CHUANG JIU SSD. There’s no model number, just a serial number. I could not find this SSD anywhere on the net, albeit Chuang Jiu S300-J8-128GB appears to have similar specs (128GB / MLC), but it does not look the same at all. Anyway that means the brand of SSD found in the kit may vary. The SSD also makes some noise when I move it around, which I find a little odd and worrying.

Back of 5,300 mAh Battery

Back of 5,300 mAh Battery

If I remove three more screws use to attach the SSD to the enclosure, I can see the battery, but the top side is pure black. Some markings are located on the bottom of the battery bu nothing indicates capacity.

You can also watch the video below where I unbox the kit, and disassemble it live.

Availability and Price

CubieTruck Metal Case kit can be purchased for $169 on Seeedstudio (In Stock next week, e.g. Nov 24), or 149 Euros exc. VAT on EmbeddedComputer.nl. I found the price very good, but just to make sure, I’ve decided to check the price it would cost to get a similar kit by buying individual components:

The total would be $216.32 + some shipping, and if you take out CubieBoard3 from the kit, it would be $127.37 + possibly some shipping. So with this kit, you save about $50 compared to doing it on your own,and this confirms it’s good value provided you need a rugged metal enclosure, a battery, and a SSD for storage.

Next step is to boot it up, check current support in Linux including 2D/3D acceleration, video playback, flash support, and SSD performance, as well as battery behaviour and life.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

How-to Install Ubuntu on Allwinner A80 Powered pcDuino8 and A80 OptimusBoard

November 17th, 2014 5 comments

Last month, pcDuino released Android 4.4 and Ubuntu images for pcDuino8 board powered by Allwinner A80 octa core processor, and since it’s the same board layout as A80 OptimusBoard, I decided to try it out, but it failed as the update script would try to flash it to a partition that’s too small for the root file systems. But last week, Ian Morrison and Minidodes gave it another try, and successfully booted Ubuntu, or more exactly Lubuntu, on A80 OptimusBoard.

Lubuntu Screenshot in A80 OptimusBoard

Lubuntu Screenshot in A80 OptimusBoard

Both their screenshot reports sun9i platform in /proc/cpuinfo, so that’s definitely Allwinner A80, but only one core is shown. I’m not sure if it’s because the other are idled and don’t show, or for some reasons, the kernel only supports one core at this stage.

Anyway, here’s how they did to install Lubuntu:

  • Flash the kernel (pcduino8_kernel_livesuit_20141008.img) with PhoenixCard or Livesuit first. See instructions to use Livesuit with A80 OptimusBoard.
  • Extract the rootfs (pcduino8_ubuntu_20141008.rar) to an SD card or USB flash drive. There should be two files: pcduino8_ubuntu_20141008.img and update.sh.
  • Boot the board, but don’t insert the SD card or USB flash drive yet.
  • update.sh script will attempt to copy the rootfs to /dev/nandd, but there’s not even space, so it will fail. So instead login as root (no password) and kill update.sh: ps ax | grep update, kill “pid”.
  • Now connect the mass storage device to pcDuino3 / A80 Optimusboard, and mount it to /mnt
  • Flash the Ubuntu image to /dev/mmcblk0p1:
    dd if=pcduino8_ubuntu_20141008.img of=/dev/mmcblk0p1 bs=1M
    sync
  • Now reboot the board and interrupt the boot sequence to enter U-boot, and use ‘env’ to change the bootargs with mmc_root to /dev/mmcblk0p1 and init to /sbin/init.
  • Save the environment with env save, and boot the board to start Ubuntu.

I have not tried (yet), since I’m busy with other hardware, so let me know if the instructions above need improvement. [Update: the procedure may depend on the Android firmware / flash partition, as described in the comments section]

On a side note, Merrii released some new SDKs for A10, A20, A31, and A80.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Zsun SD111 Is Now “Officially” an Hackable Wireless Flash Drive

November 16th, 2014 11 comments

Zsun SD11x are Wi-Fi flash drives for 8 to 128 GB eMMC, alternative to Sandisk or Kingston. Yesterday, I soldered the UART pins to Zsun SD111 (8GB) flash drive to access the serial console, but I did not manage to enter the terminal as it was password-protected. I posted my results anyway, as I was convinced I would get some clever ideas from my readers, some of which appeared to be a little time consuming, but Zoobab offered a simple solution that consisted in changing the boot parameters, by replacing /sbin/init by /bin/sh.

Zsun_SD111_UART_Pins

The first step is to interrupt the boot by pressing space or another key, in order to access U-boot.
Now we can check the U-boot environment

ar7240> printenv
bootargs=console=ttyS0,115200 root=31:02 rootfstype=jffs2 rw init=/sbin/init mtdparts=ar7240-nor0:64k(u-boot),64k(u-boot-env),6720k(rootfs),1216k(uImage),64k(NVRAM),64k(ART)
bootcmd=bootm 0x9f6B0000
bootdelay=4
baudrate=115200
ethaddr=0x00:0xaa:0xbb:0xcc:0xdd:0xee
ipaddr=10.168.168.1
serverip=10.168.168.10
stdin=serial
stdout=serial
stderr=serial
ethact=eth0

Environment size: 361/65532 bytes

Let’s keep everything the same, except the init, which can be modified with the command below:

ar7240> setenv bootargs console=ttyS0,115200 root=31:02 rootfstype=jffs2 rw init=/sbin/sh mtdparts=ar7240-nor0:64k(u-boot),64k(u-boot-env),6720k(rootfs),1216k(uImage),64k(NVRAM),64k(ART)

Let’s start Linux:

ar7240> boot

It will end with:

ar7240wdt_init: Registering WDT success
VFS: Mounted root (jffs2 filesystem) on device 31:2.
Freeing unused kernel memory: 128k freed


BusyBox v1.01 (2014.06.20-01:25+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

/bin/sh: can't access tty; job control turned off
/ #

Perfect! We’ve got access to the command line. Let’s have look at the users:

~ # cat /etc/passwd 
root:x:0:0:root:/root:/bin/sh
Admin:x:0:0:root:/root:/bin/sh
bin:x:1:1:bin:/bin:/bin/sh
daemon:x:2:2:daemon:/usr/sbin:/bin/sh
adm:x:3:4:adm:/adm:/bin/sh
lp:x:4:7:lp:/var/spool/lpd:/bin/sh
sync:x:5:0:sync:/bin:/bin/sync
shutdown:x:6:11:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
uucp:x:10:14:uucp:/var/spool/uucp:/bin/sh
operator:x:11:0:Operator:/var:/bin/sh
nobody:x:65534:65534:nobody:/home:/bin/sh
ap71:x:500:0:Linux User,,,:/root:/bin/sh

If we look at the shadow file only root and Admin have a password, so you could login with user ap71 without password for example, but that’s not too useful since you would not have root access. So I simply changed the root password with passwd command, but let’s me access the board via the UART console or telnet.

I’ve run some command to find out more about the system.

~ # uname -a
Linux (none) 2.6.31--LSDK-9.2.0_U11.14 #1 Wed Aug 6 13:13:40 HKT 2014 mips unknown
~ # df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                 6.6M      5.8M    796.0k  88% /
/dev/sda1                 7.4G     18.8M      7.4G   0% /etc/disk
~ # cat /proc/cpuinfo
system type             : Atheros AR9330 (Hornet)
processor               : 0
cpu model               : MIPS 24Kc V7.4
BogoMIPS                : 266.24
wait instruction        : yes
microsecond timers      : yes
tlb_entries             : 16
extra interrupt vector  : yes
hardware watchpoint     : yes, count: 4, address/irw mask: [0x0000, 0x0ff8, 0x0943, 0x0650]
ASEs implemented        : mips16
shadow register sets    : 1
core                    : 0
VCED exceptions         : not available
VCEI exceptions         : not available

~ # busybox
BusyBox v1.01 (2014.06.20-01:25+0000) multi-call binary

Usage: busybox [function] [arguments]...
or: [function] [arguments]...

BusyBox is a multi-call binary that combines many common Unix
utilities into a single executable.  Most people will create a
link to busybox for each function they wish to use and BusyBox
will act like whatever it was invoked as!

Currently defined functions:
[, arping, ash, awk, brctl, busybox, cat, chgrp, chmod, cp, cut,
date, dd, df, dirname, dmesg, du, echo, egrep, env, ethdebug,
ethreg, expr, factoryreset, false, fgrep, find, getty, grep, httpd,
id, ifconfig, init, insmod, iproute, kill, killall, linuxrc, ln,
login, ls, lsmod, md, md5sum, mkdir, mknod, mktemp, mm, modprobe,
more, mount, mv, passwd, ping, ps, pwd, reboot, rm, rmdir, rmmod,
route, sed, sh, sleep, strings, su, sync, tail, tar, telnet, telnetd,
test, tftp, touch, true, tty, udhcpc, udhcpd, umount, uname, vconfig,
vi, wc, xargs

~ #

The linux kernel contains the string “LSDK-9.2.0″ which appears to be an SDK for Atheros AR93XX, and can be downloaded here (I have not tried/verified the download). So the device is not running OpenWRT. Since telnet is not exactly secure, and want to access the device over the network, you should probably install dropbear, There’s only 796 KB left on the SPI flash, so what you can do is probably limited, although it might be possible to delete unused files to get extra space. Have fun!

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Avionic Design to Introduce Embedded Nvidia Tegra K1 Processor Module

November 14th, 2014 2 comments

Avionic Design, a German company specializing in the development and production of electronic components for the embedded, avionics, and healthcare market, has been working on an Nvidia Tegra K1 system-on-module (SoM) , using the quad core version of the processor, with 2GB RAM, and 16GB eMMC, putting most features found in Jetson TK1 development board into a 70×50 mm module.

Tegra_k1_SoMNvidia Tegra K1 CPU module specifications:

  • SoC – Nvidia Tegra K1 quad core Cortex A15 processor up to 2.2 GHz with Nvidia Kepler GPU with 192 cores up to 450 MHz
  • System Memory – 2 GB DDR3 (1833 MHz)
  • Storage – 16GB eMMC + SATA & SD/MMC via SoM connectors
  • Interfaces:
    • Video In – 2x 4-lane CSI
    • Video Out – HDMI 1.4b, eDP, two 4-lane DSI
    • Audio – 2x I2S, S/PDIF In and Out
    • High Speed I/O
      • PCIe 2.0 1x, PCIe 2.0 4x
      • 2x USB 3.0, 2x USB 2.0 host, 1x USB 2.0 client
      • SDIO
      • HSIC
    • Regular I/O
      • 3x I2C, up to 4x SPI, OWR (One-Wire)
      • Up to 4x UART
      • JTAG + debug UART
      • Various GPIO @ 1.8 & 3.3V
  • Power Supply – 3.3 & 5 V
  • Power Consumption – 5 to 15 Watts
  • Dimensions – 70 x 50 x 4.7 mm (6.6 mm height including carrier board connectors)
  • Temperature Range – 0-70°C, with extended temperature range modules available later in 2015.
Nvidia Tegra K1 CoM Block Diagram

Nvidia Tegra K1 CoM Block Diagram

There’s no information about software support, but it’s probably safe to assume that the company leveraged resources for Jetson TK1 board, and Ubuntu 14.04 (Linux for Tegra) is most likely officially supported, and community builds such as Gentoo and Android may be as well. No mention was made about a reference baseboard / carrier board yet.

Avionic Design’s embedded Tegra K1 processor module engineering sample will be available in Q4 2014 (that’s now), and mass production is scheduled for Q1 2015. Full details for the Tegra K1 SoM have not been released yet, and I got most information from a company’s brochure (PDF).

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter