Search

The Internet of Things evolution and Android

March 12, 2012


The concept of 'Internet of Things' or IoT in short is not new at all. Infact, technologists and visionaries have been postulating this concept since the beginning of the Internet. While the idea has been around for decades, some attribute the credit of coining the term to Kevin Ashton[1] in 1999.

IoT is a grand vision all kinds of devices, being able to collect data using a variety of sensors and be able communicate with each with each other using 'internet like concepts'. And when we say devices, we don't just mean 'phones, tablets and TVs' - this grand vision includes all kinds of  'devices' - ranging from 'in-body' devices (from pacemakers to Ray Kurzweil's futuristic ingestible nano robots[2]), to 'wearable devices' (smart watches, blood pressure monitors, smart glasses) to regular communication devices (phones, tablets), to home devices (fridge, washer-dryer, alarm systems) to entertainment devices (TVs, Set Top Boxes, Gaming consoles) and even including transport devices (cars, trucks, ships, airplanes).

If we were to summarize the benefits of this grand vision it would be to make them all into a platform where data can be communicated, collated, analyzed and converted into useful information, in a secure way, that aims to make our lives better. We know how smartphones have already dramatically improved our productivity level and we also know that smartphones now outsell PCs [3](which wouldn't happen if people were not using smartphones to do a lot of work they would do on PCs). The exponential growth of these devices is not just because they are amazing to use (they are, compared to devices 5 years ago) but the growth is largely due to the fact that these devices are able to communicate over the Internet, exchange data and result in more useful applications for the end user. We can sight similar growth in the entertainment and content consumption market (internet enabled video streaming, iPads, internet based Gaming consoles etc.)

The current state of the Internet of Things

A critical view of the state of IoT may bring up a view that besides phones, tablets and set top boxes, one hasn't seem much of a mass rollout of internet enabled 'toasters, fridges, cars and body monitors' and therefore one may conclude this is a pipe dream. First, we'd like to quote the inimitable Steve Jobs in an interview[4] with Business Insider, circa 1984, where he famously said "A lot of times people don't know what they want unless you show it to them" (in reference to mass consumers, not elite technophiles). As irreverent as this comment may seem to some, it is significantly true. When the iPhone was first released, it completely transformed the phone market, spurred mobile adoption, exploded internet bandwidth usage and pretty much single handedly started the data and application revolution we are all a part of today. Phones existed in the pre-iPhone era, and so did the internet. But because there was never a strong use-case and user-experience combining the both, this market was nascent.

Similarly, the world of IoT explosion, we believe is around the corner. People have already become completely dependent on smart applications on their tablets and phones. The world of mobile healthcare (an example of enterprise IoT) is already in its exponential growth stage - where hospitals and medical institutions are investing in iPads and other tablets to enable doctors and nurses to get easier access to powerful software while on the move.  On the consumer IoT space, there are already a slew of personal healthcare (wellness)[5] devices that are seeing success in addition to Philips, GE and several others launching pills and inside body appliances that are capable of transmitting data to external agents via low powered radio systems. Recently, Motorola announced[6] plans of a bio-stamp that can replace your need for remembering password. Yes, you guessed correctly - its inside your hand! 
Leaving bio devices aside, companies like Samsung are already selling internet enabled appliances like fridges that tweet, remember your garbage schedule, able to download innovative apps and let you store digital notes[7]. As a testimony to the sudden explosion in this space, IBM even announced[8] a 'message router' that is capable of routing millions of messages between IoT devices, which it hopes will help the company ride this new wave. 
To summarize, here is one of many statistics (this one by IMS Research)
"By 2020, there might be as many as 22 billion embedded systems and other portable devices connected to the Internet, according to IMS Research. Collectively, these systems may produce more than 2.5 quintillion bytes of new data every day, estimated the IT research company."

Android and the Internet of Things

So far, we've presented our vision of why we feel the IoT wave is just around the corner. But what does Android have to do with it?
We feel that Android will significantly help/aid OEMs in rolling out IoT devices.

We feel that Android will be adopted by IoT OEMs en-masse and that is already happening. Note that when we say 'IoT devices' will use Android, we don't mean every IoT device. For example, there is no need to load Android onto a biometric bandaid, for example. But intelligent devices, that need to do more than report data (such as a personal health monitor device, similar to the size of a small phone, that say the aged may keep that collects and analyzes data from various body sensors) will benefit greatly from Android. Similarly, relatively more powerful IoT devices, such as home appliances, watches[9], and car dashboards[10] will greatly benefit from Android. And of course, one cannot avoid mentioning Google Glass[11] when speaking of IoT.

Here's are some key reasons why:

  • Android as a stable and free OS that has already been validated in the smartphone market as an OS capable of running on embedded systems. 
  • As of early 2013, The Google Play marketplace lists over 800,000+ applications which means there is a vibrant developer ecosystem building innovative solutions. If an IoT device uses Android as its base OS, it can automatically leverage these applications and you can be rest assured that developers will start building a slew of innovative apps on that platform (As a thumb rule, no OEM can ever anticipate the innovation developers unleash when given the opportunity. They should all embrace this construct)
  • You can customize Android as much as you want - you can lock it down, you can strip it down, you can add your own features right into the OS to make it just right for your environment. There simply isn't another embedded OS that combines this flexibility along with having so many 3rd party apps and such widespread adoption. You can brand it as much as you want in your own way to for a unique UX.
  • Android already supports key communication protocols like NFC, Bluetooth Smart (low energy profile), WiFi-Direct and others which are key for IoT devices
  • Android already supports a wide variety of form factors and the APIs are tuned to give developers control on how to write apps for a wide variety of sizes (they factor in both screen sizes and pixel density). So from watches to dashboards to TVs to everything in between- Android has you covered.
  • This may seem like a banal point, but frankly it's a huge advantage. To write Android apps, you need to know Java. I'd imagine that Java resources are probably much easier to find than say C/C++ or C# or Objective C. Its frankly easier to hire Java developers and easier to maintain Java Code from a cost perspective (due to the simple fact that its easier to hire good Java developers than other languages) [caveat: Customizing Android requires significant skill and not just Java]

Customizing Android for the Internet of Things (aka the Gotchas)

So far, we've presented our view on why the IoT market is at the crossroads of an explosion in the market and why Android is a great OS for the a large range of IoT devices both from a technology and business perspective. So its all a bed of roses, right? Well, not really. As with anything else, the devil is in the details. Being able to adapt Android to your specific device needs is a big challenge for many OEMs. The Android SDK has excellent documentation. But if you need to create what's called a 'custom ROM' or 'custom Image' of Android by recompiling source, there is very little documentation on how to modify Android. Depending on how you count lines of code its between 8-12 million lines when I last counted, with little to go by in terms of what to change in terms of guidance

Why do you need to change it? Many reasons:

  • Differentiation - If every device will run Android, how will you differentiate your device to be above your competitors? You will want to do that by introducing a better user experience - an intuitive UI for that device, quicker boot time, better integrated features and more.
  • You many need to skin down Android to do away with extraneous components that you don't need so that you can speed up boot time (a 15+ second boot time for a phone may be fine but not your car dashboard, for example)
  • You may need to add functionality that the stock Android code may not have. For example, if you are using Android for a home entertainment console, you may need to enhance its Bluetooth audio streaming profiles, add HD codecs or other components
  • You wil need to adapt Android for your platform. Android works on a wide variety of platforms, but any OEM would know that making Android work well on your platform would involve modifications to the Linux device driver system to add missing drivers and well as modify Android's HAL (the component that exposes the underlying drivers to the application ecosystem).  The Android AudioFlinger (audio subsystem) and SurfaceFlinger (video subsystem) are often areas that need heavy customization and are complex entities (SurfaceFlinger is significantly more complex than AudioFlinger) but are necessary to get accelerated graphics and good quality sound. In addition, you may need to add support for sensors that linux may support, but Android may not (in order to expose that sensor to the application ecosystem)
  • You may need to adapt the PowerManagement system of Android. Android was built primarily for a mobile OS (initially targetted at phones, now for tablets too). While Android has a goal to work on various types of devices, the truth is that a lot of the code today is tuned to a mobile device - in that it employs various aggressive power management schemes to shut itself off when not in use, and other approaches which may not work for you, especially if you are building IoT devices that are always powered (like a Fridge)

One could go on and on.

Bottom line, while the promises of Android are many, it is also true that adapting Android to your device is much more complex, and unless you do it right, Android will seem more of a burden than a benefit to the end users. While there are many Android application developers, there are very few specialized Android customization engineers and companies with a proven track record.

HSC and Android

At Hughes Systique, we have worked with Android internals since 2008 and have built a strong team of Android engineers who help OEMs and ODM develop market leading Android based devices, ranging from phones, to tablets, to personal health care devices and now gaming devices. We have a strong team who have built deep Android internals knowledge in the Multimedia, Telephony (VoIP), Graphics subsystems all of which are likely directly relevant to being able to accelerate your product plans. 
Some specific areas where we believe our skills may be useful:

  • Updating your platform to the latest version of Android to leverage new Android features - we often find vendors such as you having to rely on extended roadmaps from your SoC partners who release updated Android builds upto a year or two after Google first releases them - inhibiting you from rolling out innovations earlier. We can work to integrate older linux kernels with more modern Android versions and extending the Android HAL to make your system work efficiently over new Android versions. This gives you an important time to market advantage over your competition
  • Working to optimize/extend the Android SurfaceFlinger and OpenGL/ES layers for enhanced GPU functionality
  • Integrating high quality audio leveraging OpenMAX AL and/or libstagefright and interfacing with hardware codecs
  • Adding value added features like VoIP telephony, Internet TV streaming and other functions to your device
  • Improving boot time and memory consumption by optimizing Android to discard unnecessary bloat

These are only a few examples. Please take a look at our Embedded Android pages  for a broad look at our overall skills.






No Comments




Add Comment