Archive

Posts Tagged ‘open source’

HydraBus is an Open Source Hardware STM32 Devkit with Support for NFC via HydraNFC Shield

October 1st, 2014 No comments

Recently, I wrote about public availability of Micro Python board based on STMicro STM32F4 Cortex M4 support that can easily be programmed with Python. It turns out there’s another STM32 board called HydraBus, also supporting Micro Python firmware, or another embedded firmware based on ChibiOS, together with an optional HydraNFC shield capable of sniffing, reading/writing or emulating any 13.56MHz NFC tags.

 

Hydrabus_Board

HydraBus Specifications:

  • MCU – STMicro TM32F405RG micro-controller @ 168 MHz with 1MB flash, 192KB SRAM, and an FPU.
  • External Storage – Micro SD card slot up to 48MHz (~24MB/s)
  • Expansion Headers – 4 headers with access to 44 I/Os (some already used by micro SD and USB 1 & 2).
  • USB – 2x micro USB connector including 1x OTG port, and 1x device/host port, both with ESD protection.
  • Misc – Reset and user button, user LED,
  • Power – 5V via micro USB port.
  • Dimensions – 60mm x 37mm (compliant with a Dangerous Prototype DP6037 PCB size)

As mentioned in the introduction, there are two available firmware for the board, both with source code available on github: Micro Python and a HydraFW based on ChibiOS. The board is also open source hardware with CadSoft Eagle 6.x schematics & PCB layout, BoM, and Gerber files available on Github too, and licensed under Creative Commons BY NC.

 

HydraNFC

If you’d like to “play” with NFC, Benjamin Vernoux, HydraBus’ developer, has also designed HydraNFC shield for HydraBus board with the following hardware specs:

  • Autonomous mode with 4 User buttons and 4 User LEDs.
  • Use HydraBus microSD card to save or load data – Support of microSD (FAT16/FAT32) card up to 32GB (tested with SanDisk Extreme 32GB).
  • Use Texas Instrument TRF7970A NFC chipset with full access to all pins and all modes of TRF7970A through connectors J1/J2/J3.
  • HydraBus Antenna (external) with U.FL connector(cable included) or SMA (optional) and can read Mifare card at up to 8cm (with 20cm cable).

Firmware support is achieved via HydraFW running on STM32 MCU. HydraNFC is also open source hardware, and you’ll find the hardware design files in hydranfc repository.

More details are available on Hydrabus.com. You can purchase the boards directly on the website, or via Seeed Studio for $49 and $79 for respectively HydraBus and HydraNFC boards.

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

Mediatek Releases Android SDK with APIs for HotKnot, Video & Image Processing, Multi-SIM, etc…

September 22nd, 2014 3 comments

Mediatek seems motivated in getting involved with maker and open source communities. Thanks to its works on Android One with Google, the company recently released the Linux kernel source for MT6582 processor, and with a separate endeavour, launched Mediatek Labs bringing LinkIt ONE platform for IoT and wearables to market, as well as a preview release of an Android SDK for its mobile processors.

Features of the SDK includes:

  • Set of libraries for MediaTek feature APIs with full API documentation.
  • x86 MediaTek emulator based on a reference implementation of an Android 4.4.2 (KitKat) device powered by a MediaTek chip, adding capabilities to test and debug telephony and multi-SIM features, a vibrator indicator and a hot-swappable SD card.
  • Customized version of the DDMS (Dalvik Debug Monitor Server), which adds support for testing telephony features, such as plugging and unplugging a headset, sending telephony commands to test call and SMS features, etc…

Mediatek_Android_SDKYou can download the Android SDK after registration, on Mediatek Labs’ Android SDK page.

