Some Observations on the Mobile Market in India

Living in India has given me a new perspective on a lot of things. Professionally, I’m constantly learning a lot just by seeing how differently people use their phones, and how different the market and ecosystem around mobile is here.

Intex? Karbonn? Spice Mobile? Oppo?

The biggest eye opener has been seeing the number of India-focused brands here in the smartphone market.

In the US, there are global brands like Apple, Samsung, HTC, Motorola, and LG and then a spread of other smaller brands. Here’s IDC’s list of the top smartphone vendors in India last year:

  1. Samsung
  2. Micromax
  3. Intex
  4. Lava
  5. Xiaomi

The market is also full of up & comers like Spice Mobile, and Karbonn, & other Chinese manufacturers like Oppo among many others I probably haven’t heard of.

Windows Phone is still a factor here, and I do still see Blackberrys from time-to-time, though they don’t rank in any public market reports I can see.

And feature phones – J2ME, basic phones… still big in India, too.

I’m Developing Android First

Most of the smartphones sold in India run Android. Android has a 90+% market share in India. Nothing else really is worth talking about, when you’re talking about smartphones.

So, while I personally am a dedicated iOS user, professionally in India, our teams think Android first. This is not the case for our US development teams, where both platforms have roughly equal priority and resources.

In the U.S., Fred Wilson’s 2010 call for Android first was bad advice then (and probably still is now), but the realities of emerging markets like India means doing exactly that. It’s literally the only game in town that matters.

Price is King, But Technology Matters

India is a price sensitive market. Obvious, right? But what I’ve found living here and talking to coworkers is that it isn’t just price that matters, but affordable value. From Ben Thompson’s excellent blog, Stratechery, talking about Xiaomi’s (and others’) rapidly growing customer base in India & China:

These customers are not conservative, or even pragmatists: they are enthusiasts and visionaries who simply don’t have very much money. The proper way to reach them, then, is not to sell them trickle-down technology: they will see right through that, and dismiss it out of hand. Rather, the solution to is develop new business models – indeed, in the case of Xiaomi, a new company – that is built from the ground-up to serve their specific needs.

This, too, is a powerful opportunity: there are far, far more potential customers in developing countries than there are in developed ones, but just because they don’t have much money does not mean they are technological laggards. Indeed, many of these customers are even more advanced when it comes to being mobile first because of the lack of a PC legacy, and they will embrace a brand that lets them live on the cutting edge.

Specs and feature bullets are still huge here, and not just because so many people in India work in the technology sector.

Android is Different Here

That central point, that people want tech but simply can’t afford the flagship devices, means that manufacturers need to find creative ways to manage cost while still offering an overall solid device. This creates subtle differences in user experience that go beyond the speed or feel of the device.

For example, Rs. 10,000 (~$160) is a common marketing cutoff for “inexpensive” smartphones (all phones are sold unlocked and contract free here).1

So, I decided to pick up a Micromax Canvas A1, which cost me about Rs. 4800 (~$75) fully unlocked, got a SIM for it, and have been using it as my ‘free time’ phone when I don’t need work email or iMessage.

It’s not a bad device – performance is fine – and because it’s an Android One device, it runs the latest version of Android. It does have some limitations that impact how we need to develop apps.

First, it’s a 3G phone – no LTE or HSPA+ etc. Even though LTE is coming online here in the cities, the state of the networks, plagued by inconsistent coverage, make this a less significant limitation. App developers already need to think about bandwidth as a precious resource. I’m used to seeing my iPhone on 2G/Edge networks regularly, and I’m not alone judging from our user reports.

