Android Brillo Internals

From eLinux.org
Revision as of 02:15, 4 January 2016 by Nanikjava (talk | contribs) (add table)
Jump to: navigation, search

Dissecting Google Brillo and Weave
Written by : Nanik Tolaram

Introduction

Before going through this documentation it is crucial to understand the difference between Brillo (https://developers.google.com/brillo/?hl=en) and Weave (https://developers.google.com/weave/?hl=en). Have a read first to understand it before continuing with this article as it can get confusing sometimes.

This document is by no means a tutorial rather this is just a research document. As of Jan 4, 2016 there isn't that much information from Google regarding Brillo. The findings that are documented are based on available source code (and decompiling of library) to understand how the whole stack works together.

Sample App

Google has released sample Weave application which can be downloaded from https://github.com/googlesamples/android-WeaveLedToggler. Weave is the stack that takes care of the way Brillo device communicates with other devices either via – WiFi (cloud), mDNS or Bluetooth. The sample application shows how to tun ON/OFF led on a Brillo device which currently is a development board (either from Marvell, Intel or other Brillo partners).

On looking inside the sample there is a jar file inside third_party library which contains classes used inside the sample to communicate with Brillo devices.

Following shows how the sample app should look like when run. The screenshot below was taken from screenshot directory of the source code (due to error encountered explained below)

The library that is included for the sample app takes care of few things such as device discovery, authentication and communication. There is a dependency on an .apk that need to be downloaded from the Google Play Store, which as of today (4/January/2016) is not available. Tested on a device with Google Play Store the app run with error shown below

01-04 00:12:20.062  4694  4694 W MainActivity: Could not create RequestAccessIntent, trying resolution intent: WeaveError (code: 1004, reason: null, message: null)
01-04 00:12:20.127   483  1200 I ActivityManager: START u0 {act=android.intent.action.VIEW dat=market://details?id=com.google.android.weave cmp=com.android.vending/com.google.android.finsky.activities.LaunchUrlHandlerActivity} from uid 10097 on display 0
01-04 00:12:22.443   483   802 I ActivityManager: START u0 {act=android.intent.action.VIEW dat=http://market.android.com/details?id=com.google.android.weave cmp=com.android.vending/com.google.android.finsky.activities.MainActivity (has extras)} from uid 10016 on display 0
01-04 00:12:28.108  2978  2978 D Finsky  : [1] ExternalReferrer$1.run: Capture referrer for com.google.android.weave (empty)
01-04 00:12:28.524  2978  3014 E Volley  : [287] BasicNetwork.performRequest: Unexpected response code 404 for https://android.clients.google.com/fdfe/details?doc=com.google.android.weave

This means that either Google has removed the apk from the Play Store or it has not been uploaded


Brillo Hardware

The sample app requires Brillo enabled devices which at the moment are only available using development board. Here are list of the development boads that are supported by Brillo.

Brillo Development Boards
http://www.newegg.com/Product/Product.aspx?Item=N82E16813121814&Tpk=13-121-814
https://www.arrow.com/en/products/dragonboard410c/arrow-development-tools
http://solid-run.com/product/andromeda-box-edge/