The SDK contains two zipped files:

  • mediatek_android_sdk_api-19.3.1.zip including several folders:
    • emulator – Linux and Windows executables.
    • images – Images needed by emulator.
    • libs – API libraries.
    • samples – API sample applications.
    • skins – 720p / 1080p skin for emulator.
    • doc – SDK documentation
  • mediatek_android_sdk_tools-19.3.2.1.zip with two folders:
    • ddms-linux-x86_64 – MediaTek customized DDMS (Linux version)
    • ddms-win – MediaTek customized DDMS (Windows version)

The current APIs have three levels, and allow app developer to access:

  • Multi-SIM Telephony
  • Audio / Video
  • Camera MAV (Multiple Angle View) to create 3D and other effects
  • HotKnot (Mediatek’s alternative to NFC)
  • Portrait Enhancements using features such as skin smoothing and eye enlargement
  • Image Transformation such as flip, rotate, and sharpen (hardware accelerated)
  • Gesture, for instance, detection of open palm and victory (V) hand gestures
  • API Level Version Check

You can also consult the API documentation online, and to get started download MediaTek SDK for Android Developer’s Guide. Although many of the API features can be tested on the emulator, you’ll probably want to do some testing on actual phones, and Mediatek will soon provide a list of reference Android phones.

If you happen to live in the United Kingdom, Mediatek will showcase both LinkIt platform and their Android SDK in Manchester at XDA:devcon on September 26-28, 2014.

Via Steve Jones

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

Getting Started with WRTnode OpenWRT Development Board

September 18th, 2014 No comments

Seeed Studio sent me two nice little boards that can be used for IoT development: WRTNode and LinkIt ONE. Today, I’ll show pictures of WRTNode and accessories, and go through the “starting guide“, and will test LinkIt ONE board a few days later.

WRTnode Unboxing

I’ve received WRTnode by Fedex, and the board is stored in a plastic box.
WRTnode_Package
Inside the box, you’ll find the board, a “special” USB used to power the board and as an OTG adapter, a piece of paper with useful links (Wiki), and some WRTnode stickers.

WRTnode, "special" USB cable, and Quick Start Card (Click to Enlarge)

WRTnode, “special” USB cable, and Quick Start Card (Click to Enlarge)

Any micro USB to USB cable can be used to power the board, but this cable is useless to connect USB devices such as flash drives, webcams (OpenCV is supported), Bluetooth dongles, and so on. You could even connect a USB hub to connect multiple USB devices as shown below.

WRTnode_Webcam_Flash_Drive_USB_Hub

I’ve also taken a picture of both sides of the board shown the antenna on-board antennas, Mediatek MT7620n WiSoC, Elixir N2TU51216DG-AC DDR2 chip (64MB @ 400 MHz), the 16 MB SPI flash, as well as the headers for connecting various peripherals via I2C, SPI, UART, USB, etc…

WRTnode Board (Click to Enlarge)

WRTnode Board (Click to Enlarge)

You can also add Ethernet easily by making your own Ethernet cable using T568B wiring standard. I’m not 100% sure it’s safe though, as there are usually some extra components for Ethernet. I’ve included the board pinout chart for your reference.

WRTnode_pinout

WRTnode Quick Start Guide

To start the board simply connect the USB cable to a power adapter or a USB port on your computer. After about 10 seconds, you should see a blue LED lit up, and shortly after, you should see WRTnodeXXXX ESSID, where XXXX are the last 4 digit of the board MAC address. Connect it with your computer, and input the password: 12345678.
WRTNode_Access_PointNormally the board will resolve as several URL, but at first none of them worked.

$ ping i.wrtno.de
ping: unknown host i.wrtno.de
$ ping openwrt.lan
ping: unknown host openwrt.lan
$ ping wrtnode.lan
ping: unknown host wrtnode.lan

But you can check the route to see which subnet is used by your Wi-Fi connection:

$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
192.168.0.0 * 255.255.255.0 U 1 0 0 eth0
192.168.8.0 * 255.255.255.0 U 9 0 0 wlan0

I could finally ping the board with:

