This week is the yearly Google I/O at the Moscone Center in San Francisco. It’s a meet and greet for lots of people and companies, a big dot-com over-the-top party, and most of all it’s geared towards “web, mobile, and enterprise developers building applications in the cloud with Google and open web technologies… Products and technologies to be featured at I/O include App Engine, Android, Google Web Toolkit, Google Chrome, HTML5, AJAX and Data APIs, Google TV, and more.” Maybe not so much Google TV or Google Wave this year but for open hardware and mobile folks, this was one of the most important weeks in history.
In this week’s column, I’m going to talk about Google choosing the open source hardware platform (Arduino) for the “Android Open Accessory” kit, and why this matters. I’m also going to talk a little about how Google could make it better. And then, I’m going to do what I always do in many of my columns: make predictions (Why The Arduino Won And Why It’s Here To Stay). 1) Google will have a “Kinect-style” surge of creativity for the Android + Arduino; 2) Apple will start to abandon their restrictive “Made for iPod”(TM) program and adopt the Arduino in some way for accessory development, 3) Microsoft/Nokia/Skype are likely paying attention to all this, and they should look at the Netduino for their accessory development for Windows Phone 7.
If mobile companies want to see the phone market blossom with creativity, with accessories never imagined, this is how it can happen.
Let’s jump right in…
Some quickie Android stats (according to Google):
- 100 million activated Android devices
- 400,000 new Android devices activated every day
- 200,000 free and paid applications available in Android Market
- 4.5 billion applications installed from Android Market
OK, boom — lots of people with these phones, even Apple has to be a little nervous about all these phones. Google told the world this week they’re using Arduino for ease-of-development in creating accessories for the Android platform called “Android Open Accessory.” It’s a perfect choice, we’ll get into why shortly. Here’s what they said, and you can also watch the keynote:
From the beginning, Android was designed to extend beyond the mobile phone. With that in mind, we’ve developed Android Open Accessory to help developers start building new hardware accessories that will work across all Android devices.
Video above, starts around the 36:00 minute mark for the hardware talk.
So Why Did Google Choose Arduino?
Besides there being about 300,000+ Arduino “in the wild,” I estimate there are about half a million people somehow doing something with the Arduino, from students to people not even realizing they’re using this open platform in some way (Processing, education, etc). For a microcontroller platform, as I’ve said before, it’s won and it’s here to stay. Community, open IDE, open hardware, no-mess drivers, cross platform — it’s fairly cheap and easy to get going and do something right away. There really isn’t an easier way to get analog sensor data or control a motor easier and faster than with an Arduino — and that’s a biggie, especially if you’re a phone and want to do this.
So with millions of phones out there and Google looking to make it dead simple to develop accessories, what easy-to-use, sensor-ready, open source platform has enough umpf to get this party started? Arduino. I’m sure that’s debatable (head to comments), but really, what else would be a better match?
Keep in mind, the current “Arduino” hardware Google rolled out isn’t likely what’s going to be used as this matures. We’ll see cheaper (and better) versions shortly, although Google did give away free ones to everyone at Google I/O, and that’s hard to beat. I do think Google made some decisions in their first implementation that I don’t agree with — more on that in a bit.
What Is the Android Open Accessory Kit?
The Android 3.1 platform (also backported to Android 2.3.4) introduces Android Open Accessory support, which allows external USB hardware (an Android USB accessory) to interact with an Android-powered device in a special “accessory” mode. When an Android-powered device is in accessory mode, the connected accessory acts as the USB host (powers the bus and enumerates devices) and the Android-powered device acts as the device. Android USB accessories are specifically designed to attach to Android-powered devices and adhere to a simple protocol (Android accessory protocol) that allows them to detect Android-powered devices that support accessory mode. Accessories must also provide 500mA at 5V for charging power. Many previously released Android-powered devices are only capable of acting as a USB device and cannot initiate connections with external USB devices. Android Open Accessory support overcomes this limitation and allows you to build accessories that can interact with an assortment of Android-powered devices by allowing the accessory to initiate the connection.
A USB micro-controller board that is based on the Arduino Mega2560 and Circuits@Home USB Host Shield designs (now referred to as the ADK board), which you will later implement as an Android USB accessory. The ADK board provides input and output pins that you can implement through the use of attachments called “shields.” Custom firmware, written in C++, is installed on the board to define the board’s functionality and interaction with the attached shield and Android-powered device. The hardware design files for the board are located in hardware/directory.
To cut to the chase, the ADK is an Arduino Mega with a USB host “shield” baked in, and a power supply to provide a steady 5V to the Android phone from an external supply. That’s the good news (there’s some bad news, the way Google did it, not necessarily the best way)…
What Is the Bad News About the Android Open Accessory Kit?
You’re saying… There are already ways to work with Android AND Arduino! What about the MicroBridge, IOIO, Amarino, or Cellbots? Some will say the ADK is a step back from the IOIO; since the ADK will only support newer phones, this means any accessories will not likely be backwards compatible, but that’s how it goes with phones, I think. They do want to sell new models and get folks to update their phones.
The other projects and products are all still good and will continue, but they just don’t have Google behind them (yet). I think we’ll see something close to the IOIO from Google as things move forward, but that’s just a guess. Pictured above, Oleg Mazurov’s USB host shield (using MicroBridge).
By botching together a new protocol the ADK team ensured that nobody will be able to use this on anything but the latest phones, which makes it completely useless for commercial applications in the short term. For hobbyists it means that unless they’re willing and able to update their devices to the latest ROMs they won’t be able to join the fun until their next smartphone purchase. So we’re dealing with a badly designed, incompatible alternative to existing solutions. And this alternative is now the standard backed by Google.
I really want to love ADK, and I would have been the first to applaud Google for a job well done if they had actually taken the time to come up with a proper design. They could have added a new protocol properly, they could have built something on top of ADB, but more importantly they could have added proper support for OTG. As it stands ADK doesn’t solve any problems that weren’t already solved. Instead, they made the situation only worse by adding a new poorly thought-out standard, and we all know that’s the last thing Android needs another one of.
Read the whole thing — lots of good points in there. But Google declaring Arduino for Android is what the big news is here — other, future, and better implementations will be coming out soon. I know folks who are working on this right now. It’s being reported you could potentially use a USB host shield and an Arduino now, but there are power issues and I’m waiting to confirm if this is all true.
Another thing — Google doesn’t really have hardware expertise, despite being Google. I think the MEGA + USB host shield “all in one” was something quick and easy to get out the door before Google I/O. And already has the developer base of the Arduino. Google likely didn’t want to have folks needing to get or purchase some Keil complier just to make some prototypes and accessories or blink LEDs from your phone. So again, good on Google. But I am looking forward to the next revision (and what the open source community does).
Oh, one more thing before I keep going, here are the ADK files you can download, Google did everything properly for OSHW, by the way (nice!).
Is This the End Of Apple’s Restrictive “Made for iPod”(TM)?
What do you need to do to get Apple’s approval for making “approved” accessories that work with the iPod/iPhone, etc? This:
Participate in the MFi licensing program to develop electronic accessories that connect to iPod, iPhone, and iPad. Licensed developers gain access to technical documentation, hardware components, technical support and certification logos. Developers receive technical specifications describing the iPod Accessory protocol, the communication protocol used to interact with iPod, iPhone, and iPad. Developers also gain access to the hardware connectors and components that are required to manufacture iPod, iPhone, and iPad accessories.
I think “licensed developers” is old-think and “open specifications” is where it’s at. Will Apple’s way eventually come to an end in some way? I think so, but it really depends on what happens with Android accessories, if all the cool and amazing stuff only happens there. Apple will likely make it easier — they’ll need to.
I’ve heard that Apple accessory NDAs are really, really restrictive (more than any others) and someone I know who made accessories said to me: “If Apple likes what you’re working on, they’ll just clone it, always keep that in mind.” This was years ago, during the iPod-only days, but that’s something to consider. If Apple doesn’t like the hardware I want to make, they can shut me down, just like pulling an app from the App store. If anyone has wonderful experiences with Apple and hardware, please post up in the comments (if you’re allowed to).
Perhaps I’m a little burnt from Apple’s iOS program in general (they never approved my app, no way to contact Apple, it was a nightmare). I found other stuff to work on, but it was a huge waste of my time. Besides, for now, I really want to support the company that does the most with open source hardware.
One more thing… I think Google is going to do a lot of accessory development internally -
Hershenson and Brit were part of the trio that founded Danger in 2000. The third partner: Android chief Andy Rubin. The three engineers launched pioneering consumer smartphones, like the once-ubiquitous-among-celebrities T-Mobile Sidekick in 2000.
Now they’re back together again. Within the last 12 months, Britt and Hershenson quietly joined Google to run a new wing within Android called Android Hardware. …they spend their days building things that will turn into reference designs for Android peripherals. Android Hardware is exploring everything from home automation to exercise gaming and robotics. While there are no immediate plans to build Google-branded Android hardware accessories, Brit indicated that he would love to see Google introduce some of its own Android peripherals in the long term. The folks in Cupertino have to be paying attention.
This is a pretty awesome team, I wouldn’t be surprised if they cooked up a lot of amazing accessories and then worked with / handed them off to the steady stream of Googlers who leave the company to start companies (to later be re-acquired by Google). This something completely different than the way Apple works usually. I still miss the old Sidekick.
What Should Microsoft/NOKIA/Skype Do About This?
What if Microsoft wanted to do what Google just did? Is there an open source .NET platform? YES! The Netduino. Quick, Ballmer, get out there and talk about this and how it’s the next accessory platform for Windows Phone 7. Seriously! Get out there and talk about how this is the next “Kinect.” But PLEASE, don’t acquire the company that makes Netduino — that would screw it up. Just support them publicly (or secretly, Secret Labs!) and get every .NET developer a Windows Phone 7 phone and a Netduino to start hackin’ on. Developers matter, right?
DEVELOPERS DEVELOPERS DEVELOPERS. Kidding aside, there are likely meetings in Redmond about this now, hopefully it will get past committee-think. netduino, Microsoft, do it!
Will Android Be the Next “Kinect” for Creative “Hacks”?
Just wait, thousand of Google I/O attendees are heading back home. Within days we’ll see the first “hacks,” within weeks the first applications and accessory prototypes, and then within months (or less) accessories being sold, Kickstarter funded, and/or new startups coming out of nowhere. The best way to predict what’s going to happen next is for all of us to build it. I didn’t really care too much about the Android until now. I’m excited to build something new without needing to jailbreak, jump through hoops, or ultimately get turned down. And I get to use my favorite open source hardware platform, the Arduino. Why does Google choosing Arduino matter? Because from now on, if you want to compete with Google and inspire developers to make accessories, you gotta go open, and you got to go Arduino.