The bigger surprise was the limited internal storage. I always found Android fans’ focus on SD card slots odd, but now that I’m running a phone with just 2 Gigs of internal flash memory, I suddenly understand. I went to download an app yesterday and got an error that I was out of space. And all I had on the phone were about 10 reasonably sized apps (the biggest was Facebook, at 150 MB(!). Android does let you move apps and some data to the SD card, so moving apps (when you can2) is the only way to continue installing new apps without deleting other apps.

There are even more subtle issues, some of which are detailed in this blog post at NextBigWhat. It’s a good summary of some of the challenges if you want to target the broadest swath of Indian mobile users.

Of course, you do get what you pay for. While things like Twitter and Facebook run fine, the screen isn’t as nice as the flagship phones. My main gripe, though? The horribly inferior camera.

Photo taken on my Canvas A1:

Canvas A1 Sidewalk Shot

Photo taken on my iPhone 6:

iPhone 6 Sidewalk Shot

No contest, IMHO.

I’m still learning a lot about India, and writing software for Indians (and the world outside the U.S. more broadly – Cricket, rugby, & F1 are global sports). We’re getting close to a few new releases at work, so I’m sure I’ll have more to learn and share soon. And there’s still other things – missed call marketing, the SMS market in India 3, and so much more.


  1. Contrast that to a flagship Samsung Galaxy S6 Edge, which runs for about Rs. 53,000 (~$833), or an 64GB iPhone 6 which runs around Rs. 56,000 (~$880), though on sale at Amazon for Rs. 43,499 (~$684.49) right now.

  2. So, I have an SD card installed, but not all apps allow themselves to be moved to the card (it’s a developer choice to allow this). Why wouldn’t apps allow this? Because moving to the SD card disables things like the app’s widgets. So… you need to focus on app distribution size, then you have to think about the user experience when the app is on the SD card, and parts of your app just stop working. Bottom line: not convinced SD cards are that useful, and rumor has it that Google is moving away from them anyway…

  3. Every company seems to send free text messages for everything. Seriously.

Sensors, LEDs & iPhones, oh my!

Over Christmas, I hacked together my first hardware/software project. It’s been a long time since I’ve picked up a soldering iron, let alone built something worthy of sharing. It turned out to be a fun little project.

Cause, effect, agency

I got the idea to do a project over Christmas while looking for toys for my son for Christmas. I wanted to find something that would teach him simple cause and effect relationships where he could cause something (e.g. clicking red & blue blocks together) that produced an observable effect (e.g. the blocks changing color to purple). I hoped that I could prime some interest in science. I also really wanted to instill a sense that he can make things happen for himself.

For a two year old, I basically came up empty.

But for a kid slightly older, we’re living in a golden age of hackable creativity. We have 3D printers that are slowly becoming affordable. The Internet makes finding (and sharing!) instructions on building everything from customized furniture to undersea robots easy. Open source and community based tools are getting cheaper and easier to use every year. Several businesses have grown up offering easy instructions and tutorials. (Come on, these look cool, don’t they?)

So, I decided I’d use the four-day Christmas long weekend to hack together a hardware prototype (with help from my wife’s nephew).

The project

For the project, I set out to build a simple thermometer & barometer that I could check from my iPhone. I also wanted it to have some visible indicator that would be fun to look at so my son could check it. As a beginner, I also wanted something I thought I could pull off.

My project centered around an Arduino microcontroller board. An Arduino is an inexpensive open source “electronics prototyping platform” that can be programmed using nearly any computer and a USB cable. Because it’s cheap and freely documented, people have hooked up dozens (if not hundreds) of sensors & other electronics to it.

I had an old kit laying around that I rediscovered after I returned to Fanzter and started working with our resident hardware hacker extraordinaire, Josh. I recommend starting with a starter kit if you’re just getting into electronics projects. You can get several decent options from Adafruit, MakerSHED, or Sparkfun. I have an older Sparkfun Inventor’s Kit, but any from these three vendors will do.

You should go through a few of the tutorials before trying the rest of this to get familiar with the basics of Arduino programming.

Here’s the full parts list:

Tools:

In addition, if you want to get an app running on your iPhone, iPad, or iPod Touch, you’ll need to have a developer account with Apple.

The build out is really simple. The BLE shield snaps onto the Arduino board basically extending the pins and sockets on the Arduino through itself. Just make sure you line up all the pins and sockets. More details at RedBearLab if you want them.

For the LED matrix and the temperature sensor, there’s a little soldering involved. For both the soldering and the basic wiring setup, I followed the instructions in Adafruit’s tutorials:

Make sure you position the LED matrix correctly before soldering it. I got multiple warnings about that from people.

Here are the results of my soldering job:

Arduino project images

I’ll admit, I’m proud of how well that came out considering it was my first soldering project in 20 years.

Arduino project photo The only difference in my final wiring from the two tutorials is that I hooked the matrix CLK and DAT pins to the same rows containing the CLK and DAT lines from the Arduino to the temperature sensor. In the picture at left, those are the green and orange wires (Click through for a larger view). This works because they both speak a protocol called I2C and have different addresses. [1]

For power and ground, I used the breadboard instead of hooking the sensor or backpack directly to the Arduino board. This is standard, and what the kit tutorials encourage. Just thought I should mention it, since it’s not directly mentioned in the two Adafruit tutorials above.

The next step is programming the Arduino. Rather than walk you through all the details, here’s the source code. Feel free to fork the project and mess around. I’d appreciate any bug fixes if you have them. To use the source code, you’ll need to install the Arduino software & the Ino tool. I used Ino so that the github repository would have everything you need. To run the project, launch Terminal, then type ino build and then ino upload to get the project onto your Arduino. If you want to see the serial output, you can use ino serial -b 57600 to get that on your terminal screen.

I also have the iOS code available if you’d like to play with that. You’ll need to be comfortable with iOS development to use this. I may submit a version to the store if there’s enough interest. Let me know.

That’s it. The finished wiring looks like this:

Arduino project images

When lit up, it looks something like this (only 2 readings are displayed – normally there are 8):

The arduino end of this, the simple temperature station.

The iOS app is really simple:

Weekend hack: arduino weather station talking to iOS app via BLE. Boom.

Drag up to trigger a connect or disconnect. Eventually, I’ll add a pull down to trigger a temp refresh. Otherwise, it polls every minute.

Known issues

The code isn’t perfect and, as I get free time, I’m still cleaning up a few things. Here are some known issues:

  • Bluetooth reliability: For some reason, the iPhone doesn’t seem to disconnect and/or reconnect properly to the device. Pressing the reset button on the BLE shield usually fixes it, which makes me think there’s something wrong in my code.

  • Memory usage: So, the main challenge programming an Arduino is that the device only has about 2K of RAM for the sketch. Yes, that’s two kilobytes. It’s a challenging environment when I’m used to phones that have 256-512MB RAM (or more). My code is definitely not particularly optimized. The program did run out of memory regularly. I think it’s stable now, but it’s not as good as I think I can get it.

Next steps

I’m going to try and hook it up to a Raspberry Pi and put it in an weatherproof enclosure so I can leave it outside. My other goal is to change the LED Matrix to an LED strip like this so I can make it look like an actual thermometer.

I’ll update this with photos if I get that far.

Hope that helps someone out. It was a fun project, and I’m looking forward to working on this more.


 

1 I2C is a simple two-wire interface to hardware components. I2C allows the Arduino to control multiple devices over just two pins. The Wikipedia page has the gory details, but just know that each device has an address which has to be unique, and then you just wire them up in parallel. The LED Matrix backpack that Adafruit provides provides an I2C interface to the LED matrix, and the Bosch sensor comes on a board that also speaks I2C, so all the work is basically done for you.

That’s more detail than you probably need, but I thought it was neat.


Update: Two corrections above, both minor but notable. I accidentally described an Arduino as a microprocessor instead of microcontroller, but then Josh pointed out that it’s really a whole platform because the microcontroller is the specific chip at the heart of the Arduino. It’s a significant detail when you get more advanced because different versions of the Arduino might have different microcontrollers at the heart of the platform.

The other is how I described the I2C wiring in the footnote. The sensor and the LED matrix are wired in parallel, not series. I had a feeling that was the wrong word, but forgot to look that up. Minor detail, but again significant for deeper understanding.

Sorry about both of those. They’re fixed above.