$ ping 192.168.8.1
PING 192.168.8.1 (192.168.8.1) 56(84) bytes of data.
64 bytes from 192.168.8.1: icmp_seq=1 ttl=64 time=12.4 ms
64 bytes from 192.168.8.1: icmp_seq=2 ttl=64 time=2.37 ms
64 bytes from 192.168.8.1: icmp_seq=3 ttl=64 time=12.1 ms

Interestingly, ping openwrt.lan, and the other two URL also work afterwards, so maybe I was a little to impatient during my testing…

The first time you need to connect to the board via telnet in order to set the root password:

$ telnet 192.168.8.1

WRTNode_Telnet

Now change the root password using passwd as you would do in any other Linux machine, and exit the connection, in order to connect via SSH instead:

$ ssh [email protected]
The authenticity of host '192.168.8.1 (192.168.8.1)' can't be established.
RSA key fingerprint is bc:00:71:ac:b1:56:e7:7b:c7:7a:9b:6a:59:8e:da:82.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.8.1' (RSA) to the list of known hosts.
[email protected]'s password:
BusyBox v1.22.1 (2014-08-13 19:31:12 UTC) built-in shell (ash)
.....
root@OpenWrt:~#

At this point, you’ve got another Wi-Fi access point on your network, but it’s not connected to Internet, so let’s start by locating the Wi-Fi routers with aps command:

root@OpenWrt:~# aps
WRTnode AP scaner.
Begin scaning APs, pls wait...
Finished.
APs available are...
ra0 get_site_survey:
Ch SSID BSSID Security Siganl(%)W-Mode ExtCH NT WPS DPID
1 CNX-TRANSLATION 94:0c:6d:e6:5b:10 WPA1PSKWPA2PSK/TKIPAES 100 11b/g/n ABOVE In YES

I only have one ESSID here, but this will list all ESSID in your environment. With that data, you can configure WRTnode to connect to your Wi-Fi router using vw command (vi wireless?):

root@OpenWrt:~# vw
config wifi-device 'ra0'
 option type 'ralink'
 option mode '9'
 option channel '1'
 option txpower '100'
 option ht '20+40'
 option country 'US'
 option disabled '0'
config wifi-iface
 option device 'ra0'
 option network 'lan'
 option mode 'ap'
 option encryption 'psk2'
 option key '12345678'
 option ApCliEnable '1'
 option ApCliSsid 'CNX-TRANSLATION'
 option ApCliAuthMode 'WPA2PSK'
 option ApCliEncrypType 'AES'
 option ApCliPassWord 'router_password'
 option ssid 'WRTnode9A60'

You need to change the lines in bold above using the data from aps. The first line is the Channel (Ch) , and the four lines in the wifi-iface section are pretty much self-explanatory. Save the file with Esc + “:wq”.

aps and vw do not report security features in the same way. Here’s the conversion table in case you don’t use WPA2PSK/AES:

aps:Security           vw:ApCliAuthMode/ApCliEncrypType
=========================================================
WPA1PSKWPA2PSK/TKIPAES	WPA2PSK/AES
WPA2PSK/AES		WPA2PSK/AES
WPA2PSK/TKIP		WPA2PSK/TKIP
WPAPSK/TKIPAES		WPAPSK/TKIP
WPAPSK/AES		WPAPSK/AES
WPAPSK/TKIP		WPAPSK/TKIP
WEP			WEP/WEP

Finally, restart the network:

root@OpenWrt:~# nr

and verify WRTnode got an IP address from the Wi-Fi router using DHCP:

root@OpenWrt:~# ia
apcli0 Link encap:Ethernet HWaddr 66:51:7E:32:9A:60
inet addr:192.168.0.105 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::6451:7eff:fe32:9a60/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

Good 192.168.0.105 is an IP adress from local network. Let’s also check we can ping a site on the Internet:

root@OpenWrt:~# ping cnx-software.com
PING cnx-software.com (104.28.18.95): 56 data bytes
64 bytes from 104.28.18.95: seq=0 ttl=53 time=81.999 ms
64 bytes from 104.28.18.95: seq=1 ttl=53 time=87.759 ms
64 bytes from 104.28.18.95: seq=2 ttl=53 time=81.381 ms
^C
--- cnx-software.com ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 81.381/83.713/87.759 ms

All good!

Once I had a problem connecting to my Wi-Fi router, and it turned out my router was configured to automatically select the channel, and it had switched to Channel 4. Running vw again to change the configuration withoption channel ‘4’” made the connection work again. There’s probably an option in OpenWRT to automatically detect the channel, but I haven’t investigated.

You can also install packages for okpg. I tried to install luci, but it was pre-installed, so I added openvpn support instead:

root@OpenWrt:~# opkg update
Downloading http://d.wrtnode.com/packages/Packages.gz.
Updated list of available packages in /var/opkg-lists/barrier_breaker.
root@OpenWrt:~# opkg install luci
Package luci (svn-r10457-1) installed in root is up to date.
root@OpenWrt:~# opkg install openvpn-easy-rsa
Installing openvpn-easy-rsa (2013-01-30-2) to root...
Downloading http://d.wrtnode.com/packages/openvpn-easy-rsa_2013-01-30-2_ramips_24kec.ipk.
Installing openssl-util (1.0.1h-1) to root...
Downloading http://d.wrtnode.com/packages/openssl-util_1.0.1h-1_ramips_24kec.ipk.
Configuring openssl-util.
Configuring openvpn-easy-rsa.
root@OpenWrt:~#

That’s it the quick start guide is completed.

I’ve also run some command to show memory and storage usage:

root@OpenWrt:~# df -h
Filesystem Size Used Available Use% Mounted on
rootfs 7.3M 348.0K 7.0M 5% /
/dev/root 7.5M 7.5M 0 100% /rom
tmpfs 30.2M 80.0K 30.1M 0% /tmp
/dev/mtdblock5 7.3M 348.0K 7.0M 5% /overlay
overlayfs:/overlay 7.3M 348.0K 7.0M 5% /
tmpfs 512.0K 0 512.0K 0% /dev

root@OpenWrt:~# free -m
total used free shared buffers
Mem: 61852 29084 32768 0 3536
-/+ buffers: 25548 36304
Swap: 0 0 0

Out of the 16Mb SPI flash, only 7.3M available are available for OpenWRT, the  rest is probably used by the bootloader. There’s nearly 64MB RAM available, and 29MB free.

If you are interested in the board, you can purchase it from Seeed Studio ($25), which provided the board for this review, but it’s also available on other shops such as DFRobot or Eleduino for the same price, although shipping fees may vary. To go beyond this Quick Start Guide, visit WRTnode WiKi to access the source code, schematics, and various documentation including tutorials.

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

Mediatek Releases Linux Source Code for Android One Smartphones

September 18th, 2014 6 comments

Android One is a program by Google aiming at bringing low cost smartphones to the emerging markets with firmware updates to the latest Android version guaranteed for two years. Three phones part of Android One program have recently been announced for the Indian market: Micromax Canvas A1, Karbonn Sparkle V, and Spice Dream Uno, and Android One phones will be available in Indonesia, the Philippines and South Asia (Bangladesh, Nepal, Pakistan, and Sri Lanka) by the year of the year. The three phones currently available sell for $100, which based on the specs (quad core processor, 1GB RAM, 4GB flash, 4.5″ display) is not exactly an aggressive pricing compared to what is already available from Aliexpress, but the main advantage here is clearly Google support with promised firmware updates, and currently Android 4.4.4. All these phones appear to be powered by Mediatek MT6582, and company decided to release the Linux 3.4.67 source code on Google servers. Please note it’s not the first time Mediatek Linux source code has been released, but at the time, the code was pretty messy, and not standard, so hopefully working with Google may have improved things.

Mediatek_Linux_Kernel_Android_One

Here’s how you can get it:

git clone https://android.googlesource.com/kernel/mediatek/ -b android-mediatek-sprout-3.4-kitkat-mr2

Before building the kernel, you may want to install Android gcc toolchain (in Ubuntu 14.04):

sudo apt-get install gcc-arm-linux-androideabi

Then the build should start with a script::

./build.sh

But it fails looking for an existing external script… Oh well. So I located a config file for MT6582, and completed the build the usual way:

make ARCH=arm sprout_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-androideabi- -j8

and it could generate zImage successfully.

I’ve also checked the Kernel Configuration, and it seems the “Mediatek Properitary Configuration” (sic) section found in the older 3.4.5 source code has now disappeared, and the company is using a standard method to define the kernel configuration (see screenshot above).

Via XDA Developers Blog

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

$39 PcDuino3 Nano ARM Linux Development Board Features HDMI, SATA, Gigabit Ethernet, Arduino Headers…

September 18th, 2014 5 comments

Linksprite recently announced PcDuino3 Nano development board powered by AllWinner A20 dual core processor. PcDuino3 Nano is, as you can expect, a smaller and cheaper version the company’s PcDuino3 board without Wi-Fi module, LVDS header, and I2S interface. The board does not appear to support Li-Po batteries either, but it adds one extra USB host port compared to its big brother.

PcDuino3_Nano

pcDuino3 specifications:

  • SoC – AllWinner A20 dual core ARM Cortex A7 @ 1.0 GHz with Mali 400MP2 GPU
  • System Memory – 1GB DRAM
  • Storage – 4GB NAND Flash, SATA connector, and microSD card slot (up to 32GB)
  • Video Output – HDMI 1.4 with HDCP support
  • Audio Out – 3.5mm analog audio interface
  • Connectivity – Gigabit Ethernet
  • USB – 2x USB host, 1x USB OTG
  • Expansion Headers – Arduino UNO extension interface with 14xGPIO, 2xPWM, 6xADC, 1xUART, 1xSPI, 1xI2C.
  • Camera – MIPI camera support
  • Misc – IR receiver
  • Power – 5V, 2000mA
  • Dimensions – 91.4mm x 53.3mm (PcDuino3: 121mm x 65mm)

In some ways it’s similar to Cubieboard2 but in a smaller factor, with Gigabit Ethernet, but lacking the audio ports. The company still provide Ubuntu 12.04 and Android 4.2 images and source code for the board, as well as an API to control the I/O pins available on the Arduino headers (UART, ADC, PWM, GPIO, I2C, SPI).

PcDuino3 Nano can be purchased on Linksprite or Cutedigi for $39. Shipping is not included, and I got a ridiculous quote for UPS shipping to Thailand ($78) on Cutedigi, but USPS First Class is available on Linksprite for $6.75. You can also visit PcDuino3 Nano product page, and access the download, Wiki, and tutorial sections of the site to find out more.

Thanks to John for the tip.

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

Rockchip RK3288 Android 4.4.2 SDK and Schematics Released for Firefly Board

September 2nd, 2014 19 comments

Firefly-RK3288 development board was first announced in July. I still don’t have news about availability nor pricing, but the T-Firefly website launched yesterday. They seem do have a nice Wiki, but unfortunately everything is currently in Chinese, except when you go to the download page. You’ll find firmware upgrade_tool for Linux and Windows, the USB drivers for rooting and firmware update, firmware images (Android 4.4.2, Ubuntu 14.04, and dual boot), the board schematics (PDF), and Android KitKat 4.4.2 SDK with U-Boot, Linux, and Android source code, some documentation, XBMC apk (no source) with H.265 hardware decode support for MP4, MOV and MKV container formats.

Android_4.4._Linux_Rockchip_RK3288

