The object of this exercise is to get a Hello World app running on a DragonBoard 410c that has the Android OS install, as supplied by the manufacturer. The overarching context for this is that this activity is part of the Yellow Brick Road to running Windows 10 IoT-Core on the device as an IoT using Azure as connectivity medium. My background is not Android. I don’t have an Android phone. My background is the Microsoft software stack top to bottom; particularly the bottom. Whilst I have many blogs on Windows Embedded Compact/CE, Windows 10 IoT-Core and Windows Universal App development, I am a newbie to Android. So my observations through the trials and tribulations in getting setup for Android app development, and deploying such are through the eyes of a novice (but a novice who knows what to look for!).

 

This blog will cover getting the development environment set up on a Windows 10 development machine. It also covers  (an issue I wrestled with for some time) getting the target connected to the development machine. The second blog in this sequence will cover app development and deployment. Given my Windows background, it might have made sense to do the app development in Xamarin, the cross platform .NET app development environment for which you can simultaneously develop code for Windows, Android and Apple. You can also code in Visual Studio and deploy to an Android device. That will be the topic of a subsequent blog as I wish in this first instance to use the generic Android develop environment (Android Studio). I will then cover Android specific development in Visual Studio (2013) using a plugin. The hard part of the installation is getting ADB set up.

Links

The DragonBoard 410c (Developer)

DragonBoard 410c (96Boards)

Java SE Development Kit 8

Android Studio

Video of Android Studio installation

 

Android Studio Setup

Target System: Windows 10 Build Version 1511
I used a “clean” system: New OS installation. No Visual Studio installation prior to starting this setup.

 

1. Install Java SE Development System (Choose 64 bit version if using a 64 bit system)
One suggestion is to install JDK such that it doesn’t have spaces in its path (ie Old DOS 8.3 format)

2. Add a new environment variable: JAVA_HOME that points to your JDK folder, eg C:\Program Files (x86)\Java\jdk1.8.0_91
Find it under C:\Program Files (x86)\Java or C:\Program Files\Java

3. Check the system environment variable Path. Add C:\ProgramData\Oracle\Java\javapath if not already there.

4. Also add “%JAVA_PATH%\bin to the Path at start if not there.

5. At a command prompt enter javac –version. It should reflect the JDK version

6. Download and start the Android Studio installation. Take the defaults. Also, take note of the SDK location (for later).

7. Launch Android Studio, take defaults. It will download various additional components.

8. Install ADB, the Android Debug Bridge (as follows) which is required for connecting to an Emulator or device. I did not install any emulators as my target (older) system does not support hardware virtualisation as needed for emulation.

9. Also need a path to ADB for command line operations.
  - Add an environment variable for the Android SDK:  eg ANDROID_SDK    C:\Users\Me\AppData\Local\Android\sdk\ 
  - Add the following to the path:  %ANDROID_PATH%\platform-tools


UPDATE:
Here are the Java environment settings for a  new install on another 64 bit PC.

image

At the Java install the JDK path was:

image

More installation images:

image image
image
Android Studio started Smileimage

 

ADB Setup

Getting the USB OTG driver working on the Dev PC

To deploy an app developed in Arduino Studio (and other development contexts) you need to connect the board’s OTG (Micro USB) to the development machine (where Arduino Studio is installed). (Remember that you can’t use the USB Host on the board if you are using the OTG port). When you plug the board in in this manner, a driver is needed on the host end which wasn’t installed after I had installed the Arduino Studio on my Windows 10 PC.

The OTG features

Connect up an Android DragonBoard 410c to the development system (running) and power up the DragonBoard. Open Device Manager and you will see three entries for Android requiring a driver. Examine the drivers’ properties, in particular the VID and PID. You will see:

USB\VID_05C6&PID_9091&MI_00
USB\VID_05C6&PID_9091&MI_01 
USB\VID_05C6&PID_9091&MI_02 

We need a suitable driver for this.

Update: Not sure what happened but later on these became PID 9092 :

USB\VID_05C6&PID_9092&MI_00
USB\VID_05C6&PID_9092&MI_01 
USB\VID_05C6&PID_9092&MI_02 

This happened after I turned debugging off on the device then back on ????.

Getting the Driver

The driver you need is Google USB Driver.

When in place it should be located at <sdk>\extras\google\usb_driver\ where <sdk> is the root location of the Arduino SDK. This location can be used by Device Manager to install the driver when the driver is in place. The SDK is installed as part of the Studio but there are many optional components including this driver. In the root of the SDK is a tool that can action the download of optional components.

To determine the root location:

  • Run the Android Studio.
  • Choose FileàSettings.
  • Navigate to Appearance & BehaviouràSystem SettingsàAndroid SDK (Click on it.)
  • The “Android SDK Location” is noted towards the top.
    In my case it’s in C:\Users\djaus\AppData\Local\Android\SDK
    This location is possibly an installation option.

Get the driver

  • From that location run SDK Manager.exe
  • Deselect All
  • Select Google USB Driver under Extras towards the bottom.
  • Click on the [Install 1 Package] button

OR

  • In the Settings, Android SDK tab select Google USB Driver
  • Select [Apply] (I haven’t tried this)

Modify the driver .inf for Qualcomm

  • · Starting in the Android SDK folder in File Explorer, browse down to into the usb_driver folder: <sdk>\extras\google\usb_driver
  • · Open android_winusb.inf in a text editor
  • · Under [Google.NTx86] Add the following as a separate entry:
    ;Qualcomm Devices
    %CompositeAdbInterface% = USB_Install, USB\VID_05C6&PID_9091&MI_00
    %CompositeAdbInterface% = USB_Install, USB\VID_05C6&PID_9091&MI_01 
    %CompositeAdbInterface% = USB_Install, USB\VID_05C6&PID_9091&MI_02 
    %CompositeAdbInterface% = USB_Install, USB\VID_05C6&PID_9091&MI_03




    %CompositeAdbInterface% = USB_Install, USB\VID_05C6&PID_9092&MI_00
    %CompositeAdbInterface% = USB_Install, USB\VID_05C6&PID_9092&MI_01
    %CompositeAdbInterface% = USB_Install, USB\VID_05C6&PID_9092&MI_02
    %CompositeAdbInterface% = USB_Install, USB\VID_05C6&PID_9092&MI_03
  • Update: Highlighted entries for PID 9092 added ·
  • Also under [Google.NTamd64] add the same as a separate entry

Install the Driver

You can now install the install the device driver for one of the Arduino devices (I just did the first one) from Device Manager by browsing to <sdk>\extras\google\usb_driver folder and by selecting that folder. (Update Driver (Right Click) after selecting the device, then choose Browse my computer …

BUT you run into an error saying:
“The hash for the file is not present in the specified catalog file”.

This means the driver is unsigned (at least not recognised) and so you need to permit unsigned driver installation. That has to be enabled at boot time. Normally you do this only as a temporary measure, although comments indicate you can do it permanently (not recommended). Also comments indicate you can enable it from an Admin command line using bcdedit but I found that didn’t work. The following is how to do it in Windows 10 as a one-time boot option:
(Ref: http://www.technipages.com/enable-disable-device-driver-signing )

  1. In the Windows Settings (Aka The Action Center) search box type “Startup”.
  2. Select “Change advanced startup settings“.
  3. Select “Restart now” under the “Advanced startup” area.
  4. Select “Troubleshoot“.
  5. Select “Advanced Options“.
  6. Select “Startup Options“.
  7. Select “Restart“.

A menu will appear where you can press “7” on your keyboard to choose “Disable driver signing enforcement“.

Now Device Driver Signing should be disabled, allowing you to install any driver you like in Windows 10 until you reboot. You can now complete the Google USB Driver installation.

I only installed one driver and rebooted the dev PC. On inspect in Device Manager I noted:

clip_image001

 

image
Android Studio

Next: Android Studio App Development