The SDK is available on Bitbucket. I planned to test it, but unfortunately my network connection is very slow (and unstable) to this server, and I failed to retrieve it with git clone. The company also posted the build instructions in Chinese in their website, but I’ll reproduce them here for Ubuntu 14.04.

  1. Install required packages:
    sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev \
    libesd0-dev libwxgtk2.8-dev squashfs-tools build-essential zip curl \
    libncurses5-dev zlib1g-dev pngcrush schedtool libxml2 libxml2-utils \
    xsltproc lzop libc6-dev schedtool g++-multilib lib32z1-dev lib32ncurses5-dev \
    lib32readline-gplv2-dev gcc-multilib libswitch-perl gcc-arm-linux-gnueabihf \
    lzop libncurses5-dev  libssl1.0.0 libssl-dev
  2. Checkout the SDK:
    mkdir -p ~/edev/firefly
    cd ~/edev/firefly
    git clone https://bitbucket.org/T-Firefly/firefly-rk3288.git
    
  3. Build the Linux kernel:
    cd firefly-rk3288/kernel
    make firefly-rk3288_defconfig
    make -j8 rk3288-box.img
  4. Build Android:
    cd ..
    make -j8
    ./mkimage.sh ota

And after some patience, Android should be fully build. Instructions to create a Ubuntu image are also available in the Wiki, but only in Chinese.

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

xWifi Open Source Hardware Wi-Fi Module and Dock for the Internet of Things (Crowdfunding)

September 1st, 2014 8 comments

For some reasons, Wi-Fi modules are pretty popular this year. After modules such as VoCore, AsiaRF AWM002, and ESP8622, here’s come xWifi. This module is based on Mediatek MT7681 SoC which includes a TCP/IP stack like Espressif ESP8622 or TI CC3300, so it won’t run OpenWRT like VoCore or AsiaRF modules. The module only consumes about 350mW during transfer, it will be open source hardware, and the xWifi module plus a dock with a 10A relay, a humidity and temperature sensor, and a LED will go for as low as $17.

xWi-Fi_IoT_ModulexWifi module only specifications:

  • SoC – Mediatek MT7681 802.11 b/g/n SoC with 32-bit RISC CPU. Support for Client/softAP mode. Package size 5×5 mm
  • Storage – 512KB SPI Flash (for firmware)
  • I/Os via headers:
    • UART and SPI interfaces.
    • 5x GPIOs
    • PWM
  • Power – 3.3V, GND
  • Power Consumption – ~70mA  @ 5V (during RX active)
  • Dimensions – 14 x 17 mm

The module can be used for smart home appliances, smart plug and door locks, smart lighting, metering, remote control, network consumer devices, and more.
There’s also a dock available with xWifi modules:

  • Relay – Songle SRD03VDC-SL-C – 3V for control pins. 230V/10A support.
  • Sensors – Humidity & Temperature sensor
  • Header – 2x 8 pin header for xWifi module
  • Misc – 3-color LED
  • Power – 5V via micro USB port
  • Dimensions – N/A, estimated ~ 4 x 3 cm

The kit comprised of the xWiFi module and the dock with be open source hardware with schematics, PCB layout, Gerber files, and BoM released. An SDK with samples apps for Android & iOS will also be provided.

If you want to know a bit more about MT7681, you can download the datasheet, but you may also access much more resources with documentation, code samples, and SDK via a forum post on Andes Workshop. The datasheet also gives some pricing information for another MT7681 module by Shenzhen Anxinke Technology, which sells for 30 CNY (~$5) in 500-unit order, and as low as 25 CNY (~$4) for 10k orders.

xThink Lab, the company behind the project, has now completed development, and they are looking for $4,500 or more via an Indiegogo campaign to start mass production in November. There’s no word about FCC/CE compliance by the way…, but it was the same with VoCore at the beginning and it ended up being ultra successful. An early pledge of $17 will get your a full kit with xWifi module and the dock. There’s no way to get a xWiFi module only, unless you pledge $37 for 3 modules. Shipping is free to the US and China, and $3 to the rest  of the world, with delivery scheduled for November 2014.

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