<?xml version="1.0" encoding="UTF-8"?>
<hibernate-generic datetime="2026-02-03 15:53:47">
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">19562512</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">19726337</id>
</property>
<property name="title"><![CDATA[Tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">19595280</id>
</element>
</collection>
<property name="version">29</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-08-29 10:07:02.383</property>
<property name="versionComment"><![CDATA[]]></property>
<collection name="historicalVersions"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086815</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086817</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086819</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086820</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086822</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086871</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086883</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086885</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086889</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086894</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086896</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086969</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086970</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20087117</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20087125</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20087133</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20087135</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20087238</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20087248</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971591</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971593</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971996</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20972031</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20972036</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21366069</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21366070</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21790724</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21790725</id>
</element>
</collection>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">19562510</id>
<collection name="children"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971597</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21365097</id>
</element>
</collection>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">19726337</id>
</property>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">19595278</id>
</element>
</collection>
<collection name="outgoingLinks"><element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">23298566</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">23298567</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">23298568</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">23298569</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">23298570</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">23298571</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">23298572</id>
</element>
</collection>
<property name="version">39</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-10-22 13:31:43.610</property>
<property name="versionComment"><![CDATA[]]></property>
<collection name="historicalVersions"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">19562514</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086916</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086918</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086922</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086924</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086926</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086927</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086928</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086930</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086932</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086933</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086934</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086936</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086938</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086939</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086941</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086943</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086944</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086946</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086947</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086948</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086950</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086951</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086953</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086956</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20086959</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20087132</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20087240</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20087242</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20087244</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20087246</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971556</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21366023</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21366025</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21366027</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">23167126</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">23167127</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">23167130</id>
</element>
</collection>
<property name="contentStatus"><![CDATA[current]]></property>
<collection name="attachments"><element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">20217865</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">21528640</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">23232536</id>
</element>
</collection>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971597</id>
<property name="parent" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<collection name="ancestors"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</element>
</collection>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">19726337</id>
</property>
<property name="title"><![CDATA[Procedure for drifter deployment]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004365</id>
</element>
</collection>
<property name="version">7</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-16 13:07:08.587</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-17 09:35:35.463</property>
<property name="versionComment"><![CDATA[]]></property>
<collection name="historicalVersions"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971599</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971601</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971602</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971603</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971605</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971612</id>
</element>
</collection>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="ConfluenceBandanaRecord" package="com.atlassian.confluence.setup.bandana">
<id name="id">19791875</id>
<property name="context"><![CDATA[AndroidLogger]]></property>
<property name="key"><![CDATA[atlassian.confluence.space.settings]]></property>
<property name="value"><![CDATA[<com.atlassian.confluence.setup.settings.SpaceSettings>
  <spaceKey>AndroidLogger</spaceKey>
  <disableLogo>false</disableLogo>
  <colourSchemesSettings>
    <colourSchemeType>global</colourSchemeType>
  </colourSchemesSettings>
</com.atlassian.confluence.setup.settings.SpaceSettings>]]></property>
</object>
<object class="ConfluenceBandanaRecord" package="com.atlassian.confluence.setup.bandana">
<id name="id">19791874</id>
<property name="context"><![CDATA[AndroidLogger]]></property>
<property name="key"><![CDATA[atlassian.confluence.css.resource.counter]]></property>
<property name="value"><![CDATA[<int>2</int>]]></property>
</object>
<object class="ConfluenceBandanaRecord" package="com.atlassian.confluence.setup.bandana">
<id name="id">19791873</id>
<property name="context"><![CDATA[AndroidLogger]]></property>
<property name="key"><![CDATA[atlassian.confluence.theme.settings]]></property>
<property name="value"><![CDATA[<map>
  <entry>
    <string>theme.key</string>
    <string></string>
  </entry>
</map>]]></property>
</object>
<object class="Space" package="com.atlassian.confluence.spaces">
<id name="id">19726337</id>
<property name="name"><![CDATA[901112 - MBTS; Android data logger]]></property>
<property name="key"><![CDATA[AndroidLogger]]></property>
<property name="description" class="SpaceDescription" package="com.atlassian.confluence.spaces"><id name="id">19562509</id>
</property>
<property name="homePage" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<collection name="permissions"><element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">21659649</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406500</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406501</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406502</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406503</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406504</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406505</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406506</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406507</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406508</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406509</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406510</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406511</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406512</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406513</id>
</element>
</collection>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.957</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-01 22:46:00.957</property>
<property name="spaceType">global</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21365097</id>
<property name="parent" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<collection name="ancestors"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</element>
</collection>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">19726337</id>
</property>
<property name="title"><![CDATA[Test results]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21397848</id>
</element>
</collection>
<property name="version">8</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-06-13 14:50:51.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-06-13 15:12:26.737</property>
<property name="versionComment"><![CDATA[]]></property>
<collection name="historicalVersions"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">21365099</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21365100</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21365102</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21365104</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21365106</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21365107</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21365108</id>
</element>
</collection>
<property name="contentStatus"><![CDATA[current]]></property>
<collection name="attachments"><element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">21528603</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">21528604</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">21528605</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">21528606</id>
</element>
</collection>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971523</id>
<property name="parent" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<collection name="ancestors"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</element>
</collection>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">19726337</id>
</property>
<property name="title"><![CDATA[How to root an Android phone]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004291</id>
</element>
</collection>
<collection name="outgoingLinks"><element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168398</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168399</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168400</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168401</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168402</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168403</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168404</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168405</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168406</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168407</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168408</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168409</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168410</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168411</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168412</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168413</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168414</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168415</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168416</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168417</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168418</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168419</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168420</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">21168421</id>
</element>
</collection>
<property name="version">19</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 11:58:01.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.860</property>
<property name="versionComment"><![CDATA[]]></property>
<collection name="historicalVersions"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971529</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971531</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971533</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971537</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971539</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971541</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971543</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971544</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971546</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971547</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971549</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971551</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971553</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971554</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971555</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971557</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971559</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971560</id>
</element>
</collection>
<property name="contentStatus"><![CDATA[current]]></property>
<collection name="attachments"><element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">21037057</id>
</element>
</collection>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971562</id>
<property name="parent" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<collection name="ancestors"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</element>
</collection>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">19726337</id>
</property>
<property name="title"><![CDATA[Preparing the phone and configuring the drifter app]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004330</id>
</element>
</collection>
<collection name="outgoingLinks"><element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">22380926</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">22380927</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">22380928</id>
</element>
</collection>
<property name="version">23</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-11 16:23:42.437</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-09-11 09:46:25.140</property>
<property name="versionComment"><![CDATA[]]></property>
<collection name="historicalVersions"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971564</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971565</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971580</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971582</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971584</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">20971586</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21365911</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21365914</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21365916</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21365918</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21365922</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21365923</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21365925</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21365926</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21365927</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21365928</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21365929</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21365930</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21365934</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">21365946</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">22282311</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">22282315</id>
</element>
</collection>
<property name="contentStatus"><![CDATA[current]]></property>
<collection name="attachments"><element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">21037058</id>
</element>
</collection>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">21659649</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">19726337</id>
</property>
<property name="type"><![CDATA[VIEWSPACE]]></property>
<property name="group"><![CDATA[U_Employees]]></property>
<property name="userName"/><property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2013-06-17 09:45:52.113</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2013-06-17 09:45:52.113</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20087117</id>
<property name="title"><![CDATA[Software tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119876</id>
</element>
</collection>
<property name="version">14</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-21 18:30:11.520</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086885</id>
<property name="title"><![CDATA[Software tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119650</id>
</element>
</collection>
<property name="version">8</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-12 17:52:53.977</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086883</id>
<property name="title"><![CDATA[Software tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119648</id>
</element>
</collection>
<property name="version">7</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-12 15:55:32.900</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20087125</id>
<property name="title"><![CDATA[Software tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119884</id>
</element>
</collection>
<property name="version">15</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-03-06 16:22:56.110</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086889</id>
<property name="title"><![CDATA[Software tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119654</id>
</element>
</collection>
<property name="version">9</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-12 17:55:10.460</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">22282315</id>
<property name="title"><![CDATA[Preparing the phone and configuring the drifter app]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">22315083</id>
</element>
</collection>
<property name="version">22</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-11 16:23:42.437</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-09-10 16:47:49.873</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20087132</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119891</id>
</element>
</collection>
<property name="version">27</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-19 10:18:21.963</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20087133</id>
<property name="title"><![CDATA[Software tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119892</id>
</element>
</collection>
<property name="version">16</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-03-07 09:16:07.170</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20087135</id>
<property name="title"><![CDATA[Tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119894</id>
</element>
</collection>
<property name="version">17</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-03-07 18:01:21.383</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">19595278</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger project.
\\

The Chavez lab has developed a robust low cost "Stella" drifter that has been used repeatedly by our lab, CANON, Autonomy and several other MBARI projects. The drifter is based on a SPOT tracker and total hardware cost is about $250. We propose to exploit the rapid development of commercial low-cost mobile computing and sensor platforms by taking a prototype instrument data logger (developed by O'Reilly and Risi) that runs on an Android device (e.g. phone or tablet) and deploying it as a test on the low cost Stella drifter. The Android logger application known as "Drifter" was developed by O'Reilly; it periodically retrieves data from one or more RS-232 or analog instruments as well as onboard phone sensors (e.g. GPS, accelerometer, compass). The app then telemeters the retrieved data to shore via the cell phone network, WiFi or a satellite modem. Such a data logger could have several applications including low-cost moorings, drifters, or pier-mounted deployments.

The Drifter app source code and associated files are attached to this page as a compressed '.tar' file. E.g. the code for Drifter version 1.61 is attached to this page as Drifter-1_61.tar.gz.&nbsp; Download the file into an Eclipse workspace, then decompress and un-tar it, e.g. on a Linux system:
{noformat}
% tar  zxf Drifter-1_61.tar.gz
{noformat}
&nbsp;Now run Eclipse - configured with the [Android Development Tools plug-in|http://developer.android.com/tools/sdk/eclipse-adt.html] \- and import the files as an Eclipse project.
\\

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

!DrifterSchematic.png|width=814,height=628!

The Drifter app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app is written in Java, and source code is currently archived at [http://bitbucket.org] as a "private" repository. We plan to distribute the code as open source in the near future.

The app retrieves pH and temperature sensor data through analog input ports on the I[OIO board|https://www.sparkfun.com/products/11343]. The app manages the 'Wakey' power controller through an RS232 port on the IOIO board. The phone sends telemetry to shore as 41-byte messages through the [SPOT Connect|http://www.findmespot.com/en/index.php?cid=116] satellite modem, using the Bluetooth protocol described [here|http://www.sparkfun.com/tutorials/340].

The 'Wakey' power controller board developed by McGill provides power to  the IOIO board, phone, and SPOT Connect satellite modem.&nbsp;

Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not have a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android data logger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;

h2. Telemetry via SPOT Connect

A SPOT message can be no longer than 41 bytes (not including the transmit time and latitude/longitude header that the modem prepends). Thus the data logger&nbsp; app generates very terse summaries of the instrument, sensor and diagnostic for transmisson via SPOT. The app generates SPOT messages consisting of fields separated by a semicolon,&nbsp; with the following format:
{noformat}
instrument_record:orientation:gps:compass:phone_batt_level:wakey_batt_voltage
{noformat}
instrument_record - data record from attached serial or analog instrument. The format of the instrument_record depends on the instrument type.

orientation - data record from phones orientation sensors consisting of roll, pitch, and yaw

gps - data record from phone's GPS

compass - magnetic azimuth from phone's sensor

phone_batt_level - remaining phone battery, in percent

wakey_batt_voltage - "Wakey" battery voltage
\\
\\
Note that some fields may be zero-length. E.g. if the user does not select orientation sensor to be logged, then the SPOT message orientation sensor field (second field) will be zero length. E.g. following is an example SPOT message:
{noformat}
tmp 2923,pH 1352:::264.0:98:11.9
{noformat}
In the above case, the app had been configured to log data from an attached analog pH sensor (which outputs temperature and pH), and to log phone compass data (no other sensors were selected).
\\

[Software tasks|Tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">23232536</id>
<property name="fileName"><![CDATA[DrifterSchematic.png]]></property>
<property name="contentType"><![CDATA[image/png]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-10-22 13:37:28.357</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-10-22 13:37:28.357</property>
<property name="fileSize">161995</property>
<property name="comment"><![CDATA[]]></property>
<property name="attachmentVersion">1</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">19595280</id>
<property name="body"><![CDATA[+Outstanding tasks+
15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

17. If configuration requires IOIO but it is not physically connected, 'Refresh' button never gets reenabled.

18. Need to ensure that Wakey is awake for first sample, to properly synchronize app sampling schedule and Wakey sleep schedule.

23. IOIO seems to get some current from phone; red IOIO LED glows faint red when connected only to phone.

24. Phone power sometimes runs out in non-test conditions - not clear why. WiFi?

26. Configure option to start server at boot time, not just on auto-reboot. ESPECIALLY IMPORTANT IN CASE OF SPONTANEOUS REBOOT, WHICH HAS BEEN OBSERVED

27. check the relative drift of the Android phone and Wakey clocks before we deploy.

28. DrifterService should assert 20-minute sleep onset delay for Wakey comm port, since user may inadvertently leave some test value instead.

29. If the coms delay time is greater than the sleep time, causing the coms power to be already on when Wakey awakes, then the action of electronically pushing the SPOT power button to turn SPOT on may instead turn it off. To prevent this, the Wakey code should check to see if the coms power is already on before pushing the SPOT power button.

31. Wakey RX, TX pins default to 0. Should default to 6, 7
\\

+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state

12. Check into version control
\\
6. If SPOT selected, check that Bluetooth is enabled before starting run

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run
11. Enable log-only run, i.e. no telemetry specified

8. Implement Wakey control, Wakey test
\\

7. If GPS selected, check that GPS enabled before starting run

14. Log debug/info/error messages to a file.. File would be accessed after recovery.

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)
\\

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

19. Implement compass acquisition

20. Design/implement succinct SPOT message format. Each message can probably include both science and engineering data

21. Sample schedule does not run when no telemetry channel selected (bug)

22. App and wiring on amplifier board do not agree on analog pin number.  Compared app analog readout to IOIODiagnostic app (from market);  IOIODiagnostic shows expected voltages on pins, so datalogger must be  improperly reading analog channels.

25. Consider occasional programmatic reboot of phone to improve reliability - this requires 'rooting' the phone.

2. Data log format

3. Log science data]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086871</id>
<property name="title"><![CDATA[Software tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119636</id>
</element>
</collection>
<property name="version">6</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-06 16:16:34.100</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21365946</id>
<property name="title"><![CDATA[Preparing the phone and configuring the drifter app]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21398651</id>
</element>
</collection>
<property name="version">20</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-11 16:23:42.437</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-08-08 14:20:18.720</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">22380927</id>
<property name="destinationPageTitle"><![CDATA[How to root an Android phone]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-09-11 09:46:25.177</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-09-11 09:46:25.177</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">22380926</id>
<property name="destinationPageTitle"><![CDATA[//play.google.com/store/apps/details?id=ioio.example.ioiohardwaretester]]></property>
<property name="destinationSpaceKey"><![CDATA[https]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-09-11 09:46:25.177</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-09-11 09:46:25.177</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">22380928</id>
<property name="destinationPageTitle"><![CDATA[]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-09-11 09:46:25.177</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-09-11 09:46:25.177</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21365934</id>
<property name="title"><![CDATA[Preparing the phone and configuring the drifter app]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21398639</id>
</element>
</collection>
<property name="version">19</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-11 16:23:42.437</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-08-08 13:33:20.813</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">22282311</id>
<property name="title"><![CDATA[Preparing the phone and configuring the drifter app]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">22315079</id>
</element>
</collection>
<property name="version">21</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-11 16:23:42.437</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-08-08 16:08:50.990</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">20217865</id>
<property name="fileName"><![CDATA[901112_MBTS_2013.pdf]]></property>
<property name="contentType"><![CDATA[application/force-download]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-15 14:58:18.377</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 14:58:18.377</property>
<property name="fileSize">940453</property>
<property name="comment"><![CDATA[]]></property>
<property name="attachmentVersion">1</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21397848</id>
<property name="body"><![CDATA[May 11 - May 25 (15 days)

The system is located on the Building B rear deck, for a clear view of the sky. Most of the gear (phone, IOIO, Wakey, batteries) is inside a Pelican case, with the SPOT modem duct-taped to the outside of the case. The case was latched on one side only to prevent cutting the SPOT power and data wires. The pH sensor is currently NOT attached.

I haven't yet looked at the detailed logs, but see no indication of major errors during this burn-in test so far.

Attached are plots showing Wakey battery voltage and phone battery level.

For this test, the phone is configured to send SPOT messages as well as diagnostic messages via wifi. At sea we will of course not incur the wifi power usage.

Got 495 SPOT messages, out of 725 total samples; SPOT success rate = 68%

\\  !WakeyBattery.jpg!
!phoneBatt.jpg!
&nbsp;
May 24 - June 9 (16 days)

This test was also performed on Building B rear deck, physically configured identically to the May 11 test. But in this case, WiFi messaging was DISABLED - compare the following plots to see much lower power usage compared to the May 11 test. Note that the charge provided to the phone by the D-cell battery pack every thirty minutes was sufficient to keep the phone battery level at about 96 percent for the duration of the test.&nbsp;

&nbsp;Got 495 SPOT messages, out of 852 total samples; SPOT success rate = 58%

The last SPOT message was received on June 10. Inspection of the hardware revealed a broken corroded wire leading to the SPOT, as well as corrosion on a Wakey connector. Note that no effort had been made to waterproof the SPOT housing or the partly-latched Pelican case that housed the Wakey board. This corrosion may explain the overall lower SPOT success rate, compared to the May 11 test (success rate = 68%).

\\
\\  !WakeyBattery-may24.jpg!\\  !PhoneBattery-may24.jpg!]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365097</id>
</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168407</id>
<property name="destinationPageTitle"><![CDATA[+\]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086817</id>
<property name="title"><![CDATA[Software tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119584</id>
</element>
</collection>
<property name="version">2</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-06 13:34:12.337</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168406</id>
<property name="destinationPageTitle"><![CDATA[-\]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086815</id>
<property name="title"><![CDATA[Software tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119582</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-01 22:50:02.637</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168405</id>
<property name="destinationPageTitle"><![CDATA[-\]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168404</id>
<property name="destinationPageTitle"><![CDATA[+\]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168411</id>
<property name="destinationPageTitle"><![CDATA[+\]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21365911</id>
<property name="title"><![CDATA[Configure app]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21398617</id>
</element>
</collection>
<property name="version">7</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-11 16:23:42.437</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-15 16:42:46.947</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168410</id>
<property name="destinationPageTitle"><![CDATA[+\]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168409</id>
<property name="destinationPageTitle"><![CDATA[+\]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168408</id>
<property name="destinationPageTitle"><![CDATA[+\]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21365914</id>
<property name="title"><![CDATA[Preparing the phone and configuring the drifter app]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21398619</id>
</element>
</collection>
<property name="version">8</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-11 16:23:42.437</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-08-08 11:46:49.017</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168415</id>
<property name="destinationPageTitle"><![CDATA[+\]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168414</id>
<property name="destinationPageTitle"><![CDATA[+\]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168413</id>
<property name="destinationPageTitle"><![CDATA[+\]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168412</id>
<property name="destinationPageTitle"><![CDATA[+\]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168419</id>
<property name="destinationPageTitle"><![CDATA[-\]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086822</id>
<property name="title"><![CDATA[Software tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119589</id>
</element>
</collection>
<property name="version">5</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-06 13:57:18.620</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168418</id>
<property name="destinationPageTitle"><![CDATA[+\]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086819</id>
<property name="title"><![CDATA[Software tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119586</id>
</element>
</collection>
<property name="version">3</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-06 13:38:35.350</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168417</id>
<property name="destinationPageTitle"><![CDATA[+\]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086820</id>
<property name="title"><![CDATA[Software tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119587</id>
</element>
</collection>
<property name="version">4</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-06 13:56:43.023</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168416</id>
<property name="destinationPageTitle"><![CDATA[+\]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21365923</id>
<property name="title"><![CDATA[Preparing the phone and configuring the drifter app]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21398628</id>
</element>
</collection>
<property name="version">12</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-11 16:23:42.437</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-08-08 12:05:06.683</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21365926</id>
<property name="title"><![CDATA[Preparing the phone and configuring the drifter app]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21398631</id>
</element>
</collection>
<property name="version">14</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-11 16:23:42.437</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-08-08 13:05:30.763</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">21037057</id>
<property name="fileName"><![CDATA[Poot-debug(W100).apk]]></property>
<property name="contentType"><![CDATA[application/octet-stream]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 11:59:24.407</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 11:59:24.407</property>
<property name="fileSize">377221</property>
<property name="comment"><![CDATA[Install this 'poot' app on your android device]]></property>
<property name="attachmentVersion">1</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168420</id>
<property name="destinationPageTitle"><![CDATA[-\]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21365925</id>
<property name="title"><![CDATA[Preparing the phone and configuring the drifter app]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21398630</id>
</element>
</collection>
<property name="version">13</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-11 16:23:42.437</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-08-08 12:06:06.983</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168421</id>
<property name="destinationPageTitle"><![CDATA[//play.google.com/store/apps/details?id=com.joeykrim.rootcheck]]></property>
<property name="destinationSpaceKey"><![CDATA[https]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21365928</id>
<property name="title"><![CDATA[Preparing the phone and configuring the drifter app]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21398633</id>
</element>
</collection>
<property name="version">16</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-11 16:23:42.437</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-08-08 13:32:03.340</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">21037058</id>
<property name="fileName"><![CDATA[USB_Manual_022311-1.pdf]]></property>
<property name="contentType"><![CDATA[application/force-download]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-15 16:33:26.193</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-15 16:33:26.193</property>
<property name="fileSize">1981771</property>
<property name="comment"><![CDATA[]]></property>
<property name="attachmentVersion">1</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21365927</id>
<property name="title"><![CDATA[Preparing the phone and configuring the drifter app]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21398632</id>
</element>
</collection>
<property name="version">15</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-11 16:23:42.437</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-08-08 13:27:28.767</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21365930</id>
<property name="title"><![CDATA[Preparing the phone and configuring the drifter app]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21398635</id>
</element>
</collection>
<property name="version">18</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-11 16:23:42.437</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-08-08 13:33:04.033</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21365929</id>
<property name="title"><![CDATA[Preparing the phone and configuring the drifter app]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21398634</id>
</element>
</collection>
<property name="version">17</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-11 16:23:42.437</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-08-08 13:32:26.437</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21365916</id>
<property name="title"><![CDATA[Preparing the phone and configuring the drifter app]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21398621</id>
</element>
</collection>
<property name="version">9</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-11 16:23:42.437</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-08-08 11:48:28.570</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21365918</id>
<property name="title"><![CDATA[Preparing the phone and configuring the drifter app]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21398623</id>
</element>
</collection>
<property name="version">10</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-11 16:23:42.437</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-08-08 11:53:57.260</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21365922</id>
<property name="title"><![CDATA[Preparing the phone and configuring the drifter app]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21398627</id>
</element>
</collection>
<property name="version">11</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-11 16:23:42.437</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-08-08 11:55:39.930</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">23298572</id>
<property name="destinationPageTitle"><![CDATA[Tasks]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-10-22 13:31:43.667</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-10-22 13:31:43.667</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20972036</id>
<property name="title"><![CDATA[Tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004799</id>
</element>
</collection>
<property name="version">24</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-05-10 15:28:57.587</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">23298566</id>
<property name="destinationPageTitle"><![CDATA[//developer.android.com/tools/sdk/eclipse-adt.html]]></property>
<property name="destinationSpaceKey"><![CDATA[http]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-10-22 13:31:43.667</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-10-22 13:31:43.667</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20972031</id>
<property name="title"><![CDATA[Tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004794</id>
</element>
</collection>
<property name="version">23</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-05-06 17:27:44.167</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">23298567</id>
<property name="destinationPageTitle"><![CDATA[//www.gsmarena.com/kyocera_rise_c5155-4747.php]]></property>
<property name="destinationSpaceKey"><![CDATA[http]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-10-22 13:31:43.667</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-10-22 13:31:43.667</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">23298568</id>
<property name="destinationPageTitle"><![CDATA[//bitbucket.org]]></property>
<property name="destinationSpaceKey"><![CDATA[http]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-10-22 13:31:43.667</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-10-22 13:31:43.667</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">23298569</id>
<property name="destinationPageTitle"><![CDATA[//www.sparkfun.com/products/11343]]></property>
<property name="destinationSpaceKey"><![CDATA[https]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-10-22 13:31:43.667</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-10-22 13:31:43.667</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">23298570</id>
<property name="destinationPageTitle"><![CDATA[//www.findmespot.com/en/index.php?cid=116]]></property>
<property name="destinationSpaceKey"><![CDATA[http]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-10-22 13:31:43.667</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-10-22 13:31:43.667</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971996</id>
<property name="title"><![CDATA[Tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004759</id>
</element>
</collection>
<property name="version">22</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-16 09:21:22.907</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">23298571</id>
<property name="destinationPageTitle"><![CDATA[//www.sparkfun.com/tutorials/340]]></property>
<property name="destinationSpaceKey"><![CDATA[http]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-10-22 13:31:43.667</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-10-22 13:31:43.667</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168398</id>
<property name="destinationPageTitle"><![CDATA[]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168399</id>
<property name="destinationPageTitle"><![CDATA[//play.google.com/store/apps/details?id=org.kde.necessitas.ministro]]></property>
<property name="destinationSpaceKey"><![CDATA[https]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168400</id>
<property name="destinationPageTitle"><![CDATA[//play.google.com/store/apps/details?id=com.noshufou.android.su]]></property>
<property name="destinationSpaceKey"><![CDATA[https]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168401</id>
<property name="destinationPageTitle"><![CDATA[+\]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168402</id>
<property name="destinationPageTitle"><![CDATA[+\]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">21168403</id>
<property name="destinationPageTitle"><![CDATA[+\]]></property>
<property name="destinationSpaceKey"><![CDATA[AndroidLogger]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 17:01:48.880</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:01:48.880</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">21528640</id>
<property name="fileName"><![CDATA[Drifter-1_61.tar.gz]]></property>
<property name="contentType"><![CDATA[application/x-gzip]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-08-22 09:52:15.027</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-08-22 09:52:15.027</property>
<property name="fileSize">5329069</property>
<property name="comment"><![CDATA[Android Drifter app source and Eclipse files]]></property>
<property name="attachmentVersion">1</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20087244</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20120002</id>
</element>
</collection>
<property name="version">30</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-03-15 11:03:41.290</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20087246</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20120004</id>
</element>
</collection>
<property name="version">31</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-03-15 11:07:51.300</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20087248</id>
<property name="title"><![CDATA[Tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20120006</id>
</element>
</collection>
<property name="version">19</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-03-15 10:17:23.370</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971529</id>
<property name="title"><![CDATA[How to root an Android phone]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004297</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 11:58:01.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 11:58:01.883</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004365</id>
<property name="body"><![CDATA[Connect phone to IOIO board with USB

Plug cable from battery pack to Wakey; verify that SPOT and IOIO power LEDs are now lit
* NOTE: to power-cycle Wakey, *unplug the power cable for at least 30 seconds* before re-plugging

Run "IOIO Hardware Tester" app, verify comms with IOIO board

If no comms with IOIO:
* Verify IOIO board has power from Wakey
* Reboot phone

Turn off unneeded phone radios:
* Turn off GPS
* Put phone in 'Airplane mode'
* Enable Bluetooth

Run Drifter app

Run Diagnostics \-> Wakey test (puts Wakey to sleep)

Run Diagnostics \-> SPOT test

Run Manual Refresh

Before stowing phone in housing, consider dimming phone screen to save power (the screen will light on each sample cycle while IOIO has power) ]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971597</id>
</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21365099</id>
<property name="title"><![CDATA[Test results]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21397850</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-06-13 14:50:51.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-06-13 14:50:51.883</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365097</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">19562514</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">19595282</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-01 22:46:00.980</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971531</id>
<property name="title"><![CDATA[How to root an Android phone]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004299</id>
</element>
</collection>
<property name="version">2</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 11:58:01.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 13:43:40.947</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21365100</id>
<property name="title"><![CDATA[Test results]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21397851</id>
</element>
</collection>
<property name="version">2</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-06-13 14:50:51.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-06-13 14:53:05.793</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365097</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971533</id>
<property name="title"><![CDATA[How to root an Android phone]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004301</id>
</element>
</collection>
<property name="version">3</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 11:58:01.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 13:46:01.760</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21365102</id>
<property name="title"><![CDATA[Test results]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21397853</id>
</element>
</collection>
<property name="version">3</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-06-13 14:50:51.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-06-13 14:54:09.357</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365097</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21365104</id>
<property name="title"><![CDATA[Test results]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21397855</id>
</element>
</collection>
<property name="version">4</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-06-13 14:50:51.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-06-13 14:57:32.923</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365097</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971537</id>
<property name="title"><![CDATA[How to root an Android phone]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004305</id>
</element>
</collection>
<property name="version">4</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 11:58:01.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 13:47:10.970</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21365106</id>
<property name="title"><![CDATA[Test results]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21397857</id>
</element>
</collection>
<property name="version">5</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-06-13 14:50:51.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-06-13 15:02:40.637</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365097</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21365107</id>
<property name="title"><![CDATA[Test results]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21397858</id>
</element>
</collection>
<property name="version">6</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-06-13 14:50:51.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-06-13 15:09:34.997</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365097</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971539</id>
<property name="title"><![CDATA[How to root an Android phone]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004307</id>
</element>
</collection>
<property name="version">5</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 11:58:01.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 13:50:01.960</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21365108</id>
<property name="title"><![CDATA[Test results]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21397859</id>
</element>
</collection>
<property name="version">7</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-06-13 14:50:51.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-06-13 15:12:05.707</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365097</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971541</id>
<property name="title"><![CDATA[How to root an Android phone]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004309</id>
</element>
</collection>
<property name="version">6</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 11:58:01.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 13:51:12.047</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971544</id>
<property name="title"><![CDATA[How to root an Android phone]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004312</id>
</element>
</collection>
<property name="version">8</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 11:58:01.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 13:57:41.093</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971543</id>
<property name="title"><![CDATA[How to root an Android phone]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004311</id>
</element>
</collection>
<property name="version">7</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 11:58:01.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 13:56:59.093</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971546</id>
<property name="title"><![CDATA[How to root an Android phone]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004314</id>
</element>
</collection>
<property name="version">9</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 11:58:01.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 13:58:18.443</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20087238</id>
<property name="title"><![CDATA[Tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119996</id>
</element>
</collection>
<property name="version">18</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-03-07 18:02:27.010</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971547</id>
<property name="title"><![CDATA[How to root an Android phone]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004315</id>
</element>
</collection>
<property name="version">10</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 11:58:01.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 14:01:29.390</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971549</id>
<property name="title"><![CDATA[How to root an Android phone]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004317</id>
</element>
</collection>
<property name="version">11</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 11:58:01.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 14:02:13.953</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20087242</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20120000</id>
</element>
</collection>
<property name="version">29</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-03-15 11:00:44.250</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971551</id>
<property name="title"><![CDATA[How to root an Android phone]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004319</id>
</element>
</collection>
<property name="version">12</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 11:58:01.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 14:04:42.337</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20087240</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119998</id>
</element>
</collection>
<property name="version">28</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-03-07 18:01:21.347</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086969</id>
<property name="title"><![CDATA[Software tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119732</id>
</element>
</collection>
<property name="version">12</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-13 14:51:13.633</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971553</id>
<property name="title"><![CDATA[How to root an Android phone]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004321</id>
</element>
</collection>
<property name="version">13</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 11:58:01.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 14:08:40.430</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086970</id>
<property name="title"><![CDATA[Software tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119733</id>
</element>
</collection>
<property name="version">13</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-21 18:29:58.070</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971554</id>
<property name="title"><![CDATA[How to root an Android phone]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004322</id>
</element>
</collection>
<property name="version">14</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 11:58:01.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 14:10:34.733</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971555</id>
<property name="title"><![CDATA[How to root an Android phone]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004323</id>
</element>
</collection>
<property name="version">15</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 11:58:01.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 14:11:19.703</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971556</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004324</id>
</element>
</collection>
<property name="version">32</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-03-15 11:15:00.647</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086956</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119719</id>
</element>
</collection>
<property name="version">25</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 14:59:46.440</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971557</id>
<property name="title"><![CDATA[How to root an Android phone]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004325</id>
</element>
</collection>
<property name="version">16</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 11:58:01.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 14:11:50.583</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086959</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119722</id>
</element>
</collection>
<property name="version">26</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 15:00:19.577</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971559</id>
<property name="title"><![CDATA[How to root an Android phone]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004327</id>
</element>
</collection>
<property name="version">17</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 11:58:01.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 16:40:01.827</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971560</id>
<property name="title"><![CDATA[How to root an Android phone]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004328</id>
</element>
</collection>
<property name="version">18</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-09 11:58:01.883</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 17:00:13.613</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21366070</id>
<property name="title"><![CDATA[Tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21398773</id>
</element>
</collection>
<property name="version">26</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-08-27 13:25:49.357</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21366069</id>
<property name="title"><![CDATA[Tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21398772</id>
</element>
</collection>
<property name="version">25</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-05-10 17:07:45.637</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406503</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">19726337</id>
</property>
<property name="type"><![CDATA[REMOVECOMMENT]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:52:40.114</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:52:40.114</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086953</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119718</id>
</element>
</collection>
<property name="version">24</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 14:58:52.710</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406504</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">19726337</id>
</property>
<property name="type"><![CDATA[SETPAGEPERMISSIONS]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:52:40.114</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:52:40.114</property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406501</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">19726337</id>
</property>
<property name="type"><![CDATA[REMOVEPAGE]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:52:40.114</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:52:40.114</property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406502</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">19726337</id>
</property>
<property name="type"><![CDATA[SETSPACEPERMISSIONS]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:52:40.114</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:52:40.114</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086951</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119716</id>
</element>
</collection>
<property name="version">23</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 14:42:59.847</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086950</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119715</id>
</element>
</collection>
<property name="version">22</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 14:39:44.597</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406507</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">19726337</id>
</property>
<property name="type"><![CDATA[EXPORTPAGE]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:52:40.115</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:52:40.115</property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406508</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">19726337</id>
</property>
<property name="type"><![CDATA[REMOVEBLOG]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:52:40.115</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:52:40.115</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971565</id>
<property name="title"><![CDATA[Configure app]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004333</id>
</element>
</collection>
<property name="version">2</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-11 16:23:42.437</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-11 16:30:07.740</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086948</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119713</id>
</element>
</collection>
<property name="version">21</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 14:31:18.510</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406505</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">19726337</id>
</property>
<property name="type"><![CDATA[CREATEATTACHMENT]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:52:40.114</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:52:40.114</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971564</id>
<property name="title"><![CDATA[Configure app]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004332</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-11 16:23:42.437</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-11 16:23:42.437</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086947</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119712</id>
</element>
</collection>
<property name="version">20</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 14:30:21.563</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406506</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">19726337</id>
</property>
<property name="type"><![CDATA[EXPORTSPACE]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:52:40.115</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:52:40.115</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086946</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119711</id>
</element>
</collection>
<property name="version">19</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 14:25:13.533</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406511</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">19726337</id>
</property>
<property name="type"><![CDATA[EDITBLOG]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:52:40.115</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:52:40.115</property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406512</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">19726337</id>
</property>
<property name="type"><![CDATA[REMOVEATTACHMENT]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:52:40.115</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:52:40.115</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086944</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119709</id>
</element>
</collection>
<property name="version">18</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 14:24:40.010</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406509</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">19726337</id>
</property>
<property name="type"><![CDATA[COMMENT]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:52:40.115</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:52:40.115</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086943</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119708</id>
</element>
</collection>
<property name="version">17</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 14:23:57.100</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406510</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">19726337</id>
</property>
<property name="type"><![CDATA[EDITSPACE]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:52:40.115</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:52:40.115</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086941</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119706</id>
</element>
</collection>
<property name="version">16</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 14:17:55.283</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406513</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">19726337</id>
</property>
<property name="type"><![CDATA[REMOVEMAIL]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:52:40.115</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:52:40.115</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086939</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119704</id>
</element>
</collection>
<property name="version">15</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 12:44:46.167</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086938</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119703</id>
</element>
</collection>
<property name="version">14</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 12:43:31.583</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004291</id>
<property name="body"><![CDATA[The Drifter app can optionally reboot the phone at a specified interval to clear potential error states in the phone and its interfaces. This reboot capability requires the app to have "root" privileges on the phone. I used the following procedure to root a Kyocera Rise phone. This is not a very simple process, and several of the messages displayed during the process are somewhat misleading - but this worked for me. This procedure exploits a kernel bug in some Android phones, but may not work for your particular phone. Caveat emptor.
\\
\\
1. make sure usb debuging is on (under developer options)

2. make sure unknown sources is checked  (in system settings under security)

3. install [poot.apk|^Poot-debug(W100).apk]

4. install [minstro 2|https://play.google.com/store/apps/details?id=org.kde.necessitas.ministro] from Google Play Store

5. install [superuser|https://play.google.com/store/apps/details?id=com.noshufou.android.su] from Google Play Store

6. run poot on your phone - it will ask if it's okay to install libraries - say 'yes'

7. Select 'Press here to run poot'. The first time I did this I got the following result:

2012 giantpune
\[+\] opened device
\[+\] Set loggin mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[-\] expected current to be 1:ffff
\[-\] patching failed.
A demon materialized while pooting. Error code: 22
su binary was not written&nbsp;
&nbsp;

I then rebooted my phone and repeated this step; now I got a different result that indicates the 'su' binary was installed (despite the "Error code: 64" message):

2012 giantpune
\[+\] opened device
\[+\] Set logging mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[+\] Hooked mask_request_validate()
\[+\] Ran some code as the kernel
\[+\] I think root, therefore I am root
WriteSUBinary()
\[+\] remounted /system read-write
\[+\] wrote su binary
\[+\] changed su binary to uid 0, gid 0, mode 6755
\[+\] remounted /system read-only
\[+\] Removed hook
\[-\] current && current \!= last + 1:    0000ffff
0000ffff
\[-\] Haxx has run its coarse. Reboot the device to play again

A demon materialized while pooting. Error code: 64
You need to restart your device
\\

8. Run the&nbsp; 'superuser' app; go left to 'info' then down to su binary; click it and then click update (only do it once or it won't work)

9. After the update screen finishes, click 'temp unroot' under the su binary,&nbsp; then reboot your device

10. Install [root checker|https://play.google.com/store/apps/details?id=com.joeykrim.rootcheck] from Google Play Store and run it to ensure the phone is now rooted.

11. If the phone is rooted, go to superuser, uncheck 'temp root' and reboot

This procedure may work for your phone - if not, search the web for root procedures appropriate to your phone.
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971523</id>
</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971586</id>
<property name="title"><![CDATA[Configure app]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004354</id>
</element>
</collection>
<property name="version">6</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-11 16:23:42.437</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-15 16:39:56.230</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21366027</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21398731</id>
</element>
</collection>
<property name="version">35</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-08-22 09:58:30.477</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086936</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119701</id>
</element>
</collection>
<property name="version">13</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 12:42:25.340</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971584</id>
<property name="title"><![CDATA[Configure app]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004352</id>
</element>
</collection>
<property name="version">5</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-11 16:23:42.437</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-15 16:38:19.027</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="SpaceDescription" package="com.atlassian.confluence.spaces">
<id name="id">19562509</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">19726337</id>
</property>
<property name="title"/><collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">19595277</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.917</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-01 22:46:00.917</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086933</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119698</id>
</element>
</collection>
<property name="version">11</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 12:40:06.640</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086934</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119699</id>
</element>
</collection>
<property name="version">12</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 12:41:53.330</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21790724</id>
<property name="title"><![CDATA[Tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21823492</id>
</element>
</collection>
<property name="version">27</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-08-27 13:26:16.500</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971582</id>
<property name="title"><![CDATA[Configure app]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004350</id>
</element>
</collection>
<property name="version">4</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-11 16:23:42.437</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-15 16:37:11.803</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21790725</id>
<property name="title"><![CDATA[Tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21823493</id>
</element>
</collection>
<property name="version">28</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-08-29 10:03:46.367</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086932</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119697</id>
</element>
</collection>
<property name="version">10</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 12:37:21.373</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971580</id>
<property name="title"><![CDATA[Configure app]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004348</id>
</element>
</collection>
<property name="version">3</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-11 16:23:42.437</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-12 12:57:06.027</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971593</id>
<property name="title"><![CDATA[Tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004361</id>
</element>
</collection>
<property name="version">21</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-16 09:19:39.467</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086930</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119695</id>
</element>
</collection>
<property name="version">9</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 12:35:31.093</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971591</id>
<property name="title"><![CDATA[Tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004359</id>
</element>
</collection>
<property name="version">20</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-03-15 11:35:37.037</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086927</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119692</id>
</element>
</collection>
<property name="version">7</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 12:32:46.923</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086928</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119693</id>
</element>
</collection>
<property name="version">8</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 12:34:59.447</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406500</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">19726337</id>
</property>
<property name="type"><![CDATA[VIEWSPACE]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:52:26.396</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:52:26.396</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086926</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119691</id>
</element>
</collection>
<property name="version">6</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 12:25:25.547</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">21528603</id>
<property name="fileName"><![CDATA[phoneBatt.jpg]]></property>
<property name="contentType"><![CDATA[image/jpeg]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365097</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-06-13 14:51:55.237</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-06-13 14:51:55.237</property>
<property name="fileSize">101971</property>
<property name="comment"><![CDATA[]]></property>
<property name="attachmentVersion">1</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">21528604</id>
<property name="fileName"><![CDATA[WakeyBattery.jpg]]></property>
<property name="contentType"><![CDATA[image/jpeg]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365097</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-06-13 14:52:28.667</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-06-13 14:52:28.667</property>
<property name="fileSize">94278</property>
<property name="comment"><![CDATA[]]></property>
<property name="attachmentVersion">1</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086924</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119689</id>
</element>
</collection>
<property name="version">5</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 12:00:10.763</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">21528605</id>
<property name="fileName"><![CDATA[WakeyBattery-may24.jpg]]></property>
<property name="contentType"><![CDATA[image/jpeg]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365097</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-06-13 14:56:44.643</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-06-13 14:56:44.643</property>
<property name="fileSize">118865</property>
<property name="comment"><![CDATA[]]></property>
<property name="attachmentVersion">1</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971599</id>
<property name="title"><![CDATA[Procedure for drifter deployment]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004367</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-16 13:07:08.587</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-16 13:07:08.587</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971597</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971602</id>
<property name="title"><![CDATA[Procedure for drifter deployment]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004370</id>
</element>
</collection>
<property name="version">3</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-16 13:07:08.587</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-16 14:47:51.530</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971597</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086922</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119687</id>
</element>
</collection>
<property name="version">4</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 11:44:16.633</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971601</id>
<property name="title"><![CDATA[Procedure for drifter deployment]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004369</id>
</element>
</collection>
<property name="version">2</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-16 13:07:08.587</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-16 13:08:17.100</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971597</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">21528606</id>
<property name="fileName"><![CDATA[PhoneBattery-may24.jpg]]></property>
<property name="contentType"><![CDATA[image/jpeg]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365097</id>
</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-06-13 14:57:10.407</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-06-13 14:57:10.407</property>
<property name="fileSize">116938</property>
<property name="comment"><![CDATA[]]></property>
<property name="attachmentVersion">1</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086916</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119681</id>
</element>
</collection>
<property name="version">2</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-01 22:50:59.847</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086918</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119683</id>
</element>
</collection>
<property name="version">3</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-15 11:40:20.840</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21366023</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21398727</id>
</element>
</collection>
<property name="version">33</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-09 16:38:14.437</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971603</id>
<property name="title"><![CDATA[Procedure for drifter deployment]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004371</id>
</element>
</collection>
<property name="version">4</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-16 13:07:08.587</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-16 14:48:27.967</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971597</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">21366025</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21398729</id>
</element>
</collection>
<property name="version">34</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-08-22 09:57:46.763</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971605</id>
<property name="title"><![CDATA[Procedure for drifter deployment]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004373</id>
</element>
</collection>
<property name="version">5</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-16 13:07:08.587</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-16 14:48:56.100</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971597</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">23167126</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">23199889</id>
</element>
</collection>
<property name="version">36</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-08-22 09:59:19.967</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004330</id>
<property name="body"><![CDATA[h4. Preparing a new phone

Associate the phone with a Google user account mbariengineer@gmail.com - see Tom O'Reilly for the password.

If you plan to use the IOIO board, download the I[OIO Hardware Tester app|https://play.google.com/store/apps/details?id=ioio.example.ioiohardwaretester] from Google Play; this app is very useful for trouble-shooting, allows you to verify that the IOIO board is connected to your phone and functional.&nbsp;

If you plan to use the Drifter app's automatic reboot capability, you must first "["root" the phone|AndroidLogger:How to root an Android phone].

If you plan to use a SPOT Connect modem with the app, *you must "pair" the phone with the specific SPOT modem it will connect to*. If you must replace the SPOT for any reason, then you must pair the phone with the new SPOT. See the "Pairing" section of the [SPOT Connect user manual|^USB_Manual_022311-1.pdf].

Eventually we'll put the Drifter app on a server such as Google Play to allow easy over-the-air installation. Until then you should bring the phone to developer O'Reilly, who has the required development tools to install the app on a phone. Before bringing the phone to O'Reilly, you can (1) Enable app installation from non-Google sources: System->Security->Unknown Sources and (2) Enable USB debugging: System->Developer Options->USB debugging
\\

h4. Configuration and power

The Android 'Drifter' app can be configured to log various sensors and use various telemetry channels. Many if not most deployment scenarios provide a limited amount of power to run the phone - e.g. external batteries. Unless you are lucky enough to have the phone plugged into an AC adapter, consider the following power-saving tips.

Consider powering off the following, depending on your deployment needs:
* WiFi - if you are not using WiFi for telemetry, disable
* Cell radio - if you are not using cell network for telemetry via email or SMS, put phone into 'airplane mode'
* GPS - turn off if you don't need to log GPS (SPOT Connect provides GPS)
* BlueTooth - turn off unless you are using SPOT Connect for telemetry, or acquiring data from Bluetooth-serial instruments

Consider disabling the following to avoid excess power use:

* Disable Google Play notification and diable auto-update - I would expect the phone wouldn't try in airplane mode, but just in case:
&nbsp;Open Google Play:&nbsp; Press menu, select Settings
* Disable auto-sync - I would expect the phone wouldn't try if in "airplane" mode, but just in case:
System settings \-> Accounts & sync ; slide switch at top of screen to "off"
* Disable mobile data:
System settings \-> Data usage; turn mobile data switch "off"

Also, you should set the screen timeout to the lowest defined value, since the phone will be unattended
most of the time (the phone screen may occasionally turn on, e.g. when charge flows though the USB port).

The Drifter app can use the MBARI "Wakey" board to manage power to attached instruments and modems. If you are using Wakey, then select Configuration->Power Management \-> Use Wakey Controller.
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971562</id>
</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20971612</id>
<property name="title"><![CDATA[Procedure for drifter deployment]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">21004380</id>
</element>
</collection>
<property name="version">6</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-04-16 13:07:08.587</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-04-16 16:16:22.443</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971597</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">23167130</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">23199893</id>
</element>
</collection>
<property name="version">38</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-10-21 15:26:36.023</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">23167127</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">23199890</id>
</element>
</collection>
<property name="version">37</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:46:00.980</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-10-21 15:25:20.163</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562510</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086896</id>
<property name="title"><![CDATA[Software tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119661</id>
</element>
</collection>
<property name="version">11</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-13 14:47:46.990</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">20086894</id>
<property name="title"><![CDATA[Software tasks]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">20119659</id>
</element>
</collection>
<property name="version">10</property>
<property name="creatorName"><![CDATA[oreilly]]></property>
<property name="creationDate">2013-02-01 22:50:02.637</property>
<property name="lastModifierName"><![CDATA[oreilly]]></property>
<property name="lastModificationDate">2013-02-13 13:20:38.360</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562512</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119683</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.

h2. &nbsp;pH Drifter application


Below is a schematic depiction of components for the pH drifter application.
!DrifterSchematic.png|width=814,height=628!
The phone battery is occasionally "topped off" through USB when Wakey provides power to the IOIO board.

&nbsp;Paul McGill measured phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android datalogger app sampling once every minute. Paul measured power usage in the following states:

* Datalogger idle (between samples): 1.2 mA
* Datalogger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds\\ \\ \\ \\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086918</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119689</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.
!DrifterSchematic.png|width=814,height=628!


Advantage: Android phone is off-the-shelf, cheap ($80), no physical modifications required to the phone.


Disadvantage: There is no way to reset the phone once deployed. \\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android datalogger app sampling once every minute. Paul measured power usage in the following states:
* Datalogger idle (between samples): 1.2 mA
* Datalogger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Datalogger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086924</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119687</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.
!DrifterSchematic.png|width=814,height=628!


&nbsp;Paul McGill measured phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android datalogger app sampling once every minute. Paul measured power usage in the following states:
* Datalogger idle (between samples): 1.2 mA
* Datalogger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Datalogger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;


[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086922</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119693</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.
!DrifterSchematic.png|width=814,height=628!

The Data logger app runs on the Android phone. The app retrieves sensor data through analog input ports on the IOIO board. The app controls the Wakey power controller through an RS232 port on the IOIO board.


Note that phone is internally powered, phone power is NOT externally controlled. Android power management attempts to minimize power usage based on app activity.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android datalogger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;
\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086928</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119692</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.
!DrifterSchematic.png|width=814,height=628!

The Data logger app runs on the Android phone.

Note that phone is internally powered, phone power is NOT externally controlled. Android power management attempts to minimize power usage based on app activity.

* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android datalogger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;
\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086927</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119691</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.
!DrifterSchematic.png|width=814,height=628!

Note that Android phone is internally powered, phone power is NOT externally controlled.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android datalogger app sampling once every minute. Paul measured power usage in the following states:
* Datalogger idle (between samples): 1.2 mA
* Datalogger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Datalogger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;
\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086926</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119698</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.
!DrifterSchematic.png|width=814,height=628!

The Data logger app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app retrieves sensor data through analog input ports on the I[OIO board|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board.

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android datalogger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;
\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086933</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119697</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.
!DrifterSchematic.png|width=814,height=628!

The Data logger app runs on the Android phone. The app retrieves sensor data through analog input ports on the IOIO board. The app manages the Wakey power controller through an RS232 port on the IOIO board.

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not a way to do that with our current approach.

* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android datalogger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;
\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086932</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21397859</id>
<property name="body"><![CDATA[May 11 - May 25 (15 days)

The system is located on the Building B rear deck, for a clear view of the sky. Most of the gear (phone, IOIO, Wakey, batteries) is inside a Pelican case, with the SPOT modem duct-taped to the outside of the case. The case was latched on one side only to prevent cutting the SPOT power and data wires. The pH sensor is currently NOT attached.

I haven't yet looked at the detailed logs, but see no indication of major errors during this burn-in test so far.

Attached are plots showing Wakey battery voltage and phone battery level.

For this test, the phone is configured to send SPOT messages as well as diagnostic messages via wifi. At sea we will of course not incur the wifi power usage.

Got 495 SPOT messages, out of 725 total samples; SPOT success rate = 68.3%

\\  !WakeyBattery.jpg!
!phoneBatt.jpg!
&nbsp;
May 24 - June 9 (16 days)

This test was also performed on Building B rear deck, physically configured identically to the May 11 test. But in this case, WiFi messaging was DISABLED - compare the following plots to see much lower power usage compared to the May 11 test. Note that the charge provided to the phone by the D-cell battery pack every thirty minutes was sufficient to keep the phone battery level at about 96 percent for the duration of the test.&nbsp;

&nbsp;Got 495 SPOT messages, out of 852 total samples; SPOT success rate = 58%

The last SPOT message was received on June 10. Inspection of the hardware revealed a broken corroded wire leading to the SPOT, as well as corrosion on a Wakey connector. Note that no effort had been made to waterproof the SPOT housing or the partly-latched Pelican case that housed the Wakey board. This corrosion may explain the overall lower SPOT success rate, compared to the May 11 test (success rate = 68%).

\\
\\  !WakeyBattery-may24.jpg!\\  !PhoneBattery-may24.jpg!]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365108</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119695</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.
!DrifterSchematic.png|width=814,height=628!

The Data logger app runs on the Android phone. The app retrieves sensor data through analog input ports on the IOIO board. The app manages the Wakey power controller through an RS232 port on the IOIO board.

Note that phone is internally powered, phone power is NOT externally controlled. Android power management attempts to minimize power usage based on app activity.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android datalogger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;
\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086930</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119701</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.
!DrifterSchematic.png|width=814,height=628!

The Data logger app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10585][https://www.sparkfun.com/products/10748?|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board.

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android datalogger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;
\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086936</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119699</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.
!DrifterSchematic.png|width=814,height=628!

The Data logger app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app retrieves sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10585][|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board.

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android datalogger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;
\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086934</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119706</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.


!DrifterSchematic.png|width=814,height=628!

The Data logger app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board.

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android datalogger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;
\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086941</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21823492</id>
<property name="body"><![CDATA[+Outstanding tasks+
15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

17. If configuration requires IOIO but it is not physically connected, 'Refresh' button never gets reenabled.

18. Need to ensure that Wakey is awake for first sample, to properly synchronize app sampling schedule and Wakey sleep schedule.

23. IOIO seems to get some current from phone; red IOIO LED glows faint red when connected only to phone.

24. Phone power sometimes runs out in non-test conditions - not clear why. WiFi?

26. Configure option to start server at boot time, not just on auto-reboot. ESPECIALLY IMPORTANT IN CASE OF SPONTANEOUS REBOOT, WHICH HAS BEEN OBSERVED

27. check the relative drift of the Android phone and Wakey clocks before we deploy.

28. DrifterService should assert 20-minute sleep onset delay for Wakey comm port, since user may inadvertently leave some test value instead.

29. If the coms delay time is greater than the sleep time, causing the coms power to be already on when Wakey awakes, then the action of electronically pushing the SPOT power button to turn SPOT on may instead turn it off. To prevent this, the Wakey code should check to see if the coms power is already on before pushing the SPOT power button.

&nbsp;30. Wakey power management enabled, acquiring A2D data, sample interval = 5 minutes. Wakey does not turn off IOIO. (McGill, Friederich)


+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state

12. Check into version control
\\
6. If SPOT selected, check that Bluetooth is enabled before starting run

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run
11. Enable log-only run, i.e. no telemetry specified

8. Implement Wakey control, Wakey test
\\

7. If GPS selected, check that GPS enabled before starting run

14. Log debug/info/error messages to a file.. File would be accessed after recovery.

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)
\\

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

19. Implement compass acquisition

20. Design/implement succinct SPOT message format. Each message can probably include both science and engineering data

21. Sample schedule does not run when no telemetry channel selected (bug)

22. App and wiring on amplifier board do not agree on analog pin number.  Compared app analog readout to IOIODiagnostic app (from market);  IOIODiagnostic shows expected voltages on pins, so datalogger must be  improperly reading analog channels.

25. Consider occasional programmatic reboot of phone to improve reliability - this requires 'rooting' the phone.

2. Data log format

3. Log science data]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21790724</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119703</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.
!DrifterSchematic.png|width=814,height=628!

The Data logger app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10585]. The app manages the Wakey power controller through an RS232 port on the IOIO board.

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android datalogger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;
\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086938</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21823493</id>
<property name="body"><![CDATA[+Outstanding tasks+
15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

17. If configuration requires IOIO but it is not physically connected, 'Refresh' button never gets reenabled.

18. Need to ensure that Wakey is awake for first sample, to properly synchronize app sampling schedule and Wakey sleep schedule.

23. IOIO seems to get some current from phone; red IOIO LED glows faint red when connected only to phone.

24. Phone power sometimes runs out in non-test conditions - not clear why. WiFi?

26. Configure option to start server at boot time, not just on auto-reboot. ESPECIALLY IMPORTANT IN CASE OF SPONTANEOUS REBOOT, WHICH HAS BEEN OBSERVED

27. check the relative drift of the Android phone and Wakey clocks before we deploy.

28. DrifterService should assert 20-minute sleep onset delay for Wakey comm port, since user may inadvertently leave some test value instead.

29. If the coms delay time is greater than the sleep time, causing the coms power to be already on when Wakey awakes, then the action of electronically pushing the SPOT power button to turn SPOT on may instead turn it off. To prevent this, the Wakey code should check to see if the coms power is already on before pushing the SPOT power button.

30. Wakey power management enabled, acquiring A2D data, sample interval = 5 minutes. Wakey does not turn off IOIO. (McGill, Friederich)

31. Wakey RX, TX pins default to 0. Should default to 6, 7\\

+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state

12. Check into version control
\\
6. If SPOT selected, check that Bluetooth is enabled before starting run

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run
11. Enable log-only run, i.e. no telemetry specified

8. Implement Wakey control, Wakey test
\\

7. If GPS selected, check that GPS enabled before starting run

14. Log debug/info/error messages to a file.. File would be accessed after recovery.

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)
\\

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

19. Implement compass acquisition

20. Design/implement succinct SPOT message format. Each message can probably include both science and engineering data

21. Sample schedule does not run when no telemetry channel selected (bug)

22. App and wiring on amplifier board do not agree on analog pin number.  Compared app analog readout to IOIODiagnostic app (from market);  IOIODiagnostic shows expected voltages on pins, so datalogger must be  improperly reading analog channels.

25. Consider occasional programmatic reboot of phone to improve reliability - this requires 'rooting' the phone.

2. Data log format

3. Log science data]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21790725</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119704</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.
!DrifterSchematic.png|width=814,height=628!

The Data logger app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board.

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android datalogger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;
\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086939</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119709</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

!DrifterSchematic.png|width=814,height=628!

The Data logger app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board. The phone sends telemetry to shore as 41-byte messages through the [SPOT Connect|http://www.findmespot.com/en/index.php?cid=116] modem, using the Bluetooth protocol described [here|http://www.sparkfun.com/tutorials/340].

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android datalogger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;
\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086944</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">19595277</id>
<property name="body"><![CDATA[]]></property>
<property name="content" class="SpaceDescription" package="com.atlassian.confluence.spaces"><id name="id">19562509</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004759</id>
<property name="body"><![CDATA[+Outstanding tasks+
15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

17. If configuration requires IOIO but it is not physically connected, 'Refresh' button never gets reenabled.

18. Need to ensure that Wakey is awake for first sample, to properly synchronize app sampling schedule and Wakey sleep schedule.

23. IOIO seems to get some current from phone; red IOIO LED glows faint red when connected only to phone.

24. Phone power sometimes runs out in non-test conditions - not clear why. WiFi?

26. Configure option to start server at boot time, not just on auto-reboot. ESPECIALLY IMPORTANT IN CASE OF SPONTANEOUS REBOOT, WHICH HAS BEEN OBSERVED
\\

+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state

12. Check into version control
\\
6. If SPOT selected, check that Bluetooth is enabled before starting run

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run
11. Enable log-only run, i.e. no telemetry specified

8. Implement Wakey control, Wakey test
\\

7. If GPS selected, check that GPS enabled before starting run

14. Log debug/info/error messages to a file.. File would be accessed after recovery.

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)
\\

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

19. Implement compass acquisition

20. Design/implement succinct SPOT message format. Each message can probably include both science and engineering data

21. Sample schedule does not run when no telemetry channel selected (bug)

22. App and wiring on amplifier board do not agree on analog pin number.  Compared app analog readout to IOIODiagnostic app (from market);  IOIODiagnostic shows expected voltages on pins, so datalogger must be  improperly reading analog channels.

25. Consider occasional programmatic reboot of phone to improve reliability - this requires 'rooting' the phone.


2. Data log format

3. Log science data]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971996</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119708</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

!DrifterSchematic.png|width=814,height=628!

The Data logger app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board. The phone sends telemetry through the [SPOT Connect|http://www.findmespot.com/en/index.php?cid=116]modem, via Bluetooth protocol described [here|http://www.sparkfun.com/tutorials/340].


Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android datalogger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;
\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086943</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119713</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.
\\

The Chavez lab has developed a robust low cost drifter that has been used repeatedly by our lab, CANON, Autonomy and several other MBARI projects. The drifter is based on a SPOT tracker and total hardware cost is about $250. We propose to exploit the rapid development of commercial low-cost mobile computing and sensor platforms by taking a prototype instrument data logger (developed by O'Reilly and Risi) that runs on an Android device (e.g. phone or tablet) and deploying it as a test on the low cost drifter. The Android logger application developed by O'Reilly periodically retrieves data from one or more RS-232 or analog instruments as well as onboard phone sensors (e.g. GPS, accelerometer, compass). The app then telemeters the retrieved data to shore via the cell phone network, WiFi or a satellite modem. Such a data logger could have several applications including low-cost moorings, drifters, or pier-mounted deployments.
\\

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

!DrifterSchematic.png|width=814,height=628!

The Data logger app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board. The phone sends telemetry to shore as 41-byte messages through the [SPOT Connect|http://www.findmespot.com/en/index.php?cid=116] satellite modem, using the Bluetooth protocol described [here|http://www.sparkfun.com/tutorials/340].

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android datalogger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;
\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086948</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119711</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

!DrifterSchematic.png|width=814,height=628!

The Data logger app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board. The phone sends telemetry to shore as 41-byte messages through the [SPOT Connect|http://www.findmespot.com/en/index.php?cid=116] satellite modem, using the Bluetooth protocol described [here|http://www.sparkfun.com/tutorials/340].

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android datalogger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;
\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086946</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">19595282</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">19562514</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119712</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.\\

The Chavez lab has developed a robust low cost drifter that has been used repeatedly by our lab, CANON, Autonomy and several other MBARI projects. The drifter is based on a SPOT tracker and total hardware cost is about $250. We propose to exploit the rapid development of commercial low-cost mobile computing and sensor platforms by taking a prototype instrument data logger (developed by O'Reilly and Risi) that runs on an Android device (e.g. phone or tablet) and deploying it as a test on the low cost drifter. The Android logger application developed by O'Reilly periodically retrieves data from one or more RS-232 or analog instruments as well as onboard phone sensors (e.g. GPS, accelerometer, compass). The app then telemeters the retrieved data to shore via the cell phone network, WiFi or a SPOT satellite modem. Such a data logger could have several applications including low-cost moorings, drifters, or pier-mounted deployments.\\

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

!DrifterSchematic.png|width=814,height=628!

The Data logger app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board. The phone sends telemetry to shore as 41-byte messages through the [SPOT Connect|http://www.findmespot.com/en/index.php?cid=116] satellite modem, using the Bluetooth protocol described [here|http://www.sparkfun.com/tutorials/340].

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android datalogger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;
\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086947</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119716</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.
\\

The Chavez lab has developed a robust low cost drifter that has been used repeatedly by our lab, CANON, Autonomy and several other MBARI projects. The drifter is based on a SPOT tracker and total hardware cost is about $250. We propose to exploit the rapid development of commercial low-cost mobile computing and sensor platforms by taking a prototype instrument data logger (developed by O'Reilly and Risi) that runs on an Android device (e.g. phone or tablet) and deploying it as a test on the low cost drifter. The Android logger application developed by O'Reilly periodically retrieves data from one or more RS-232 or analog instruments as well as onboard phone sensors (e.g. GPS, accelerometer, compass). The app then telemeters the retrieved data to shore via the cell phone network, WiFi or a satellite modem. Such a data logger could have several applications including low-cost moorings, drifters, or pier-mounted deployments.
\\

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

!DrifterSchematic.png|width=814,height=628!

The Data logger app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app is written in Java, and source code is currently archived at http://bitbucket.org as a "private" repository. We plan to distribute the code as open source in the near future.


The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board. The phone sends telemetry to shore as 41-byte messages through the [SPOT Connect|http://www.findmespot.com/en/index.php?cid=116] satellite modem, using the Bluetooth protocol described [here|http://www.sparkfun.com/tutorials/340].

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android data logger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;
\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086951</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119715</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.
\\

The Chavez lab has developed a robust low cost drifter that has been used repeatedly by our lab, CANON, Autonomy and several other MBARI projects. The drifter is based on a SPOT tracker and total hardware cost is about $250. We propose to exploit the rapid development of commercial low-cost mobile computing and sensor platforms by taking a prototype instrument data logger (developed by O'Reilly and Risi) that runs on an Android device (e.g. phone or tablet) and deploying it as a test on the low cost drifter. The Android logger application developed by O'Reilly periodically retrieves data from one or more RS-232 or analog instruments as well as onboard phone sensors (e.g. GPS, accelerometer, compass). The app then telemeters the retrieved data to shore via the cell phone network, WiFi or a satellite modem. Such a data logger could have several applications including low-cost moorings, drifters, or pier-mounted deployments.
\\

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

!DrifterSchematic.png|width=814,height=628!

The Data logger app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board. The phone sends telemetry to shore as 41-byte messages through the [SPOT Connect|http://www.findmespot.com/en/index.php?cid=116] satellite modem, using the Bluetooth protocol described [here|http://www.sparkfun.com/tutorials/340].

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android data logger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;
\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086950</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119718</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.
\\

The Chavez lab has developed a robust low cost drifter that has been used repeatedly by our lab, CANON, Autonomy and several other MBARI projects. The drifter is based on a SPOT tracker and total hardware cost is about $250. We [propose|^901112_MBTS_2013.pdf] to exploit the rapid development of commercial low-cost mobile computing and sensor platforms by taking a prototype instrument data logger (developed by O'Reilly and Risi) that runs on an Android device (e.g. phone or tablet) and deploying it as a test on the low cost drifter. The Android logger application developed by O'Reilly periodically retrieves data from one or more RS-232 or analog instruments as well as onboard phone sensors (e.g. GPS, accelerometer, compass). The app then telemeters the retrieved data to shore via the cell phone network, WiFi or a satellite modem. Such a data logger could have several applications including low-cost moorings, drifters, or pier-mounted deployments.
\\

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

!DrifterSchematic.png|width=814,height=628!

The Data logger app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app is written in Java, and source code is currently archived at [http://bitbucket.org] as a "private" repository. We plan to distribute the code as open source in the near future.

The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board. The phone sends telemetry to shore as 41-byte messages through the [SPOT Connect|http://www.findmespot.com/en/index.php?cid=116] satellite modem, using the Bluetooth protocol described [here|http://www.sparkfun.com/tutorials/340].

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android data logger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;
\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086953</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">23199890</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger project.
\\

The Chavez lab has developed a robust low cost "Stella" drifter that has been used repeatedly by our lab, CANON, Autonomy and several other MBARI projects. The drifter is based on a SPOT tracker and total hardware cost is about $250. We propose to exploit the rapid development of commercial low-cost mobile computing and sensor platforms by taking a prototype instrument data logger (developed by O'Reilly and Risi) that runs on an Android device (e.g. phone or tablet) and deploying it as a test on the low cost Stella drifter. The Android logger application known as "Drifter" was developed by O'Reilly; it periodically retrieves data from one or more RS-232 or analog instruments as well as onboard phone sensors (e.g. GPS, accelerometer, compass). The app then telemeters the retrieved data to shore via the cell phone network, WiFi or a satellite modem. Such a data logger could have several applications including low-cost moorings, drifters, or pier-mounted deployments.

The Drifter app source code and associated files are attached to this page as a compressed '.tar' file. E.g. the code for Drifter version 1.61 is attached to this page as Drifter-1_61.tar.gz.&nbsp; Download the file into an Eclipse workspace, then decompress and un-tar it, e.g. on a Linux system:
{noformat}
% tar  zxf Drifter-1_61.tar.gz
{noformat}
&nbsp;Now run Eclipse - configured with the [Android Development Tools plug-in|http://developer.android.com/tools/sdk/eclipse-adt.html] \- and import the files as an Eclipse project.
\\

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

!DrifterSchematic.png|width=814,height=628!

The Drifter app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app is written in Java, and source code is currently archived at [http://bitbucket.org] as a "private" repository. We plan to distribute the code as open source in the near future.


The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the 'Wakey' power controller through an RS232 port on the IOIO board. The phone sends telemetry to shore as 41-byte messages through the [SPOT Connect|http://www.findmespot.com/en/index.php?cid=116] satellite modem, using the Bluetooth protocol described [here|http://www.sparkfun.com/tutorials/340].

The 'Wakey' power controller board developed by McGill provides power to  the IOIO board, phone, and SPOT Connect satellite modem.&nbsp;


Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not have a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android data logger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;

h2. Telemetry via SPOT Connect

A SPOT message can be no longer than 41 bytes (not including the transmit time and latitude/longitude header that the modem prepends). Thus the data logger&nbsp; app generates very terse summaries of the instrument, sensor and diagnostic for transmisson via SPOT. The app generates SPOT messages consisting of fields separated by a semicolon,&nbsp; with the following format:
{noformat}
instrument_record:orientation:gps:compass:phone_batt_level:wakey_batt_voltage
{noformat}
instrument_record - data record from attached serial or analog instrument. The format of the instrument_record depends on the instrument type.

orientation - data record from phones orientation sensors consisting of roll, pitch, and yaw

gps - data record from phone's GPS

compass - magnetic azimuth from phone's sensor

phone_batt_level - remaining phone battery, in percent

wakey_batt_voltage - "Wakey" battery voltage
\\
\\
Note that some fields may be zero-length. E.g. if the user does not select orientation sensor to be logged, then the SPOT message orientation sensor field (second field) will be zero length. E.g. following is an example SPOT message:
{noformat}
tmp 2923,pH 1352:::264.0:98:11.9
{noformat}
In the above case, the app had been configured to log data from an attached analog pH sensor (which outputs temperature and pH), and to log phone compass data (no other sensors were selected).
\\

[Software tasks|Tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">23167127</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119719</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.
\\

The Chavez lab has developed a robust low cost drifter that has been used repeatedly by our lab, CANON, Autonomy and several other MBARI projects. The drifter is based on a SPOT tracker and total hardware cost is about $250. We [propose|901112_MBTS_2013.pdf] to exploit the rapid development of commercial low-cost mobile computing and sensor platforms by taking a prototype instrument data logger (developed by O'Reilly and Risi) that runs on an Android device (e.g. phone or tablet) and deploying it as a test on the low cost drifter. The Android logger application developed by O'Reilly periodically retrieves data from one or more RS-232 or analog instruments as well as onboard phone sensors (e.g. GPS, accelerometer, compass). The app then telemeters the retrieved data to shore via the cell phone network, WiFi or a satellite modem. Such a data logger could have several applications including low-cost moorings, drifters, or pier-mounted deployments.
\\

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

!DrifterSchematic.png|width=814,height=628!

The Data logger app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app is written in Java, and source code is currently archived at [http://bitbucket.org] as a "private" repository. We plan to distribute the code as open source in the near future.

The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board. The phone sends telemetry to shore as 41-byte messages through the [SPOT Connect|http://www.findmespot.com/en/index.php?cid=116] satellite modem, using the Bluetooth protocol described [here|http://www.sparkfun.com/tutorials/340].

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android data logger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;
\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086956</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">23199889</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.
\\

The Chavez lab has developed a robust low cost drifter that has been used repeatedly by our lab, CANON, Autonomy and several other MBARI projects. The drifter is based on a SPOT tracker and total hardware cost is about $250. We propose to exploit the rapid development of commercial low-cost mobile computing and sensor platforms by taking a prototype instrument data logger (developed by O'Reilly and Risi) that runs on an Android device (e.g. phone or tablet) and deploying it as a test on the low cost drifter. The Android logger application known as "Drifter" was developed by O'Reilly; it periodically retrieves data from one or more RS-232 or analog instruments as well as onboard phone sensors (e.g. GPS, accelerometer, compass). The app then telemeters the retrieved data to shore via the cell phone network, WiFi or a satellite modem. Such a data logger could have several applications including low-cost moorings, drifters, or pier-mounted deployments.

The Drifter app source code and associated files are attached to this page as a compressed '.tar' file. E.g. the code for Drifter version 1.61 is attached to this page as Drifter-1_61.tar.gz.&nbsp; Download the file into an Eclipse workspace, then decompress and un-tar it, e.g. on a Linux system:
{noformat}
% tar  zxf Drifter-1_61.tar.gz
{noformat}
&nbsp;Now run Eclipse - configured with the [Android Development Tools plug-in|http://developer.android.com/tools/sdk/eclipse-adt.html] \- and import the files as an Eclipse project.
\\

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

!DrifterSchematic.png|width=814,height=628!

The Drifter app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app is written in Java, and source code is currently archived at [http://bitbucket.org] as a "private" repository. We plan to distribute the code as open source in the near future.

The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board. The phone sends telemetry to shore as 41-byte messages through the [SPOT Connect|http://www.findmespot.com/en/index.php?cid=116] satellite modem, using the Bluetooth protocol described [here|http://www.sparkfun.com/tutorials/340].

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not have a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android data logger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;

h2. Telemetry via SPOT Connect

A SPOT message can be no longer than 41 bytes (not including the transmit time and latitude/longitude header that the modem prepends). Thus the data logger&nbsp; app generates very terse summaries of the instrument, sensor and diagnostic for transmisson via SPOT. The app generates SPOT messages consisting of fields separated by a semicolon,&nbsp; with the following format:
{noformat}
instrument_record:orientation:gps:compass:phone_batt_level:wakey_batt_voltage
{noformat}
instrument_record - data record from attached serial or analog instrument. The format of the instrument_record depends on the instrument type.

orientation - data record from phones orientation sensors consisting of roll, pitch, and yaw

gps - data record from phone's GPS

compass - magnetic azimuth from phone's sensor

phone_batt_level - remaining phone battery, in percent

wakey_batt_voltage - "Wakey" battery voltage
\\
\\
Note that some fields may be zero-length. E.g. if the user does not select orientation sensor to be logged, then the SPOT message orientation sensor field (second field) will be zero length. E.g. following is an example SPOT message:
{noformat}
tmp 2923,pH 1352:::264.0:98:11.9
{noformat}
In the above case, the app had been configured to log data from an attached analog pH sensor (which outputs temperature and pH), and to log phone compass data (no other sensors were selected).
\\

[Software tasks|Tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">23167126</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119722</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.
\\

The Chavez lab has developed a robust low cost drifter that has been used repeatedly by our lab, CANON, Autonomy and several other MBARI projects. The drifter is based on a SPOT tracker and total hardware cost is about $250. We propose to exploit the rapid development of commercial low-cost mobile computing and sensor platforms by taking a prototype instrument data logger (developed by O'Reilly and Risi) that runs on an Android device (e.g. phone or tablet) and deploying it as a test on the low cost drifter. The Android logger application developed by O'Reilly periodically retrieves data from one or more RS-232 or analog instruments as well as onboard phone sensors (e.g. GPS, accelerometer, compass). The app then telemeters the retrieved data to shore via the cell phone network, WiFi or a satellite modem. Such a data logger could have several applications including low-cost moorings, drifters, or pier-mounted deployments.
\\

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

!DrifterSchematic.png|width=814,height=628!

The Data logger app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app is written in Java, and source code is currently archived at [http://bitbucket.org] as a "private" repository. We plan to distribute the code as open source in the near future.

The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board. The phone sends telemetry to shore as 41-byte messages through the [SPOT Connect|http://www.findmespot.com/en/index.php?cid=116] satellite modem, using the Bluetooth protocol described [here|http://www.sparkfun.com/tutorials/340].

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android data logger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;
\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086959</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119998</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.
\\

The Chavez lab has developed a robust low cost drifter that has been used repeatedly by our lab, CANON, Autonomy and several other MBARI projects. The drifter is based on a SPOT tracker and total hardware cost is about $250. We propose to exploit the rapid development of commercial low-cost mobile computing and sensor platforms by taking a prototype instrument data logger (developed by O'Reilly and Risi) that runs on an Android device (e.g. phone or tablet) and deploying it as a test on the low cost drifter. The Android logger application developed by O'Reilly periodically retrieves data from one or more RS-232 or analog instruments as well as onboard phone sensors (e.g. GPS, accelerometer, compass). The app then telemeters the retrieved data to shore via the cell phone network, WiFi or a satellite modem. Such a data logger could have several applications including low-cost moorings, drifters, or pier-mounted deployments.
\\

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

!DrifterSchematic.png|width=814,height=628!

The Data logger app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app is written in Java, and source code is currently archived at [http://bitbucket.org] as a "private" repository. We plan to distribute the code as open source in the near future.

The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board. The phone sends telemetry to shore as 41-byte messages through the [SPOT Connect|http://www.findmespot.com/en/index.php?cid=116] satellite modem, using the Bluetooth protocol described [here|http://www.sparkfun.com/tutorials/340].

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not have a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android data logger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;
\\

[Software tasks|Tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20087240</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119996</id>
<property name="body"><![CDATA[+Outstanding tasks+

2. Data log format

3. Log science data

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

17. If configuration requires IOIO but it is not physically connected, 'Refresh' button never gets reenabled.

18. Need to ensure that Wakey is awake for first sample, to properly synchronize app sampling schedule and Wakey sleep schedule.

19. Implement compass acquisition

20. Design/implement succinct SPOT message format. Each message can probably include both science and engineering data&nbsp;

21. Sample schedule does not run when no telemetry channel selected (bug)

22. App and wiring on amplifier board do not agree on analog pin number. Compared app analog readout to IOIODiagnostic app (from market); IOIODiagnostic shows expected voltages on pins, so datalogger must be improperly reading analog channels.

23. IOIO seems to get some current from phone; red IOIO LED glows faint red when connected only to phone.

24. Phone power sometimes runs out in non-test conditions - not clear why

25. Consider occasional programmatic reboot of phone to improve reliability - this requires 'rooting' the phone.\\

+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state

12. Check into version control
\\
6. If SPOT selected, check that Bluetooth is enabled before starting run

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run
11. Enable log-only run, i.e. no telemetry specified

8. Implement Wakey control, Wakey test
\\

7. If GPS selected, check that GPS enabled before starting run

14. Log debug/info/error messages to a file.. File would be accessed after recovery.

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20087238</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20120002</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.
\\

The Chavez lab has developed a robust low cost drifter that has been used repeatedly by our lab, CANON, Autonomy and several other MBARI projects. The drifter is based on a SPOT tracker and total hardware cost is about $250. We propose to exploit the rapid development of commercial low-cost mobile computing and sensor platforms by taking a prototype instrument data logger (developed by O'Reilly and Risi) that runs on an Android device (e.g. phone or tablet) and deploying it as a test on the low cost drifter. The Android logger application developed by O'Reilly periodically retrieves data from one or more RS-232 or analog instruments as well as onboard phone sensors (e.g. GPS, accelerometer, compass). The app then telemeters the retrieved data to shore via the cell phone network, WiFi or a satellite modem. Such a data logger could have several applications including low-cost moorings, drifters, or pier-mounted deployments.
\\

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

!DrifterSchematic.png|width=814,height=628!

The data logger app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app is written in Java, and source code is currently archived at [http://bitbucket.org] as a "private" repository. We plan to distribute the code as open source in the near future.

The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board. The phone sends telemetry to shore as 41-byte messages through the [SPOT Connect|http://www.findmespot.com/en/index.php?cid=116] satellite modem, using the Bluetooth protocol described [here|http://www.sparkfun.com/tutorials/340].

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not have a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android data logger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;

h2. Telemetry via SPOT Connect

A SPOT message can be no longer than 41 bytes (not including the transmit time and latitude/longitude header that the modem prepends). Thus the data logger&nbsp; app generates very terse summaries of the instrument, sensor and diagnostic for transmisson via SPOT.
{noformat}
instrument_record:orientation:gps:compass:phone_batt_level:wakey_batt_voltage
{noformat}\\

[Software tasks|Tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20087244</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20120000</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.
\\

The Chavez lab has developed a robust low cost drifter that has been used repeatedly by our lab, CANON, Autonomy and several other MBARI projects. The drifter is based on a SPOT tracker and total hardware cost is about $250. We propose to exploit the rapid development of commercial low-cost mobile computing and sensor platforms by taking a prototype instrument data logger (developed by O'Reilly and Risi) that runs on an Android device (e.g. phone or tablet) and deploying it as a test on the low cost drifter. The Android logger application developed by O'Reilly periodically retrieves data from one or more RS-232 or analog instruments as well as onboard phone sensors (e.g. GPS, accelerometer, compass). The app then telemeters the retrieved data to shore via the cell phone network, WiFi or a satellite modem. Such a data logger could have several applications including low-cost moorings, drifters, or pier-mounted deployments.
\\

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

!DrifterSchematic.png|width=814,height=628!

The data logger app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app is written in Java, and source code is currently archived at [http://bitbucket.org] as a "private" repository. We plan to distribute the code as open source in the near future.

The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board. The phone sends telemetry to shore as 41-byte messages through the [SPOT Connect|http://www.findmespot.com/en/index.php?cid=116] satellite modem, using the Bluetooth protocol described [here|http://www.sparkfun.com/tutorials/340].

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not have a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android data logger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;

h2. Telemetry via SPOT Connect

A SPOT message can be no longer than 41 bytes (not including the transmit time and latitude/longitude header that the modem prepends). Thus the data logger&nbsp; app generates very terse summaries of the instrument, sensor and diagnostic for transmisson via SPOT. \\

[Software tasks|Tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20087242</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004799</id>
<property name="body"><![CDATA[+Outstanding tasks+
15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

17. If configuration requires IOIO but it is not physically connected, 'Refresh' button never gets reenabled.

18. Need to ensure that Wakey is awake for first sample, to properly synchronize app sampling schedule and Wakey sleep schedule.

23. IOIO seems to get some current from phone; red IOIO LED glows faint red when connected only to phone.

24. Phone power sometimes runs out in non-test conditions - not clear why. WiFi?

26. Configure option to start server at boot time, not just on auto-reboot. ESPECIALLY IMPORTANT IN CASE OF SPONTANEOUS REBOOT, WHICH HAS BEEN OBSERVED

27. check the relative drift of the Android phone and Wakey clocks before we deploy.

28. DrifterService should assert 20-minute sleep onset delay for Wakey comm port, since user may inadvertently leave some test value instead.


+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state

12. Check into version control
\\
6. If SPOT selected, check that Bluetooth is enabled before starting run

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run
11. Enable log-only run, i.e. no telemetry specified

8. Implement Wakey control, Wakey test
\\

7. If GPS selected, check that GPS enabled before starting run

14. Log debug/info/error messages to a file.. File would be accessed after recovery.

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)
\\

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

19. Implement compass acquisition

20. Design/implement succinct SPOT message format. Each message can probably include both science and engineering data

21. Sample schedule does not run when no telemetry channel selected (bug)

22. App and wiring on amplifier board do not agree on analog pin number.  Compared app analog readout to IOIODiagnostic app (from market);  IOIODiagnostic shows expected voltages on pins, so datalogger must be  improperly reading analog channels.

25. Consider occasional programmatic reboot of phone to improve reliability - this requires 'rooting' the phone.

2. Data log format

3. Log science data]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20972036</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21397855</id>
<property name="body"><![CDATA[May 11 - May 25 (15 days)

\\  !WakeyBattery.jpg!
!phoneBatt.jpg!
&nbsp;
May 24 - June 10 (17 days)

The last SPOT message was received on June 10. Inspection of the hardware revealed a broken corroded wire leading to the SPOT, as well as corrosion on a Wakey connector. Note that no effort had been made to waterproof the SPOT housing or the partly-latched Pelican case that housed the Wakey board.
\\
\\ !WakeyBattery-may24.jpg!\\ !PhoneBattery-may24.jpg!]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365104</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119732</id>
<property name="body"><![CDATA[+Outstanding tasks+

2. Data log format

3. Log science data

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

17. If configuration requires IOIO but it is not physically connected, 'Refresh' button never gets reenabled.

18. Need to ensure that Wakey is awake for first sample, to properly synchronize app sampling schedule and Wakey sleep schedule.

19. Implement compass acquisition

20. Design/implement succinct SPOT message format. Each message can probably include both science and engineering data&nbsp;


+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state

12. Check into version control
\\
6. If SPOT selected, check that Bluetooth is enabled before starting run

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run
11. Enable log-only run, i.e. no telemetry specified

8. Implement Wakey control, Wakey test
\\

7. If GPS selected, check that GPS enabled before starting run

14. Log debug/info/error messages to a file.. File would be accessed after recovery.

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086969</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21397858</id>
<property name="body"><![CDATA[May 11 - May 25 (15 days)

The system is located on the Building B rear deck, for a clear view of the sky. Most of the gear (phone, IOIO, Wakey, batteries) is inside a Pelican case, with the SPOT modem duct-taped to the outside of the case. The case was latched on one side only to prevent cutting the SPOT power and data wires. The pH sensor is currently NOT attached.

I haven't yet looked at the detailed logs, but see no indication of major errors during this burn-in test so far.

Attached are plots showing Wakey battery voltage and phone battery level.


For this test, the phone is configured to send SPOT messages as well as diagnostic messages via wifi. At sea we will of course not incur the wifi power usage.

Got 495 SPOT messages, out of 725 total samples; SPOT success rate = 68.3%


\\  !WakeyBattery.jpg!
!phoneBatt.jpg!
&nbsp;
May 24 - June 9 (16 days)

This test was also performed on Building B rear deck, physically configured identically to the May 11 test. But in this case, WiFi messaging was DISABLED - compare the following plots to see much lower power usage compared to the May 11 test. Note that the charge provided to the phone by the D-cell battery pack every thirty minutes was sufficient to keep the phone battery level at about 96 percent for the duration of the test.&nbsp;

&nbsp;Got 495 SPOT messages, out of 852 total samples; SPOT success rate = 58%

The last SPOT message was received on June 10. Inspection of the hardware revealed a broken corroded wire leading to the SPOT, as well as corrosion on a Wakey connector. Note that no effort had been made to waterproof the SPOT housing or the partly-latched Pelican case that housed the Wakey board.
\\
\\  !WakeyBattery-may24.jpg!\\  !PhoneBattery-may24.jpg!]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365107</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119733</id>
<property name="body"><![CDATA[+Outstanding tasks+

2. Data log format

3. Log science data

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

17. If configuration requires IOIO but it is not physically connected, 'Refresh' button never gets reenabled.

18. Need to ensure that Wakey is awake for first sample, to properly synchronize app sampling schedule and Wakey sleep schedule.

19. Implement compass acquisition

20. Design/implement succinct SPOT message format. Each message can probably include both science and engineering data&nbsp;

21. Sample does not run when no telemetry channel selected (bug)\\

+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state

12. Check into version control
\\
6. If SPOT selected, check that Bluetooth is enabled before starting run

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run
11. Enable log-only run, i.e. no telemetry specified

8. Implement Wakey control, Wakey test
\\

7. If GPS selected, check that GPS enabled before starting run

14. Log debug/info/error messages to a file.. File would be accessed after recovery.

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086970</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21397857</id>
<property name="body"><![CDATA[May 11 - May 25 (15 days)

The system is located on the Building B rear deck, for a clear view of the sky. Most of the gear (phone, IOIO, Wakey, batteries) is inside a Pelican case, with the SPOT modem duct-taped to the outside of the case. The case was latched on one side only to prevent cutting the SPOT power and data wires. The pH sensor is currently NOT attached.

I haven't yet looked at the detailed logs, but see no indication of major errors during this burn-in test so far.

Attached are plots showing Wakey battery voltage and phone battery level. As you can see from the plot, I recharged the phone a few times before starting the extended test on May 11.

For this test, the phone is configured to send SPOT messages as well as diagnostic messages via wifi. At sea we will of course not incur the wifi power usage.

\\  !WakeyBattery.jpg!
!phoneBatt.jpg!
&nbsp;
May 24 - June 10 (17 days)

This test was also performed on Building B rear deck, physically configured identically to the May 11 test. But in this case, WiFi messaging was DISABLED - compare the following plots to see much lower power usage compared to the May 11 test. Note that the charge provided to the phone by the D-cell battery pack every thirty minutes was sufficient to keep the phone battery level at about 96 percent for the duration of the test.&nbsp;


The last SPOT message was received on June 10. Inspection of the hardware revealed a broken corroded wire leading to the SPOT, as well as corrosion on a Wakey connector. Note that no effort had been made to waterproof the SPOT housing or the partly-latched Pelican case that housed the Wakey board.
\\
\\  !WakeyBattery-may24.jpg!\\  !PhoneBattery-may24.jpg!]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365106</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21397851</id>
<property name="body"><![CDATA[May 11 - May 25\\ !WakeyBattery.jpg!
!phoneBatt.jpg!
&nbsp;
May 24 - June 10 (17 days)

The last SPOT message was received on June 10. Inspection of the hardware revealed a broken corroded wire leading to the SPOT, as well as corrosion on a Wakey connector. Note that no effort had been made to waterproof the SPOT housing or the partly-latched Pelican case that housed the Wakey board.
\\
\\
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365100</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21397853</id>
<property name="body"><![CDATA[May 11 - May 25 (15 days)

\\  !WakeyBattery.jpg!
!phoneBatt.jpg!
&nbsp;
May 24 - June 10 (17 days)

The last SPOT message was received on June 10. Inspection of the hardware revealed a broken corroded wire leading to the SPOT, as well as corrosion on a Wakey connector. Note that no effort had been made to waterproof the SPOT housing or the partly-latched Pelican case that housed the Wakey board.
\\
\\
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365102</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">23199893</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger project.
\\

The Chavez lab has developed a robust low cost "Stella" drifter that has been used repeatedly by our lab, CANON, Autonomy and several other MBARI projects. The drifter is based on a SPOT tracker and total hardware cost is about $250. We propose to exploit the rapid development of commercial low-cost mobile computing and sensor platforms by taking a prototype instrument data logger (developed by O'Reilly and Risi) that runs on an Android device (e.g. phone or tablet) and deploying it as a test on the low cost Stella drifter. The Android logger application known as "Drifter" was developed by O'Reilly; it periodically retrieves data from one or more RS-232 or analog instruments as well as onboard phone sensors (e.g. GPS, accelerometer, compass). The app then telemeters the retrieved data to shore via the cell phone network, WiFi or a satellite modem. Such a data logger could have several applications including low-cost moorings, drifters, or pier-mounted deployments.

The Drifter app source code and associated files are attached to this page as a compressed '.tar' file. E.g. the code for Drifter version 1.61 is attached to this page as Drifter-1_61.tar.gz.&nbsp; Download the file into an Eclipse workspace, then decompress and un-tar it, e.g. on a Linux system:
{noformat}
% tar  zxf Drifter-1_61.tar.gz
{noformat}
&nbsp;Now run Eclipse - configured with the [Android Development Tools plug-in|http://developer.android.com/tools/sdk/eclipse-adt.html] \- and import the files as an Eclipse project.
\\

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

!DrifterSchematic.png|width=814,height=628!

The Drifter app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app is written in Java, and source code is currently archived at [http://bitbucket.org] as a "private" repository. We plan to distribute the code as open source in the near future.

The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the 'Wakey' power controller through an RS232 port on the IOIO board. The phone sends telemetry to shore as 41-byte messages through the [SPOT Connect|http://www.findmespot.com/en/index.php?cid=116] satellite modem, using the Bluetooth protocol described [here|http://www.sparkfun.com/tutorials/340].

The 'Wakey' power controller board developed by McGill provides power to  the IOIO board, phone, and SPOT Connect satellite modem.&nbsp;

Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not have a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android data logger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;

h2. Telemetry via SPOT Connect

A SPOT message can be no longer than 41 bytes (not including the transmit time and latitude/longitude header that the modem prepends). Thus the data logger&nbsp; app generates very terse summaries of the instrument, sensor and diagnostic for transmisson via SPOT. The app generates SPOT messages consisting of fields separated by a semicolon,&nbsp; with the following format:
{noformat}
instrument_record:orientation:gps:compass:phone_batt_level:wakey_batt_voltage
{noformat}
instrument_record - data record from attached serial or analog instrument. The format of the instrument_record depends on the instrument type.

orientation - data record from phones orientation sensors consisting of roll, pitch, and yaw

gps - data record from phone's GPS

compass - magnetic azimuth from phone's sensor

phone_batt_level - remaining phone battery, in percent

wakey_batt_voltage - "Wakey" battery voltage
\\
\\
Note that some fields may be zero-length. E.g. if the user does not select orientation sensor to be logged, then the SPOT message orientation sensor field (second field) will be zero length. E.g. following is an example SPOT message:
{noformat}
tmp 2923,pH 1352:::264.0:98:11.9
{noformat}
In the above case, the app had been configured to log data from an attached analog pH sensor (which outputs temperature and pH), and to log phone compass data (no other sensors were selected).
\\

[Software tasks|Tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">23167130</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004794</id>
<property name="body"><![CDATA[+Outstanding tasks+
15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

17. If configuration requires IOIO but it is not physically connected, 'Refresh' button never gets reenabled.

18. Need to ensure that Wakey is awake for first sample, to properly synchronize app sampling schedule and Wakey sleep schedule.

23. IOIO seems to get some current from phone; red IOIO LED glows faint red when connected only to phone.

24. Phone power sometimes runs out in non-test conditions - not clear why. WiFi?

26. Configure option to start server at boot time, not just on auto-reboot. ESPECIALLY IMPORTANT IN CASE OF SPONTANEOUS REBOOT, WHICH HAS BEEN OBSERVED

27. check the relative drift of the Android phone and Wakey clocks before we deploy.


+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state

12. Check into version control
\\
6. If SPOT selected, check that Bluetooth is enabled before starting run

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run
11. Enable log-only run, i.e. no telemetry specified

8. Implement Wakey control, Wakey test
\\

7. If GPS selected, check that GPS enabled before starting run

14. Log debug/info/error messages to a file.. File would be accessed after recovery.

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)
\\

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

19. Implement compass acquisition

20. Design/implement succinct SPOT message format. Each message can probably include both science and engineering data

21. Sample schedule does not run when no telemetry channel selected (bug)

22. App and wiring on amplifier board do not agree on analog pin number.  Compared app analog readout to IOIODiagnostic app (from market);  IOIODiagnostic shows expected voltages on pins, so datalogger must be  improperly reading analog channels.

25. Consider occasional programmatic reboot of phone to improve reliability - this requires 'rooting' the phone.

2. Data log format

3. Log science data]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20972031</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21397850</id>
<property name="body"><![CDATA[\\

May 24 - June 10 (17 days)

The last SPOT message was received on June 10. Inspection of the hardware revealed a broken corroded wire leading to the SPOT, as well as corrosion on a Wakey connector. Note that no effort had been made to waterproof the SPOT housing or the partly-latched Pelican case that housed the Wakey board.\\ \\ \\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365099</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21398651</id>
<property name="body"><![CDATA[h4. Preparing a new phone

Associate the phone with a Google user account mbariengineer@gmail.com - see Tom O'Reilly for the password.

If you plan to use the IOIO board, download the I[OIO Hardware Tester app|https://play.google.com/store/apps/details?id=ioio.example.ioiohardwaretester] from Google Play; this app is very useful for trouble-shooting, allows you to verify that the IOIO board is connected to your phone and functional.&nbsp;

If you plan to use the Drifter app's automatic reboot capability, you must first "["root" the phone|AndroidLogger:How to root an Android phone].

If you plan to use a SPOT Connect modem with the app, *you must "pair" the phone with the specific SPOT modem it will connect to*. If you must replace the SPOT for any reason, then you must pair the phone with the new SPOT. See the "Pairing" section of the [SPOT Connect user manual|^USB_Manual_022311-1.pdf].

Eventually we'll put the Drifter app on a server such as Google Play to allow easy over-the-air installation. Until then you should bring the phone to developer O'Reilly, who has the required development tools to install the app on a phone. Before bringing the phone to O'Reilly, you can (1) Enable app installation from non-Google sources: System->Security->Unknown Sources and (2) Enable USB debugging: System->Developer Options->USB debugging\\

h4. Configuration and power

The Android 'Drifter' app can be configured to log various sensors and use various telemetry channels. Many if not most deployment scenarios provide a limited amount of power to run the phone - e.g. external batteries. Unless you are luck enough to have the phone plugged into an AC adapter, consider the following power-saving tips.

Consider powering off the following, depending on your deployment needs:
* WiFi - if you are not using WiFi for telemetry, disable
* Cell radio - if you are not using cell network for telemetry via email or SMS, put phone into 'airplane mode'
* GPS - turn off if you don't need to log GPS
* BlueTooth - turn off unless you are using SPOT Connect for telemetry, or acquiring data from Bluetooth-serial instruments

Also, you should set the screen timeout to the lowest defined value, since the phone will be unattended
most of the time (the phone screen may occasionally turn on, e.g. when charge flows though the USB port).

The Drifter app can use the MBARI "Wakey" board to manage power to attached instruments and modems. If you are using Wakey, then select Configuration->Power Management \-> Use Wakey Controller.
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365946</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21398631</id>
<property name="body"><![CDATA[h4. Preparing a new phone

Associate the phone with a Google user account.

If you plan to use the IOIO board, download the I[OIO Hardware Tester app|https://play.google.com/store/apps/details?id=ioio.example.ioiohardwaretester] from Google Play; this app is very useful for trouble-shooting, allows you to verify that the IOIO board is connected to your phone and functional.&nbsp;

If you plan to use the Drifter app's automatic reboot capability, you must first "["root" the phone|AndroidLogger:How to root an Android phone].

If you plan to use a SPOT Connect modem with the app, you must "pair" the phone with the specific modem it will connect to - see the "Pairing" section of the [SPOT Connect user manual|^USB_Manual_022311-1.pdf].

Eventually we'll put the Drifter app on a server such as Google Play to allow easy over-the-air installation. Until then you should bring the phone to developer O'Reilly, who has the required development tools to install the app on a phone.

h4. Configuration and power

The Android 'Drifter' app can be configured to log various sensors and use various telemetry channels. Many if not most deployment scenarios provide a limited amount of power to run the phone - e.g. external batteries. Unless you are luck enough to have the phone plugged into an AC adapter, consider the following power-saving tips.

Consider powering off the following, depending on your deployment needs:
* WiFi - if you are not using WiFi for telemetry, disable
* Cell radio - if you are not using cell network for telemetry via email or SMS, put phone into 'airplane mode'
* GPS - turn off if you don't need to log GPS
* BlueTooth - turn off unless you are using SPOT Connect for telemetry, or acquiring data from Bluetooth-serial instruments

Also, you should set the screen timeout to the lowest defined value, since the phone will be unattended
most of the time (the phone screen may occasionally turn on, e.g. when charge flows though the USB port).

The Drifter app can use the MBARI "Wakey" board to manage power to attached instruments and modems. If you are using Wakey, then select Configuration->Power Management \-> Use Wakey Controller.
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365926</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21398632</id>
<property name="body"><![CDATA[h4. Preparing a new phone

Associate the phone with a Google user account mbariengineer@gmail.com - see Tom O'Reilly for the password.


If you plan to use the IOIO board, download the I[OIO Hardware Tester app|https://play.google.com/store/apps/details?id=ioio.example.ioiohardwaretester] from Google Play; this app is very useful for trouble-shooting, allows you to verify that the IOIO board is connected to your phone and functional.&nbsp;

If you plan to use the Drifter app's automatic reboot capability, you must first "["root" the phone|AndroidLogger:How to root an Android phone].

If you plan to use a SPOT Connect modem with the app, you must "pair" the phone with the specific modem it will connect to - see the "Pairing" section of the [SPOT Connect user manual|^USB_Manual_022311-1.pdf].

Eventually we'll put the Drifter app on a server such as Google Play to allow easy over-the-air installation. Until then you should bring the phone to developer O'Reilly, who has the required development tools to install the app on a phone.

h4. Configuration and power

The Android 'Drifter' app can be configured to log various sensors and use various telemetry channels. Many if not most deployment scenarios provide a limited amount of power to run the phone - e.g. external batteries. Unless you are luck enough to have the phone plugged into an AC adapter, consider the following power-saving tips.

Consider powering off the following, depending on your deployment needs:
* WiFi - if you are not using WiFi for telemetry, disable
* Cell radio - if you are not using cell network for telemetry via email or SMS, put phone into 'airplane mode'
* GPS - turn off if you don't need to log GPS
* BlueTooth - turn off unless you are using SPOT Connect for telemetry, or acquiring data from Bluetooth-serial instruments

Also, you should set the screen timeout to the lowest defined value, since the phone will be unattended
most of the time (the phone screen may occasionally turn on, e.g. when charge flows though the USB port).

The Drifter app can use the MBARI "Wakey" board to manage power to attached instruments and modems. If you are using Wakey, then select Configuration->Power Management \-> Use Wakey Controller.
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365927</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21398633</id>
<property name="body"><![CDATA[h4. Preparing a new phone

Associate the phone with a Google user account mbariengineer@gmail.com - see Tom O'Reilly for the password.

If you plan to use the IOIO board, download the I[OIO Hardware Tester app|https://play.google.com/store/apps/details?id=ioio.example.ioiohardwaretester] from Google Play; this app is very useful for trouble-shooting, allows you to verify that the IOIO board is connected to your phone and functional.&nbsp;

If you plan to use the Drifter app's automatic reboot capability, you must first "["root" the phone|AndroidLogger:How to root an Android phone].

If you plan to use a SPOT Connect modem with the app, you must *"pair" the phone with the specific modem it will connect to* \- see the "Pairing" section of the [SPOT Connect user manual|^USB_Manual_022311-1.pdf].

Eventually we'll put the Drifter app on a server such as Google Play to allow easy over-the-air installation. Until then you should bring the phone to developer O'Reilly, who has the required development tools to install the app on a phone.

h4. Configuration and power

The Android 'Drifter' app can be configured to log various sensors and use various telemetry channels. Many if not most deployment scenarios provide a limited amount of power to run the phone - e.g. external batteries. Unless you are luck enough to have the phone plugged into an AC adapter, consider the following power-saving tips.

Consider powering off the following, depending on your deployment needs:
* WiFi - if you are not using WiFi for telemetry, disable
* Cell radio - if you are not using cell network for telemetry via email or SMS, put phone into 'airplane mode'
* GPS - turn off if you don't need to log GPS
* BlueTooth - turn off unless you are using SPOT Connect for telemetry, or acquiring data from Bluetooth-serial instruments

Also, you should set the screen timeout to the lowest defined value, since the phone will be unattended
most of the time (the phone screen may occasionally turn on, e.g. when charge flows though the USB port).

The Drifter app can use the MBARI "Wakey" board to manage power to attached instruments and modems. If you are using Wakey, then select Configuration->Power Management \-> Use Wakey Controller.
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365928</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21398634</id>
<property name="body"><![CDATA[h4. Preparing a new phone

Associate the phone with a Google user account mbariengineer@gmail.com - see Tom O'Reilly for the password.

If you plan to use the IOIO board, download the I[OIO Hardware Tester app|https://play.google.com/store/apps/details?id=ioio.example.ioiohardwaretester] from Google Play; this app is very useful for trouble-shooting, allows you to verify that the IOIO board is connected to your phone and functional.&nbsp;

If you plan to use the Drifter app's automatic reboot capability, you must first "["root" the phone|AndroidLogger:How to root an Android phone].

If you plan to use a SPOT Connect modem with the app, you must *"pair" the phone with the specific SPOT modem it will connect to* \- see the "Pairing" section of the [SPOT Connect user manual|^USB_Manual_022311-1.pdf].

Eventually we'll put the Drifter app on a server such as Google Play to allow easy over-the-air installation. Until then you should bring the phone to developer O'Reilly, who has the required development tools to install the app on a phone.

h4. Configuration and power

The Android 'Drifter' app can be configured to log various sensors and use various telemetry channels. Many if not most deployment scenarios provide a limited amount of power to run the phone - e.g. external batteries. Unless you are luck enough to have the phone plugged into an AC adapter, consider the following power-saving tips.

Consider powering off the following, depending on your deployment needs:
* WiFi - if you are not using WiFi for telemetry, disable
* Cell radio - if you are not using cell network for telemetry via email or SMS, put phone into 'airplane mode'
* GPS - turn off if you don't need to log GPS
* BlueTooth - turn off unless you are using SPOT Connect for telemetry, or acquiring data from Bluetooth-serial instruments

Also, you should set the screen timeout to the lowest defined value, since the phone will be unattended
most of the time (the phone screen may occasionally turn on, e.g. when charge flows though the USB port).

The Drifter app can use the MBARI "Wakey" board to manage power to attached instruments and modems. If you are using Wakey, then select Configuration->Power Management \-> Use Wakey Controller.
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365929</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21398627</id>
<property name="body"><![CDATA[h4. Preparing a new phone

Associate the phone the Google user account

If you plan to use the IOIO board, download the I[OIO Hardware Tester app|https://play.google.com/store/apps/details?id=ioio.example.ioiohardwaretester] from Google Play.&nbsp;

If you plan to use the Drifter app's automatic reboot capability, you must first "["root" the phone|AndroidLogger:How to root an Android phone].

If you plan to use a SPOT Connect modem with the app, you must "pair" the phone with the specific modem it will connect to - see the "Pairing" section of the SPOT Connect user manual.

h4.


h4. Configuration and power

The Android 'Drifter' app can be configured to log various sensors and use various telemetry channels. Many if not most deployment scenarios provide a limited amount of power to run the phone - e.g. external batteries. Unless you are luck enough to have the phone plugged into an AC adapter, consider the following power-saving tips.

Consider powering off the following, depending on your deployment needs:
* WiFi - if you are not using WiFi for telemetry, disable
* Cell radio - if you are not using cell network for telemetry via email or SMS, put phone into 'airplane mode'
* GPS - turn off if you don't need to log GPS
* BlueTooth - turn off unless you are using SPOT Connect for telemetry, or acquiring data from Bluetooth-serial instruments

Also, you should set the screen timeout to the lowest defined value, since the phone will be unattended
most of the time (the phone screen may occasionally turn on, e.g. when charge flows though the USB port).

The Drifter app can use the MBARI "Wakey" board to manage power to attached instruments and modems. If you are using Wakey, then select Configuration->Power Management \-> Use Wakey Controller.
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365922</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20120004</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.
\\

The Chavez lab has developed a robust low cost drifter that has been used repeatedly by our lab, CANON, Autonomy and several other MBARI projects. The drifter is based on a SPOT tracker and total hardware cost is about $250. We propose to exploit the rapid development of commercial low-cost mobile computing and sensor platforms by taking a prototype instrument data logger (developed by O'Reilly and Risi) that runs on an Android device (e.g. phone or tablet) and deploying it as a test on the low cost drifter. The Android logger application developed by O'Reilly periodically retrieves data from one or more RS-232 or analog instruments as well as onboard phone sensors (e.g. GPS, accelerometer, compass). The app then telemeters the retrieved data to shore via the cell phone network, WiFi or a satellite modem. Such a data logger could have several applications including low-cost moorings, drifters, or pier-mounted deployments.
\\

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

!DrifterSchematic.png|width=814,height=628!

The data logger app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app is written in Java, and source code is currently archived at [http://bitbucket.org] as a "private" repository. We plan to distribute the code as open source in the near future.

The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board. The phone sends telemetry to shore as 41-byte messages through the [SPOT Connect|http://www.findmespot.com/en/index.php?cid=116] satellite modem, using the Bluetooth protocol described [here|http://www.sparkfun.com/tutorials/340].

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not have a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android data logger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;

h2. Telemetry via SPOT Connect

A SPOT message can be no longer than 41 bytes (not including the transmit time and latitude/longitude header that the modem prepends). Thus the data logger&nbsp; app generates very terse summaries of the instrument, sensor and diagnostic for transmisson via SPOT. The app generates SPOT messages consisting of fields separated by a semicolon,&nbsp; with the following format:

{noformat}
instrument_record:orientation:gps:compass:phone_batt_level:wakey_batt_voltage
{noformat}
instrument_record - data record from attached serial or analog instrument. The format of the instrument_record depends on the instrument type.


orientation - data record from phones orientation sensors consisting of roll, pitch, and yaw


gps - data record from phone's GPS


compass - magnetic azimuth from phone's sensor


phone_batt_level - remaining phone battery, in percent


wakey_batt_voltage - "Wakey" battery voltage
\\ \\
\\

[Software tasks|Tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20087246</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21398628</id>
<property name="body"><![CDATA[h4. Preparing a new phone

Associate the phone the Google user account

If you plan to use the IOIO board, download the I[OIO Hardware Tester app|https://play.google.com/store/apps/details?id=ioio.example.ioiohardwaretester] from Google Play.&nbsp;

If you plan to use the Drifter app's automatic reboot capability, you must first "["root" the phone|AndroidLogger:How to root an Android phone].

If you plan to use a SPOT Connect modem with the app, you must "pair" the phone with the specific modem it will connect to - see the "Pairing" section of the [SPOT Connect user manual|^USB_Manual_022311-1.pdf].

h4.


h4. Configuration and power

The Android 'Drifter' app can be configured to log various sensors and use various telemetry channels. Many if not most deployment scenarios provide a limited amount of power to run the phone - e.g. external batteries. Unless you are luck enough to have the phone plugged into an AC adapter, consider the following power-saving tips.

Consider powering off the following, depending on your deployment needs:
* WiFi - if you are not using WiFi for telemetry, disable
* Cell radio - if you are not using cell network for telemetry via email or SMS, put phone into 'airplane mode'
* GPS - turn off if you don't need to log GPS
* BlueTooth - turn off unless you are using SPOT Connect for telemetry, or acquiring data from Bluetooth-serial instruments

Also, you should set the screen timeout to the lowest defined value, since the phone will be unattended
most of the time (the phone screen may occasionally turn on, e.g. when charge flows though the USB port).

The Drifter app can use the MBARI "Wakey" board to manage power to attached instruments and modems. If you are using Wakey, then select Configuration->Power Management \-> Use Wakey Controller.
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365923</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20120006</id>
<property name="body"><![CDATA[+Outstanding tasks+

2. Data log format

3. Log science data

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

17. If configuration requires IOIO but it is not physically connected, 'Refresh' button never gets reenabled.

18. Need to ensure that Wakey is awake for first sample, to properly synchronize app sampling schedule and Wakey sleep schedule.

19. Implement compass acquisition

20. Design/implement succinct SPOT message format. Each message can probably include both science and engineering data&nbsp;

21. Sample schedule does not run when no telemetry channel selected (bug)

22. App and wiring on amplifier board do not agree on analog pin number. Compared app analog readout to IOIODiagnostic app (from market); IOIODiagnostic shows expected voltages on pins, so datalogger must be improperly reading analog channels.

23. IOIO seems to get some current from phone; red IOIO LED glows faint red when connected only to phone.

24. Phone power sometimes runs out in non-test conditions - not clear why

25. Consider occasional programmatic reboot of phone to improve reliability - this requires 'rooting' the phone.

26. Configure option to start server at boot time


+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state

12. Check into version control
\\
6. If SPOT selected, check that Bluetooth is enabled before starting run

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run
11. Enable log-only run, i.e. no telemetry specified

8. Implement Wakey control, Wakey test
\\

7. If GPS selected, check that GPS enabled before starting run

14. Log debug/info/error messages to a file.. File would be accessed after recovery.

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20087248</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21398630</id>
<property name="body"><![CDATA[h4. Preparing a new phone

Associate the phone the Google user account

If you plan to use the IOIO board, download the I[OIO Hardware Tester app|https://play.google.com/store/apps/details?id=ioio.example.ioiohardwaretester] from Google Play; this app is very useful for trouble-shooting, allows you to verify that the IOIO board is connected to your phone and functional.&nbsp;

If you plan to use the Drifter app's automatic reboot capability, you must first "["root" the phone|AndroidLogger:How to root an Android phone].

If you plan to use a SPOT Connect modem with the app, you must "pair" the phone with the specific modem it will connect to - see the "Pairing" section of the [SPOT Connect user manual|^USB_Manual_022311-1.pdf].

h4.


h4. Configuration and power

The Android 'Drifter' app can be configured to log various sensors and use various telemetry channels. Many if not most deployment scenarios provide a limited amount of power to run the phone - e.g. external batteries. Unless you are luck enough to have the phone plugged into an AC adapter, consider the following power-saving tips.

Consider powering off the following, depending on your deployment needs:
* WiFi - if you are not using WiFi for telemetry, disable
* Cell radio - if you are not using cell network for telemetry via email or SMS, put phone into 'airplane mode'
* GPS - turn off if you don't need to log GPS
* BlueTooth - turn off unless you are using SPOT Connect for telemetry, or acquiring data from Bluetooth-serial instruments

Also, you should set the screen timeout to the lowest defined value, since the phone will be unattended
most of the time (the phone screen may occasionally turn on, e.g. when charge flows though the USB port).

The Drifter app can use the MBARI "Wakey" board to manage power to attached instruments and modems. If you are using Wakey, then select Configuration->Power Management \-> Use Wakey Controller.
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365925</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21398639</id>
<property name="body"><![CDATA[h4. Preparing a new phone

Associate the phone with a Google user account mbariengineer@gmail.com - see Tom O'Reilly for the password.

If you plan to use the IOIO board, download the I[OIO Hardware Tester app|https://play.google.com/store/apps/details?id=ioio.example.ioiohardwaretester] from Google Play; this app is very useful for trouble-shooting, allows you to verify that the IOIO board is connected to your phone and functional.&nbsp;

If you plan to use the Drifter app's automatic reboot capability, you must first "["root" the phone|AndroidLogger:How to root an Android phone].

If you plan to use a SPOT Connect modem with the app, *you must "pair" the phone with the specific SPOT modem it will connect to*. If you must replace the SPOT for any reason, then you must pair the phone with the new SPOT. See the "Pairing" section of the [SPOT Connect user manual|^USB_Manual_022311-1.pdf].

Eventually we'll put the Drifter app on a server such as Google Play to allow easy over-the-air installation. Until then you should bring the phone to developer O'Reilly, who has the required development tools to install the app on a phone.

h4. Configuration and power

The Android 'Drifter' app can be configured to log various sensors and use various telemetry channels. Many if not most deployment scenarios provide a limited amount of power to run the phone - e.g. external batteries. Unless you are luck enough to have the phone plugged into an AC adapter, consider the following power-saving tips.

Consider powering off the following, depending on your deployment needs:
* WiFi - if you are not using WiFi for telemetry, disable
* Cell radio - if you are not using cell network for telemetry via email or SMS, put phone into 'airplane mode'
* GPS - turn off if you don't need to log GPS
* BlueTooth - turn off unless you are using SPOT Connect for telemetry, or acquiring data from Bluetooth-serial instruments

Also, you should set the screen timeout to the lowest defined value, since the phone will be unattended
most of the time (the phone screen may occasionally turn on, e.g. when charge flows though the USB port).

The Drifter app can use the MBARI "Wakey" board to manage power to attached instruments and modems. If you are using Wakey, then select Configuration->Power Management \-> Use Wakey Controller.
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365934</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21398635</id>
<property name="body"><![CDATA[h4. Preparing a new phone

Associate the phone with a Google user account mbariengineer@gmail.com - see Tom O'Reilly for the password.

If you plan to use the IOIO board, download the I[OIO Hardware Tester app|https://play.google.com/store/apps/details?id=ioio.example.ioiohardwaretester] from Google Play; this app is very useful for trouble-shooting, allows you to verify that the IOIO board is connected to your phone and functional.&nbsp;

If you plan to use the Drifter app's automatic reboot capability, you must first "["root" the phone|AndroidLogger:How to root an Android phone].

If you plan to use a SPOT Connect modem with the app, you must *"pair" the phone with the specific SPOT modem it will connect to*. If you must replace the SPOT for any reason, then you must pair the phone with the new SPOT. See the "Pairing" section of the [SPOT Connect user manual|^USB_Manual_022311-1.pdf].

Eventually we'll put the Drifter app on a server such as Google Play to allow easy over-the-air installation. Until then you should bring the phone to developer O'Reilly, who has the required development tools to install the app on a phone.

h4. Configuration and power

The Android 'Drifter' app can be configured to log various sensors and use various telemetry channels. Many if not most deployment scenarios provide a limited amount of power to run the phone - e.g. external batteries. Unless you are luck enough to have the phone plugged into an AC adapter, consider the following power-saving tips.

Consider powering off the following, depending on your deployment needs:
* WiFi - if you are not using WiFi for telemetry, disable
* Cell radio - if you are not using cell network for telemetry via email or SMS, put phone into 'airplane mode'
* GPS - turn off if you don't need to log GPS
* BlueTooth - turn off unless you are using SPOT Connect for telemetry, or acquiring data from Bluetooth-serial instruments

Also, you should set the screen timeout to the lowest defined value, since the phone will be unattended
most of the time (the phone screen may occasionally turn on, e.g. when charge flows though the USB port).

The Drifter app can use the MBARI "Wakey" board to manage power to attached instruments and modems. If you are using Wakey, then select Configuration->Power Management \-> Use Wakey Controller.
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365930</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21398617</id>
<property name="body"><![CDATA[h4. Pair phone with SPOT Connect

Before sending messages from a particular phone to a particular SPOT Connect via Bluetooth, you must "pair" the two - see the "Pairing" section of the [SPOT Connect user manual.|^USB_Manual_022311-1.pdf]\\

h4. Configuration and power

The Android 'Drifter' app can be configured to log various sensors and use various telemetry channels. Many if not most deployment scenarios provide a limited amount of power to run the phone - e.g. external batteries. Unless you are luck enough to have the phone plugged into an AC adapter, consider the following power-saving tips.

Consider powering off the following, depending on your deployment needs:
* WiFi - if you are not using WiFi for telemetry, disable
* Cell radio - if you are not using cell network for telemetry via email or SMS, put phone into 'airplane mode'
* GPS - turn off if you don't need to log GPS
* BlueTooth - turn off unless you are using SPOT Connect for telemetry, or acquiring data from Bluetooth-serial instruments

Also, you should set the screen timeout to the lowest defined value, since the phone will be unattended
most of the time (the phone screen may occasionally turn on, e.g. when charge flows though the USB port).

The Drifter app can use the MBARI "Wakey" board to manage power to attached instruments and modems. If you are using Wakey, then select Configuration->Power Management \-> Use Wakey Controller.\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365911</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21398623</id>
<property name="body"><![CDATA[h4. Preparing a new phone

Associate the phone the Google user account

If you plan to use the IOIO board, download the I[OIO Hardware Tester app|https://play.google.com/store/apps/details?id=ioio.example.ioiohardwaretester] from Google Play.&nbsp;


If you plan to use the Drifter app's automatic reboot capability, you must first "["root" the phone|AndroidLogger:How to root an Android phone]: see [How to root an Android phone].
\\

h4. Pair phone with SPOT Connect

Before sending messages from a particular phone to a particular SPOT Connect via Bluetooth, you must "pair" the two - see the "Pairing" section of the [SPOT Connect user manual.|Preparing the phone and configuring the drifter app^USB_Manual_022311-1.pdf]\\

h4. Configuration and power

The Android 'Drifter' app can be configured to log various sensors and use various telemetry channels. Many if not most deployment scenarios provide a limited amount of power to run the phone - e.g. external batteries. Unless you are luck enough to have the phone plugged into an AC adapter, consider the following power-saving tips.

Consider powering off the following, depending on your deployment needs:
* WiFi - if you are not using WiFi for telemetry, disable
* Cell radio - if you are not using cell network for telemetry via email or SMS, put phone into 'airplane mode'
* GPS - turn off if you don't need to log GPS
* BlueTooth - turn off unless you are using SPOT Connect for telemetry, or acquiring data from Bluetooth-serial instruments

Also, you should set the screen timeout to the lowest defined value, since the phone will be unattended
most of the time (the phone screen may occasionally turn on, e.g. when charge flows though the USB port).

The Drifter app can use the MBARI "Wakey" board to manage power to attached instruments and modems. If you are using Wakey, then select Configuration->Power Management \-> Use Wakey Controller.
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365918</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21398621</id>
<property name="body"><![CDATA[h4. Preparing a new phone

If you plan to use the Drifter app's automatic reboot capability, you must first "root" the phone: see [How to root an Android phone].\\

h4. Pair phone with SPOT Connect

Before sending messages from a particular phone to a particular SPOT Connect via Bluetooth, you must "pair" the two - see the "Pairing" section of the [SPOT Connect user manual.|Preparing the phone and configuring the drifter app^USB_Manual_022311-1.pdf]\\

h4. Configuration and power

The Android 'Drifter' app can be configured to log various sensors and use various telemetry channels. Many if not most deployment scenarios provide a limited amount of power to run the phone - e.g. external batteries. Unless you are luck enough to have the phone plugged into an AC adapter, consider the following power-saving tips.

Consider powering off the following, depending on your deployment needs:
* WiFi - if you are not using WiFi for telemetry, disable
* Cell radio - if you are not using cell network for telemetry via email or SMS, put phone into 'airplane mode'
* GPS - turn off if you don't need to log GPS
* BlueTooth - turn off unless you are using SPOT Connect for telemetry, or acquiring data from Bluetooth-serial instruments

Also, you should set the screen timeout to the lowest defined value, since the phone will be unattended
most of the time (the phone screen may occasionally turn on, e.g. when charge flows though the USB port).

The Drifter app can use the MBARI "Wakey" board to manage power to attached instruments and modems. If you are using Wakey, then select Configuration->Power Management \-> Use Wakey Controller.
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365916</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21398619</id>
<property name="body"><![CDATA[h4. Preparing a new phone

If you plan to use the Drifter app's automatic reboot capability, you must first ['root' the phone].\\

h4. Pair phone with SPOT Connect

Before sending messages from a particular phone to a particular SPOT Connect via Bluetooth, you must "pair" the two - see the "Pairing" section of the [SPOT Connect user manual.|Preparing the phone and configuring the drifter app^USB_Manual_022311-1.pdf]\\

h4. Configuration and power

The Android 'Drifter' app can be configured to log various sensors and use various telemetry channels. Many if not most deployment scenarios provide a limited amount of power to run the phone - e.g. external batteries. Unless you are luck enough to have the phone plugged into an AC adapter, consider the following power-saving tips.

Consider powering off the following, depending on your deployment needs:
* WiFi - if you are not using WiFi for telemetry, disable
* Cell radio - if you are not using cell network for telemetry via email or SMS, put phone into 'airplane mode'
* GPS - turn off if you don't need to log GPS
* BlueTooth - turn off unless you are using SPOT Connect for telemetry, or acquiring data from Bluetooth-serial instruments

Also, you should set the screen timeout to the lowest defined value, since the phone will be unattended
most of the time (the phone screen may occasionally turn on, e.g. when charge flows though the USB port).

The Drifter app can use the MBARI "Wakey" board to manage power to attached instruments and modems. If you are using Wakey, then select Configuration->Power Management \-> Use Wakey Controller.
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21365914</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004371</id>
<property name="body"><![CDATA[Connect phone to IOIO board with USB

Plug cable from battery pack to Wakey; verify that SPOT and IOIO power LEDs are now lit
* NOTE: to power-cycle Wakey, *unplug the power cable for at least 30 seconds* before re-plugging

Run IOIO Hardware Tester app, verify comms with IOIO board

If no comms with IOIO, reboot phone
\\

Run Drifter app

Run Diagnostics \-> Wakey test

Run Diagnostics \-> SPOT test

Turn off unneeded phone radios:
* Turn off GPS
* Put phone in 'Airplane mode'
* Enable Bluetooth

&nbsp; ]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971603</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004373</id>
<property name="body"><![CDATA[Connect phone to IOIO board with USB

Plug cable from battery pack to Wakey; verify that SPOT and IOIO power LEDs are now lit
* NOTE: to power-cycle Wakey, *unplug the power cable for at least 30 seconds* before re-plugging

Run "IOIO Hardware Tester" app, verify comms with IOIO board

If no comms with IOIO, reboot phone
\\

Run Drifter app

Run Diagnostics \-> Wakey test

Run Diagnostics \-> SPOT test

Turn off unneeded phone radios:
* Turn off GPS
* Put phone in 'Airplane mode'
* Enable Bluetooth

&nbsp; ]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971605</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004380</id>
<property name="body"><![CDATA[Connect phone to IOIO board with USB

Plug cable from battery pack to Wakey; verify that SPOT and IOIO power LEDs are now lit
* NOTE: to power-cycle Wakey, *unplug the power cable for at least 30 seconds* before re-plugging

Run "IOIO Hardware Tester" app, verify comms with IOIO board

If no comms with IOIO:
* Verify IOIO board has power from Wakey
* Reboot phone

Turn off unneeded phone radios:
* Turn off GPS
* Put phone in 'Airplane mode'
* Enable Bluetooth

Run Drifter app

Run Diagnostics \-> Wakey test (puts Wakey to sleep)


Run Diagnostics \-> SPOT test

Run Manual Refresh\\ \\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971612</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119582</id>
<property name="body"><![CDATA[+Outstanding tasks+

2. Data log format

3. Log science data

4. Log engineering data
Telemeter engineering data; phone battery state, Wakey battery state

6. If SPOT selected, check that Bluetooth is enabled before starting run

7. If GPS selected, check that GPS enabled before starting run

8. Implement Wakey control, Wakey test

9. Do not try to send message to SPOT while SPOT is in transmit state

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run

11. Enable log-only run, i.e. no telemetry specified

12. Check into version control


+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086815</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004359</id>
<property name="body"><![CDATA[+Outstanding tasks+

2. Data log format

3. Log science data

15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

17. If configuration requires IOIO but it is not physically connected, 'Refresh' button never gets reenabled.

18. Need to ensure that Wakey is awake for first sample, to properly synchronize app sampling schedule and Wakey sleep schedule.

23. IOIO seems to get some current from phone; red IOIO LED glows faint red when connected only to phone.

24. Phone power sometimes runs out in non-test conditions - not clear why. WiFi?


25. Consider occasional programmatic reboot of phone to improve reliability - this requires 'rooting' the phone.

26. Configure option to start server at boot time\\

+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state

12. Check into version control
\\
6. If SPOT selected, check that Bluetooth is enabled before starting run

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run
11. Enable log-only run, i.e. no telemetry specified

8. Implement Wakey control, Wakey test
\\

7. If GPS selected, check that GPS enabled before starting run

14. Log debug/info/error messages to a file.. File would be accessed after recovery.

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)
\\

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

19. Implement compass acquisition

20. Design/implement succinct SPOT message format. Each message can probably include both science and engineering data

21. Sample schedule does not run when no telemetry channel selected (bug)

22. App and wiring on amplifier board do not agree on analog pin number.  Compared app analog readout to IOIODiagnostic app (from market);  IOIODiagnostic shows expected voltages on pins, so datalogger must be  improperly reading analog channels. ]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971591</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004361</id>
<property name="body"><![CDATA[+Outstanding tasks+

2. Data log format

3. Log science data

15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

17. If configuration requires IOIO but it is not physically connected, 'Refresh' button never gets reenabled.

18. Need to ensure that Wakey is awake for first sample, to properly synchronize app sampling schedule and Wakey sleep schedule.

23. IOIO seems to get some current from phone; red IOIO LED glows faint red when connected only to phone.

24. Phone power sometimes runs out in non-test conditions - not clear why. WiFi?

25. Consider occasional programmatic reboot of phone to improve reliability - this requires 'rooting' the phone.

26. Configure option to start server at boot time. ESPECIALLY IMPORTANT IN CASE OF SPONTANEOUS REBOOT, WHICH HAS BEEN OBSERVED
\\

+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state

12. Check into version control
\\
6. If SPOT selected, check that Bluetooth is enabled before starting run

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run
11. Enable log-only run, i.e. no telemetry specified

8. Implement Wakey control, Wakey test
\\

7. If GPS selected, check that GPS enabled before starting run

14. Log debug/info/error messages to a file.. File would be accessed after recovery.

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)
\\

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

19. Implement compass acquisition

20. Design/implement succinct SPOT message format. Each message can probably include both science and engineering data

21. Sample schedule does not run when no telemetry channel selected (bug)

22. App and wiring on amplifier board do not agree on analog pin number.  Compared app analog readout to IOIODiagnostic app (from market);  IOIODiagnostic shows expected voltages on pins, so datalogger must be  improperly reading analog channels. ]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971593</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119586</id>
<property name="body"><![CDATA[+Outstanding tasks+

2. Data log format

3. Log science data

4. Log engineering data
Telemeter engineering data; phone battery state, Wakey battery state

6. If SPOT selected, check that Bluetooth is enabled before starting run

7. If GPS selected, check that GPS enabled before starting run

8. Implement Wakey control, Wakey test

9. Do not try to send message to SPOT while SPOT is in transmit state

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run

11. Enable log-only run, i.e. no telemetry specified

12. Check into version control

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)

14. Log debug/info/error messages to a file, perhaps transmit critical ones. File would be accessed after recovery.


+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086819</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119584</id>
<property name="body"><![CDATA[+Outstanding tasks+

2. Data log format

3. Log science data

4. Log engineering data
Telemeter engineering data; phone battery state, Wakey battery state

6. If SPOT selected, check that Bluetooth is enabled before starting run

7. If GPS selected, check that GPS enabled before starting run

8. Implement Wakey control, Wakey test

9. Do not try to send message to SPOT while SPOT is in transmit state

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run

11. Enable log-only run, i.e. no telemetry specified

12. Check into version control

&nbsp;13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)


+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086817</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004367</id>
<property name="body"><![CDATA[\\

Connect phone to IOIO board with USB

Run IOIO Hardware Tester app, verify comms with IOIO board

If no comms with IOIO, reboot phone\\

Run Drifter app

Run Diagnostics \-> Wakey test

Run Diagnostics \-> SPOT test

Turn off unneeded phone radios

GPS

Cell

&nbsp; ]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971599</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004370</id>
<property name="body"><![CDATA[Connect phone to IOIO board with USB

Plug cable from battery pack to Wakey; verify that SPOT and IOIO power LEDs are now lit

(NOTE: to power-cycle Wakey, *unplug the power cable for at least 30 seconds* before re-plugging)


Run IOIO Hardware Tester app, verify comms with IOIO board

If no comms with IOIO, reboot phone
\\

Run Drifter app

Run Diagnostics \-> Wakey test

Run Diagnostics \-> SPOT test

Turn off unneeded phone radios:
* Turn off GPS
* Put phone in 'Airplane mode'
* Enable Bluetooth

&nbsp; ]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971602</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004369</id>
<property name="body"><![CDATA[Connect phone to IOIO board with USB

Run IOIO Hardware Tester app, verify comms with IOIO board

If no comms with IOIO, reboot phone
\\

Run Drifter app

Run Diagnostics \-> Wakey test

Run Diagnostics \-> SPOT test

Turn off unneeded phone radios:
* Turn off GPS
* Put phone in 'Airplane mode'
* Enable Bluetooth

&nbsp; ]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971601</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119587</id>
<property name="body"><![CDATA[+Outstanding tasks+

2. Data log format

3. Log science data

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc


6. If SPOT selected, check that Bluetooth is enabled before starting run

7. If GPS selected, check that GPS enabled before starting run

8. Implement Wakey control, Wakey test

9. Do not try to send message to SPOT while SPOT is in transmit state

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run

11. Enable log-only run, i.e. no telemetry specified

12. Check into version control

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)

14. Log debug/info/error messages to a file, perhaps transmit critical ones. File would be accessed after recovery.

15. If instrument bluetooth socket can't be created, get NullPointerException\\

+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086820</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119589</id>
<property name="body"><![CDATA[+Outstanding tasks+

2. Data log format

3. Log science data

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

6. If SPOT selected, check that Bluetooth is enabled before starting run

7. If GPS selected, check that GPS enabled before starting run

8. Implement Wakey control, Wakey test

9. Do not try to send message to SPOT while SPOT is in transmit state

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run

11. Enable log-only run, i.e. no telemetry specified

12. Check into version control

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)

14. Log debug/info/error messages to a file, perhaps transmit critical ones. File would be accessed after recovery.

15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException


+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086822</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004307</id>
<property name="body"><![CDATA[I used the following procedure to 'root' a Kyocera Rise phone. This is not a very simple process, and several of the messages displayed during the process are concerning or confusing - but this worked for me. Caveat emptor.
\\
\\
1. make sure usb debuging is on (under developer options)
2. make sure unknown sources is checked  (in system settings under security)
3. install [poot.apk|^Poot-debug(W100).apk]
4. install minstro 2 from Google Play Store
5. install superuser from Google Play Store
6. run poot on your phone - it will ask if it's okay to install libraries - say 'yes'

7. Select 'Press here to run poot'

4th) go get minstro 2 from the play store

5th) get superuser from the play store as well

6th) install poot from your sdcard and then run it

7th) let minstro put the files on your phone

8th) open the poot.apk then hit run poot ( mine had an error for some  reason) if it says reboot do it that's what I did but I don't think you  have to

9th) go in to superuser go left to info then down to su binary click it and then click update only do it once or it won't work

10th) click temp unroot from superuser under the su binary then reboot your device

11th) open poot.apk again and run poot then reboot that's what I did and  make sure you don't update the su binary again you will lose the root  you just worked so hard to get no lie I have done this root method cuz  of that and for $h\!ts and giggles lol

12th) get root checker from play store to make sure you have root and  when I used this the first time after my update it took a day until root  checker said I had root

13th) after you double check root un check temp root and reboot ]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971539</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004309</id>
<property name="body"><![CDATA[I used the following procedure to 'root' a Kyocera Rise phone. This is not a very simple process, and several of the messages displayed during the process are concerning or confusing - but this worked for me. Caveat emptor.
\\
\\
1. make sure usb debuging is on (under developer options)
2. make sure unknown sources is checked  (in system settings under security)
3. install [poot.apk|^Poot-debug(W100).apk]
4. install minstro 2 from Google Play Store
5. install superuser from Google Play Store
6. run poot on your phone - it will ask if it's okay to install libraries - say 'yes'
7. Select 'Press here to run poot'

8th) open the poot.apk then hit run poot ( mine had an error for some  reason) if it says reboot do it that's what I did but I don't think you  have to

9th) go in to superuser go left to info then down to su binary click it and then click update only do it once or it won't work

10th) click temp unroot from superuser under the su binary then reboot your device

11th) open poot.apk again and run poot then reboot that's what I did and  make sure you don't update the su binary again you will lose the root  you just worked so hard to get no lie I have done this root method cuz  of that and for $h\!ts and giggles lol

12th) get root checker from play store to make sure you have root and  when I used this the first time after my update it took a day until root  checker said I had root

13th) after you double check root un check temp root and reboot ]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971541</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004311</id>
<property name="body"><![CDATA[I used the following procedure to 'root' a Kyocera Rise phone. This is not a very simple process, and several of the messages displayed during the process are concerning or confusing - but this worked for me. Caveat emptor.
\\
\\
1. make sure usb debuging is on (under developer options)
2. make sure unknown sources is checked  (in system settings under security)
3. install [poot.apk|^Poot-debug(W100).apk]
4. install minstro 2 from Google Play Store
5. install superuser from Google Play Store
6. run poot on your phone - it will ask if it's okay to install libraries - say 'yes'
7. Select 'Press here to run poot'. The first time I did this I got the following result:2012 giantpune
\[+\] opened device
\[+\] Set loggin mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[-\] expected current to be 1:ffff
\[-\] patching failed.
A demon materialized while pooting. Error code: 22
su binary was not written&nbsp;
&nbsp;I rebooted my phone and repeated this step; now I got a different result that indicates the 'su' binary was installed:\\ \\

8th) open the poot.apk then hit run poot ( mine had an error for some  reason) if it says reboot do it that's what I did but I don't think you  have to

9th) go in to superuser go left to info then down to su binary click it and then click update only do it once or it won't work

10th) click temp unroot from superuser under the su binary then reboot your device

11th) open poot.apk again and run poot then reboot that's what I did and  make sure you don't update the su binary again you will lose the root  you just worked so hard to get no lie I have done this root method cuz  of that and for $h\!ts and giggles lol

12th) get root checker from play store to make sure you have root and  when I used this the first time after my update it took a day until root  checker said I had root

13th) after you double check root un check temp root and reboot ]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971543</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004312</id>
<property name="body"><![CDATA[I used the following procedure to 'root' a Kyocera Rise phone. This is not a very simple process, and several of the messages displayed during the process are concerning or confusing - but this worked for me. Caveat emptor.
\\
\\
1. make sure usb debuging is on (under developer options)
2. make sure unknown sources is checked  (in system settings under security)
3. install [poot.apk|^Poot-debug(W100).apk]
4. install minstro 2 from Google Play Store
5. install superuser from Google Play Store
6. run poot on your phone - it will ask if it's okay to install libraries - say 'yes'
7. Select 'Press here to run poot'. The first time I did this I got the following result:2012 giantpune
\[+\] opened device
\[+\] Set loggin mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[-\] expected current to be 1:ffff
\[-\] patching failed.
A demon materialized while pooting. Error code: 22
su binary was not written&nbsp;
&nbsp;

I then rebooted my phone and repeated this step; now I got a different result that indicates the 'su' binary was installed:

2012 giantpune
\[+\] opened device
\[+\] Set logging mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[+\] Hooked mask_request_validate()
\[+\] Ran some code as the kernel
\[+\] I think root, therefore I am root
WriteSUBinary()
\[+\] remounted /system read-write
\[+\] wrote su binary
\[+\] changed su binary to uid 0, gid 0, mode 6755
\[+\] remounted /system read-only
\[+\] Removed hook
\[-\] current && current \!= last + 1:    0000ffff
0000ffff
\[-\] Haxx has run its coarse. Reboot the device to play again

A demon materialized while pooting. Error code: 64
You need to restart your device
&nbsp;


8th) open the poot.apk then hit run poot ( mine had an error for some  reason) if it says reboot do it that's what I did but I don't think you  have to

9th) go in to superuser go left to info then down to su binary click it and then click update only do it once or it won't work

10th) click temp unroot from superuser under the su binary then reboot your device

11th) open poot.apk again and run poot then reboot that's what I did and  make sure you don't update the su binary again you will lose the root  you just worked so hard to get no lie I have done this root method cuz  of that and for $h\!ts and giggles lol

12th) get root checker from play store to make sure you have root and  when I used this the first time after my update it took a day until root  checker said I had root

13th) after you double check root un check temp root and reboot ]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971544</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">22315079</id>
<property name="body"><![CDATA[h4. Preparing a new phone

Associate the phone with a Google user account mbariengineer@gmail.com - see Tom O'Reilly for the password.

If you plan to use the IOIO board, download the I[OIO Hardware Tester app|https://play.google.com/store/apps/details?id=ioio.example.ioiohardwaretester] from Google Play; this app is very useful for trouble-shooting, allows you to verify that the IOIO board is connected to your phone and functional.&nbsp;

If you plan to use the Drifter app's automatic reboot capability, you must first "["root" the phone|AndroidLogger:How to root an Android phone].

If you plan to use a SPOT Connect modem with the app, *you must "pair" the phone with the specific SPOT modem it will connect to*. If you must replace the SPOT for any reason, then you must pair the phone with the new SPOT. See the "Pairing" section of the [SPOT Connect user manual|^USB_Manual_022311-1.pdf].

Eventually we'll put the Drifter app on a server such as Google Play to allow easy over-the-air installation. Until then you should bring the phone to developer O'Reilly, who has the required development tools to install the app on a phone. Before bringing the phone to O'Reilly, you can (1) Enable app installation from non-Google sources: System->Security->Unknown Sources and (2) Enable USB debugging: System->Developer Options->USB debugging
\\

h4. Configuration and power

The Android 'Drifter' app can be configured to log various sensors and use various telemetry channels. Many if not most deployment scenarios provide a limited amount of power to run the phone - e.g. external batteries. Unless you are lucky enough to have the phone plugged into an AC adapter, consider the following power-saving tips.

Consider powering off the following, depending on your deployment needs:
* WiFi - if you are not using WiFi for telemetry, disable
* Cell radio - if you are not using cell network for telemetry via email or SMS, put phone into 'airplane mode'
* GPS - turn off if you don't need to log GPS
* BlueTooth - turn off unless you are using SPOT Connect for telemetry, or acquiring data from Bluetooth-serial instruments

Also, you should set the screen timeout to the lowest defined value, since the phone will be unattended
most of the time (the phone screen may occasionally turn on, e.g. when charge flows though the USB port).

The Drifter app can use the MBARI "Wakey" board to manage power to attached instruments and modems. If you are using Wakey, then select Configuration->Power Management \-> Use Wakey Controller.
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">22282311</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004314</id>
<property name="body"><![CDATA[I used the following procedure to 'root' a Kyocera Rise phone. This is not a very simple process, and several of the messages displayed during the process are concerning or confusing - but this worked for me. Caveat emptor.
\\
\\
1. make sure usb debuging is on (under developer options)
2. make sure unknown sources is checked  (in system settings under security)
3. install [poot.apk|^Poot-debug(W100).apk]
4. install minstro 2 from Google Play Store
5. install superuser from Google Play Store
6. run poot on your phone - it will ask if it's okay to install libraries - say 'yes'
7. Select 'Press here to run poot'. The first time I did this I got the following result:

2012 giantpune
\[+\] opened device
\[+\] Set loggin mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[-\] expected current to be 1:ffff
\[-\] patching failed.
A demon materialized while pooting. Error code: 22
su binary was not written&nbsp;
&nbsp;

I then rebooted my phone and repeated this step; now I got a different result that indicates the 'su' binary was installed:

2012 giantpune
\[+\] opened device
\[+\] Set logging mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[+\] Hooked mask_request_validate()
\[+\] Ran some code as the kernel
\[+\] I think root, therefore I am root
WriteSUBinary()
\[+\] remounted /system read-write
\[+\] wrote su binary
\[+\] changed su binary to uid 0, gid 0, mode 6755
\[+\] remounted /system read-only
\[+\] Removed hook
\[-\] current && current \!= last + 1:    0000ffff
0000ffff
\[-\] Haxx has run its coarse. Reboot the device to play again

A demon materialized while pooting. Error code: 64
You need to restart your device
&nbsp;

8th) open the poot.apk then hit run poot ( mine had an error for some  reason) if it says reboot do it that's what I did but I don't think you  have to

9th) go in to superuser go left to info then down to su binary click it and then click update only do it once or it won't work

10th) click temp unroot from superuser under the su binary then reboot your device

11th) open poot.apk again and run poot then reboot that's what I did and  make sure you don't update the su binary again you will lose the root  you just worked so hard to get no lie I have done this root method cuz  of that and for $h\!ts and giggles lol

12th) get root checker from play store to make sure you have root and  when I used this the first time after my update it took a day until root  checker said I had root

13th) after you double check root un check temp root and reboot ]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971546</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004315</id>
<property name="body"><![CDATA[I used the following procedure to 'root' a Kyocera Rise phone. This is not a very simple process, and several of the messages displayed during the process are concerning or confusing - but this worked for me. Caveat emptor.
\\
\\
1. make sure usb debuging is on (under developer options)
2. make sure unknown sources is checked  (in system settings under security)
3. install [poot.apk|^Poot-debug(W100).apk]
4. install minstro 2 from Google Play Store
5. install superuser from Google Play Store
6. run poot on your phone - it will ask if it's okay to install libraries - say 'yes'
7. Select 'Press here to run poot'. The first time I did this I got the following result:

2012 giantpune
\[+\] opened device
\[+\] Set loggin mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[-\] expected current to be 1:ffff
\[-\] patching failed.
A demon materialized while pooting. Error code: 22
su binary was not written&nbsp;
&nbsp;

I then rebooted my phone and repeated this step; now I got a different result that indicates the 'su' binary was installed:

2012 giantpune
\[+\] opened device
\[+\] Set logging mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[+\] Hooked mask_request_validate()
\[+\] Ran some code as the kernel
\[+\] I think root, therefore I am root
WriteSUBinary()
\[+\] remounted /system read-write
\[+\] wrote su binary
\[+\] changed su binary to uid 0, gid 0, mode 6755
\[+\] remounted /system read-only
\[+\] Removed hook
\[-\] current && current \!= last + 1:    0000ffff
0000ffff
\[-\] Haxx has run its coarse. Reboot the device to play again

A demon materialized while pooting. Error code: 64
You need to restart your device


Even though there is "Error code: 64", the 'su' executable was installed.&nbsp;


8. Run the&nbsp; 'superuser' app; go left to 'info' then down to su binary; click it and then click update (only do it once or it won't work)

9. After the update screen finishes, click 'temp unroot' under the su binary,&nbsp; then reboot your device

12th) get root checker from play store to make sure you have root and  when I used this the first time after my update it took a day until root  checker said I had root

13th) after you double check root un check temp root and reboot ]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971547</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">22315083</id>
<property name="body"><![CDATA[h4. Preparing a new phone

Associate the phone with a Google user account mbariengineer@gmail.com - see Tom O'Reilly for the password.

If you plan to use the IOIO board, download the I[OIO Hardware Tester app|https://play.google.com/store/apps/details?id=ioio.example.ioiohardwaretester] from Google Play; this app is very useful for trouble-shooting, allows you to verify that the IOIO board is connected to your phone and functional.&nbsp;

If you plan to use the Drifter app's automatic reboot capability, you must first "["root" the phone|AndroidLogger:How to root an Android phone].

If you plan to use a SPOT Connect modem with the app, *you must "pair" the phone with the specific SPOT modem it will connect to*. If you must replace the SPOT for any reason, then you must pair the phone with the new SPOT. See the "Pairing" section of the [SPOT Connect user manual|^USB_Manual_022311-1.pdf].

Eventually we'll put the Drifter app on a server such as Google Play to allow easy over-the-air installation. Until then you should bring the phone to developer O'Reilly, who has the required development tools to install the app on a phone. Before bringing the phone to O'Reilly, you can (1) Enable app installation from non-Google sources: System->Security->Unknown Sources and (2) Enable USB debugging: System->Developer Options->USB debugging
\\

h4. Configuration and power

The Android 'Drifter' app can be configured to log various sensors and use various telemetry channels. Many if not most deployment scenarios provide a limited amount of power to run the phone - e.g. external batteries. Unless you are lucky enough to have the phone plugged into an AC adapter, consider the following power-saving tips.

Consider powering off the following, depending on your deployment needs:
* WiFi - if you are not using WiFi for telemetry, disable
* Cell radio - if you are not using cell network for telemetry via email or SMS, put phone into 'airplane mode'
* GPS - turn off if you don't need to log GPS (SPOT Connect provides GPS)
* BlueTooth - turn off unless you are using SPOT Connect for telemetry, or acquiring data from Bluetooth-serial instruments
* Disable Google Play notification and diable auto-update - I woiuld expect the phone wouldn't try in airplane mode, but just in case:
&nbsp;Open Google Play:&nbsp; Press menu, select Settings
* Disable auto-sync - I would expect the phone wouldn't try if in "airplane" mode, but just in case:
System settings \-> Accounts & sync ; slide switch at top of screen to "off"
* Disable mobile data:
System settings \-> Data usage; turn mobile data switch "off"

Also, you should set the screen timeout to the lowest defined value, since the phone will be unattended
most of the time (the phone screen may occasionally turn on, e.g. when charge flows though the USB port).

The Drifter app can use the MBARI "Wakey" board to manage power to attached instruments and modems. If you are using Wakey, then select Configuration->Power Management \-> Use Wakey Controller.
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">22282315</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004317</id>
<property name="body"><![CDATA[I used the following procedure to 'root' a Kyocera Rise phone. This is not a very simple process, and several of the messages displayed during the process are concerning or confusing - but this worked for me. Caveat emptor.
\\
\\
1. make sure usb debuging is on (under developer options)
2. make sure unknown sources is checked  (in system settings under security)
3. install [poot.apk|^Poot-debug(W100).apk]
4. install minstro 2 from Google Play Store
5. install superuser from Google Play Store
6. run poot on your phone - it will ask if it's okay to install libraries - say 'yes'
7. Select 'Press here to run poot'. The first time I did this I got the following result:

2012 giantpune
\[+\] opened device
\[+\] Set loggin mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[-\] expected current to be 1:ffff
\[-\] patching failed.
A demon materialized while pooting. Error code: 22
su binary was not written&nbsp;
&nbsp;

I then rebooted my phone and repeated this step; now I got a different result that indicates the 'su' binary was installed:

2012 giantpune
\[+\] opened device
\[+\] Set logging mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[+\] Hooked mask_request_validate()
\[+\] Ran some code as the kernel
\[+\] I think root, therefore I am root
WriteSUBinary()
\[+\] remounted /system read-write
\[+\] wrote su binary
\[+\] changed su binary to uid 0, gid 0, mode 6755
\[+\] remounted /system read-only
\[+\] Removed hook
\[-\] current && current \!= last + 1:    0000ffff
0000ffff
\[-\] Haxx has run its coarse. Reboot the device to play again

A demon materialized while pooting. Error code: 64
You need to restart your device

Even though there is "Error code: 64", the 'su' executable was installed.&nbsp;

8. Run the&nbsp; 'superuser' app; go left to 'info' then down to su binary; click it and then click update (only do it once or it won't work)

9. After the update screen finishes, click 'temp unroot' under the su binary,&nbsp; then reboot your device

12th) get root checker from play store to make sure you have root and  when I used this the first time after my update it took a day until root  checker said I had root

13th) after you double check root un check temp root and reboot ]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971549</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119892</id>
<property name="body"><![CDATA[+Outstanding tasks+

2. Data log format

3. Log science data

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

17. If configuration requires IOIO but it is not physically connected, 'Refresh' button never gets reenabled.

18. Need to ensure that Wakey is awake for first sample, to properly synchronize app sampling schedule and Wakey sleep schedule.

19. Implement compass acquisition

20. Design/implement succinct SPOT message format. Each message can probably include both science and engineering data&nbsp;

21. Sample schedule does not run when no telemetry channel selected (bug)

22. App and wiring on amplifier board do not agree on analog pin number.


+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state

12. Check into version control
\\
6. If SPOT selected, check that Bluetooth is enabled before starting run

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run
11. Enable log-only run, i.e. no telemetry specified

8. Implement Wakey control, Wakey test
\\

7. If GPS selected, check that GPS enabled before starting run

14. Log debug/info/error messages to a file.. File would be accessed after recovery.

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20087133</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004319</id>
<property name="body"><![CDATA[I used the following procedure to 'root' a Kyocera Rise phone. This is not a very simple process, and several of the messages displayed during the process are concerning or confusing - but this worked for me. Caveat emptor.
\\
\\
1. make sure usb debuging is on (under developer options)


2. make sure unknown sources is checked  (in system settings under security)


3. install [poot.apk|^Poot-debug(W100).apk]


4. install [minstro 2|https://play.google.com/store/apps/details?id=org.kde.necessitas.ministro] from Google Play Store


5. install [superuser|https://play.google.com/store/apps/details?id=com.noshufou.android.su] from Google Play Store


6. run poot on your phone - it will ask if it's okay to install libraries - say 'yes'


7. Select 'Press here to run poot'. The first time I did this I got the following result:

2012 giantpune
\[+\] opened device
\[+\] Set loggin mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[-\] expected current to be 1:ffff
\[-\] patching failed.
A demon materialized while pooting. Error code: 22
su binary was not written&nbsp;
&nbsp;

I then rebooted my phone and repeated this step; now I got a different result that indicates the 'su' binary was installed:

2012 giantpune
\[+\] opened device
\[+\] Set logging mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[+\] Hooked mask_request_validate()
\[+\] Ran some code as the kernel
\[+\] I think root, therefore I am root
WriteSUBinary()
\[+\] remounted /system read-write
\[+\] wrote su binary
\[+\] changed su binary to uid 0, gid 0, mode 6755
\[+\] remounted /system read-only
\[+\] Removed hook
\[-\] current && current \!= last + 1:    0000ffff
0000ffff
\[-\] Haxx has run its coarse. Reboot the device to play again

A demon materialized while pooting. Error code: 64
You need to restart your device

Even though there is "Error code: 64", the 'su' executable was installed.&nbsp;

8. Run the&nbsp; 'superuser' app; go left to 'info' then down to su binary; click it and then click update (only do it once or it won't work)

9. After the update screen finishes, click 'temp unroot' under the su binary,&nbsp; then reboot your device

12th) get root checker from play store to make sure you have root and  when I used this the first time after my update it took a day until root  checker said I had root

13th) after you double check root un check temp root and reboot ]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971551</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119891</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.
\\

The Chavez lab has developed a robust low cost drifter that has been used repeatedly by our lab, CANON, Autonomy and several other MBARI projects. The drifter is based on a SPOT tracker and total hardware cost is about $250. We propose to exploit the rapid development of commercial low-cost mobile computing and sensor platforms by taking a prototype instrument data logger (developed by O'Reilly and Risi) that runs on an Android device (e.g. phone or tablet) and deploying it as a test on the low cost drifter. The Android logger application developed by O'Reilly periodically retrieves data from one or more RS-232 or analog instruments as well as onboard phone sensors (e.g. GPS, accelerometer, compass). The app then telemeters the retrieved data to shore via the cell phone network, WiFi or a satellite modem. Such a data logger could have several applications including low-cost moorings, drifters, or pier-mounted deployments.
\\

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

!DrifterSchematic.png|width=814,height=628!

The Data logger app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app is written in Java, and source code is currently archived at [http://bitbucket.org] as a "private" repository. We plan to distribute the code as open source in the near future.

The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board. The phone sends telemetry to shore as 41-byte messages through the [SPOT Connect|http://www.findmespot.com/en/index.php?cid=116] satellite modem, using the Bluetooth protocol described [here|http://www.sparkfun.com/tutorials/340].

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not have a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android data logger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;
\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20087132</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21398772</id>
<property name="body"><![CDATA[+Outstanding tasks+
15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

17. If configuration requires IOIO but it is not physically connected, 'Refresh' button never gets reenabled.

18. Need to ensure that Wakey is awake for first sample, to properly synchronize app sampling schedule and Wakey sleep schedule.

23. IOIO seems to get some current from phone; red IOIO LED glows faint red when connected only to phone.

24. Phone power sometimes runs out in non-test conditions - not clear why. WiFi?

26. Configure option to start server at boot time, not just on auto-reboot. ESPECIALLY IMPORTANT IN CASE OF SPONTANEOUS REBOOT, WHICH HAS BEEN OBSERVED

27. check the relative drift of the Android phone and Wakey clocks before we deploy.

28. DrifterService should assert 20-minute sleep onset delay for Wakey comm port, since user may inadvertently leave some test value instead.

29. If the coms delay time is greater than the sleep time, causing the coms power to be already on when Wakey awakes, then the action of electronically pushing the SPOT power button to turn SPOT on may instead turn it off. To prevent this, the Wakey code should check to see if the coms power is already on before pushing the SPOT power button.


+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state

12. Check into version control
\\
6. If SPOT selected, check that Bluetooth is enabled before starting run

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run
11. Enable log-only run, i.e. no telemetry specified

8. Implement Wakey control, Wakey test
\\

7. If GPS selected, check that GPS enabled before starting run

14. Log debug/info/error messages to a file.. File would be accessed after recovery.

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)
\\

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

19. Implement compass acquisition

20. Design/implement succinct SPOT message format. Each message can probably include both science and engineering data

21. Sample schedule does not run when no telemetry channel selected (bug)

22. App and wiring on amplifier board do not agree on analog pin number.  Compared app analog readout to IOIODiagnostic app (from market);  IOIODiagnostic shows expected voltages on pins, so datalogger must be  improperly reading analog channels.

25. Consider occasional programmatic reboot of phone to improve reliability - this requires 'rooting' the phone.

2. Data log format

3. Log science data]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21366069</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119894</id>
<property name="body"><![CDATA[+Outstanding tasks+

2. Data log format

3. Log science data

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

17. If configuration requires IOIO but it is not physically connected, 'Refresh' button never gets reenabled.

18. Need to ensure that Wakey is awake for first sample, to properly synchronize app sampling schedule and Wakey sleep schedule.

19. Implement compass acquisition

20. Design/implement succinct SPOT message format. Each message can probably include both science and engineering data&nbsp;

21. Sample schedule does not run when no telemetry channel selected (bug)

22. App and wiring on amplifier board do not agree on analog pin number. Compared app analog readout to IOIODiagnostic app (from market); IOIODiagnostic shows expected voltages on pins, so datalogger must be improperly reading analog channels.

23. IOIO seems to get some current from phone; red IOIO LED glows faint red when connected only to phone.

+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state

12. Check into version control
\\
6. If SPOT selected, check that Bluetooth is enabled before starting run

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run
11. Enable log-only run, i.e. no telemetry specified

8. Implement Wakey control, Wakey test
\\

7. If GPS selected, check that GPS enabled before starting run

14. Log debug/info/error messages to a file.. File would be accessed after recovery.

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20087135</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004321</id>
<property name="body"><![CDATA[I used the following procedure to 'root' a Kyocera Rise phone. This is not a very simple process, and several of the messages displayed during the process are concerning or confusing - but this worked for me. Caveat emptor.
\\
\\
1. make sure usb debuging is on (under developer options)

2. make sure unknown sources is checked  (in system settings under security)

3. install [poot.apk|^Poot-debug(W100).apk]

4. install [minstro 2|https://play.google.com/store/apps/details?id=org.kde.necessitas.ministro] from Google Play Store

5. install [superuser|https://play.google.com/store/apps/details?id=com.noshufou.android.su] from Google Play Store

6. run poot on your phone - it will ask if it's okay to install libraries - say 'yes'

7. Select 'Press here to run poot'. The first time I did this I got the following result:

2012 giantpune
\[+\] opened device
\[+\] Set loggin mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[-\] expected current to be 1:ffff
\[-\] patching failed.
A demon materialized while pooting. Error code: 22
su binary was not written&nbsp;
&nbsp;

I then rebooted my phone and repeated this step; now I got a different result that indicates the 'su' binary was installed (despite the "Error code: 64" message):

2012 giantpune
\[+\] opened device
\[+\] Set logging mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[+\] Hooked mask_request_validate()
\[+\] Ran some code as the kernel
\[+\] I think root, therefore I am root
WriteSUBinary()
\[+\] remounted /system read-write
\[+\] wrote su binary
\[+\] changed su binary to uid 0, gid 0, mode 6755
\[+\] remounted /system read-only
\[+\] Removed hook
\[-\] current && current \!= last + 1:    0000ffff
0000ffff
\[-\] Haxx has run its coarse. Reboot the device to play again

A demon materialized while pooting. Error code: 64
You need to restart your device\\

8. Run the&nbsp; 'superuser' app; go left to 'info' then down to su binary; click it and then click update (only do it once or it won't work)

9. After the update screen finishes, click 'temp unroot' under the su binary,&nbsp; then reboot your device

10. Install [root checker|https://play.google.com/store/apps/details?id=com.joeykrim.rootcheck] from play store to make sure the phone is rooted.


11. If the phone is rooted, go to superuser, uncheck 'temp root' and reboot ]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971553</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21398773</id>
<property name="body"><![CDATA[+Outstanding tasks+
15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

17. If configuration requires IOIO but it is not physically connected, 'Refresh' button never gets reenabled.

18. Need to ensure that Wakey is awake for first sample, to properly synchronize app sampling schedule and Wakey sleep schedule.

23. IOIO seems to get some current from phone; red IOIO LED glows faint red when connected only to phone.

24. Phone power sometimes runs out in non-test conditions - not clear why. WiFi?

26. Configure option to start server at boot time, not just on auto-reboot. ESPECIALLY IMPORTANT IN CASE OF SPONTANEOUS REBOOT, WHICH HAS BEEN OBSERVED

27. check the relative drift of the Android phone and Wakey clocks before we deploy.

28. DrifterService should assert 20-minute sleep onset delay for Wakey comm port, since user may inadvertently leave some test value instead.

29. If the coms delay time is greater than the sleep time, causing the coms power to be already on when Wakey awakes, then the action of electronically pushing the SPOT power button to turn SPOT on may instead turn it off. To prevent this, the Wakey code should check to see if the coms power is already on before pushing the SPOT power button.

&nbsp;30. Wakey power management enabled, acquiring A2D data, sample interval = 5 minutes. Wakey does not turn off IOIO.


+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state

12. Check into version control
\\
6. If SPOT selected, check that Bluetooth is enabled before starting run

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run
11. Enable log-only run, i.e. no telemetry specified

8. Implement Wakey control, Wakey test
\\

7. If GPS selected, check that GPS enabled before starting run

14. Log debug/info/error messages to a file.. File would be accessed after recovery.

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)
\\

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

19. Implement compass acquisition

20. Design/implement succinct SPOT message format. Each message can probably include both science and engineering data

21. Sample schedule does not run when no telemetry channel selected (bug)

22. App and wiring on amplifier board do not agree on analog pin number.  Compared app analog readout to IOIODiagnostic app (from market);  IOIODiagnostic shows expected voltages on pins, so datalogger must be  improperly reading analog channels.

25. Consider occasional programmatic reboot of phone to improve reliability - this requires 'rooting' the phone.

2. Data log format

3. Log science data]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21366070</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004322</id>
<property name="body"><![CDATA[I used the following procedure to 'root' a Kyocera Rise phone. This is not a very simple process, and several of the messages displayed during the process are concerning or confusing - but this worked for me. Caveat emptor.
\\
\\
1. make sure usb debuging is on (under developer options)

2. make sure unknown sources is checked  (in system settings under security)

3. install [poot.apk|^Poot-debug(W100).apk]

4. install [minstro 2|https://play.google.com/store/apps/details?id=org.kde.necessitas.ministro] from Google Play Store

5. install [superuser|https://play.google.com/store/apps/details?id=com.noshufou.android.su] from Google Play Store

6. run poot on your phone - it will ask if it's okay to install libraries - say 'yes'

7. Select 'Press here to run poot'. The first time I did this I got the following result:

2012 giantpune
\[+\] opened device
\[+\] Set loggin mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[-\] expected current to be 1:ffff
\[-\] patching failed.
A demon materialized while pooting. Error code: 22
su binary was not written&nbsp;
&nbsp;

I then rebooted my phone and repeated this step; now I got a different result that indicates the 'su' binary was installed (despite the "Error code: 64" message):

2012 giantpune
\[+\] opened device
\[+\] Set logging mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[+\] Hooked mask_request_validate()
\[+\] Ran some code as the kernel
\[+\] I think root, therefore I am root
WriteSUBinary()
\[+\] remounted /system read-write
\[+\] wrote su binary
\[+\] changed su binary to uid 0, gid 0, mode 6755
\[+\] remounted /system read-only
\[+\] Removed hook
\[-\] current && current \!= last + 1:    0000ffff
0000ffff
\[-\] Haxx has run its coarse. Reboot the device to play again

A demon materialized while pooting. Error code: 64
You need to restart your device
\\

8. Run the&nbsp; 'superuser' app; go left to 'info' then down to su binary; click it and then click update (only do it once or it won't work)

9. After the update screen finishes, click 'temp unroot' under the su binary,&nbsp; then reboot your device

10. Install [root checker|https://play.google.com/store/apps/details?id=com.joeykrim.rootcheck] from Google Play Store and run it to ensure the phone is now rooted.

11. If the phone is rooted, go to superuser, uncheck 'temp root' and reboot

This procedure may work for your phone - if not, search the web for root procedures appropriate to your phone.\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971554</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119650</id>
<property name="body"><![CDATA[+Outstanding tasks+

2. Data log format

3. Log science data

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

7. If GPS selected, check that GPS enabled before starting run

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)

14. Log debug/info/error messages to a file, perhaps transmit critical ones. File would be accessed after recovery.

15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

17. If configuration requires IOIO but it is not physically connected, 'Refresh' button never gets reenabled.


+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state

12. Check into version control
\\

6. If SPOT selected, check that Bluetooth is enabled before starting run

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run

11. Enable log-only run, i.e. no telemetry specified

8. Implement Wakey control, Wakey test
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086885</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119648</id>
<property name="body"><![CDATA[+Outstanding tasks+

2. Data log format

3. Log science data

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

7. If GPS selected, check that GPS enabled before starting run

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)

14. Log debug/info/error messages to a file, perhaps transmit critical ones. File would be accessed after recovery.

15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state

12. Check into version control
\\

6. If SPOT selected, check that Bluetooth is enabled before starting run

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run

11. Enable log-only run, i.e. no telemetry specified

8. Implement Wakey control, Wakey test\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086883</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119884</id>
<property name="body"><![CDATA[+Outstanding tasks+

2. Data log format

3. Log science data

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

17. If configuration requires IOIO but it is not physically connected, 'Refresh' button never gets reenabled.

18. Need to ensure that Wakey is awake for first sample, to properly synchronize app sampling schedule and Wakey sleep schedule.

19. Implement compass acquisition

20. Design/implement succinct SPOT message format. Each message can probably include both science and engineering data&nbsp;

21. Sample schedule does not run when no telemetry channel selected (bug)

22. Appears that app disagrees with pin # on pH probe amp. I.e. app seems to read temperature on pin 34, and pH on pin 33. Either wiring or app is in error


+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state

12. Check into version control
\\
6. If SPOT selected, check that Bluetooth is enabled before starting run

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run
11. Enable log-only run, i.e. no telemetry specified

8. Implement Wakey control, Wakey test
\\

7. If GPS selected, check that GPS enabled before starting run

14. Log debug/info/error messages to a file.. File would be accessed after recovery.

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20087125</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004297</id>
<property name="body"><![CDATA[I used the following procedure to 'root' a Kyocera Rise phone.\\ \\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971529</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004299</id>
<property name="body"><![CDATA[I used the following procedure to 'root' a Kyocera Rise phone.
\\
\\
# &nbsp;make sure usb debuging is on (under developer options)
# make sure unkown sources is checked  (in system settings under security)
# get [poot.apk|^Poot-debug(W100).apk] \- you can download it to your Mac or PC

4th) go get minstro 2 from the play store

5th) get superuser from the play store as well

6th) install poot from your sdcard and then run it

7th) let minstro put the files on your phone

8th) open the poot.apk then hit run poot ( mine had an error for some  reason) if it says reboot do it that's what I did but I don't think you  have to

9th) go in to superuser go left to info then down to su binary click it and then click update only do it once or it won't work

10th) click temp unroot from superuser under the su binary then reboot your device

11th) open poot.apk again and run poot then reboot that's what I did and  make sure you don't update the su binary again you will lose the root  you just worked so hard to get no lie I have done this root method cuz  of that and for $h\!ts and giggles lol

12th) get root checker from play store to make sure you have root and  when I used this the first time after my update it took a day until root  checker said I had root

13th) after you double check root un check temp root and reboot ]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971531</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004301</id>
<property name="body"><![CDATA[I used the following procedure to 'root' a Kyocera Rise phone.
\\
\\
# &nbsp;make sure usb debuging is on (under developer options)
# make sure unkown sources is checked  (in system settings under security)
# install [poot.apk|^Poot-debug(W100).apk]
# install minstro 2 from Google Play Store
# install superuser from Google Play Store
# run poot on your phone - it will ask if it's okay to install libraries - say 'yes'
# press 'run poot'
# &nbsp;

4th) go get minstro 2 from the play store

5th) get superuser from the play store as well

6th) install poot from your sdcard and then run it

7th) let minstro put the files on your phone

8th) open the poot.apk then hit run poot ( mine had an error for some  reason) if it says reboot do it that's what I did but I don't think you  have to

9th) go in to superuser go left to info then down to su binary click it and then click update only do it once or it won't work

10th) click temp unroot from superuser under the su binary then reboot your device

11th) open poot.apk again and run poot then reboot that's what I did and  make sure you don't update the su binary again you will lose the root  you just worked so hard to get no lie I have done this root method cuz  of that and for $h\!ts and giggles lol

12th) get root checker from play store to make sure you have root and  when I used this the first time after my update it took a day until root  checker said I had root

13th) after you double check root un check temp root and reboot ]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971533</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119876</id>
<property name="body"><![CDATA[+Outstanding tasks+

2. Data log format

3. Log science data

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

17. If configuration requires IOIO but it is not physically connected, 'Refresh' button never gets reenabled.

18. Need to ensure that Wakey is awake for first sample, to properly synchronize app sampling schedule and Wakey sleep schedule.

19. Implement compass acquisition

20. Design/implement succinct SPOT message format. Each message can probably include both science and engineering data&nbsp;

21. Sample schedule does not run when no telemetry channel selected (bug)
\\

+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state

12. Check into version control
\\
6. If SPOT selected, check that Bluetooth is enabled before starting run

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run
11. Enable log-only run, i.e. no telemetry specified

8. Implement Wakey control, Wakey test
\\

7. If GPS selected, check that GPS enabled before starting run

14. Log debug/info/error messages to a file.. File would be accessed after recovery.

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20087117</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119636</id>
<property name="body"><![CDATA[+Outstanding tasks+

2. Data log format

3. Log science data

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

6. If SPOT selected, check that Bluetooth is enabled before starting run

7. If GPS selected, check that GPS enabled before starting run

8. Implement Wakey control, Wakey test

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run

11. Enable log-only run, i.e. no telemetry specified

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)

14. Log debug/info/error messages to a file, perhaps transmit critical ones. File would be accessed after recovery.

15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state


12. Check into version control\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086871</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004305</id>
<property name="body"><![CDATA[I used the following procedure to 'root' a Kyocera Rise phone.
\\
\\
make sure usb debuging is on (under developer options)
make sure unkown sources is checked  (in system settings under security)
install [poot.apk|^Poot-debug(W100).apk]
install minstro 2 from Google Play Store
install superuser from Google Play Store
run poot on your phone - it will ask if it's okay to install libraries - say 'yes'
press 'run poot'


4th) go get minstro 2 from the play store

5th) get superuser from the play store as well

6th) install poot from your sdcard and then run it

7th) let minstro put the files on your phone

8th) open the poot.apk then hit run poot ( mine had an error for some  reason) if it says reboot do it that's what I did but I don't think you  have to

9th) go in to superuser go left to info then down to su binary click it and then click update only do it once or it won't work

10th) click temp unroot from superuser under the su binary then reboot your device

11th) open poot.apk again and run poot then reboot that's what I did and  make sure you don't update the su binary again you will lose the root  you just worked so hard to get no lie I have done this root method cuz  of that and for $h\!ts and giggles lol

12th) get root checker from play store to make sure you have root and  when I used this the first time after my update it took a day until root  checker said I had root

13th) after you double check root un check temp root and reboot ]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971537</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119659</id>
<property name="body"><![CDATA[+Outstanding tasks+

2. Data log format

3. Log science data

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

17. If configuration requires IOIO but it is not physically connected, 'Refresh' button never gets reenabled.
\\

+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state

12. Check into version control
\\
6. If SPOT selected, check that Bluetooth is enabled before starting run

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run
11. Enable log-only run, i.e. no telemetry specified

8. Implement Wakey control, Wakey test
\\

7. If GPS selected, check that GPS enabled before starting run

14. Log debug/info/error messages to a file.. File would be accessed after recovery.

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086894</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119661</id>
<property name="body"><![CDATA[+Outstanding tasks+

2. Data log format

3. Log science data

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

17. If configuration requires IOIO but it is not physically connected, 'Refresh' button never gets reenabled.

18. Need to ensure that Wakey is awake for first sample, to properly synchronize app sampling schedule and Wakey sleep schedule.

19. Implement compass acquisition\\

+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state

12. Check into version control
\\
6. If SPOT selected, check that Bluetooth is enabled before starting run

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run
11. Enable log-only run, i.e. no telemetry specified

8. Implement Wakey control, Wakey test
\\

7. If GPS selected, check that GPS enabled before starting run

14. Log debug/info/error messages to a file.. File would be accessed after recovery.

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086896</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004350</id>
<property name="body"><![CDATA[Pair phone with SPOT Connect

First, you must "pair" the phone with the SPOT Connect modem - see the "Pairing" section of the [SPOT Connect user manual.|^USB_Manual_022311-1.pdf]\\

The Android 'Drifter' app can be configured to log various sensors and use various telemetry channels. Many if not most deployment scenarios provide a limited amount of power to run the phone - e.g. external batteries. Unless you are luck enough to have the phone plugged into an AC adapter, consider the following power-saving tips.

Consider powering off the following, depending on your deployment needs:
* WiFi - if you are not using WiFi for telemetry, disable
* Cell radio - if you are not using cell network for telemetry via email or SMS, put phone into 'airplane mode'
* GPS - turn off if you don't need to log GPS
* BlueTooth - turn off unless you are using SPOT Connect for telemetry, or acquiring data from Bluetooth-serial instruments

Also, you should set the screen timeout to the lowest defined value, since the phone will be unattended
most of the time (the phone screen may occasionally turn on, e.g. when charge flows though the USB port).
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971582</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004348</id>
<property name="body"><![CDATA[The Android 'Drifter' app can be configured to log various sensors and use various telemetry channels. Many if not most deployment scenarios provide a limited amount of power to run the phone - e.g. external batteries. Unless you are luck enough to have the phone plugged into an AC adapter, consider the following power-saving tips.

Consider powering off the following, depending on your deployment needs:
* WiFi - if you are not using WiFi for telemetry, disable
* Cell radio - if you are not using cell network for telemetry via email or SMS, put phone into 'airplane mode'
* GPS - turn off if you don't need to log GPS
* BlueTooth - turn off unless you are using SPOT Connect for telemetry, or acquiring data from Bluetooth-serial instruments

Also, you should set the screen timeout to the lowest defined value, since the phone will be unattended
most of the time (the phone screen may occasionally turn on, e.g. when charge flows though the USB port).\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971580</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004354</id>
<property name="body"><![CDATA[h4. Pair phone with SPOT Connect

Before sending messages from a particular phone to a particular SPOT Connect via Bluetooth, you must "pair" the two - see the "Pairing" section of the [SPOT Connect user manual.|^USB_Manual_022311-1.pdf]\\

h4. Configuration and power


The Android 'Drifter' app can be configured to log various sensors and use various telemetry channels. Many if not most deployment scenarios provide a limited amount of power to run the phone - e.g. external batteries. Unless you are luck enough to have the phone plugged into an AC adapter, consider the following power-saving tips.

Consider powering off the following, depending on your deployment needs:
* WiFi - if you are not using WiFi for telemetry, disable
* Cell radio - if you are not using cell network for telemetry via email or SMS, put phone into 'airplane mode'
* GPS - turn off if you don't need to log GPS
* BlueTooth - turn off unless you are using SPOT Connect for telemetry, or acquiring data from Bluetooth-serial instruments

Also, you should set the screen timeout to the lowest defined value, since the phone will be unattended
most of the time (the phone screen may occasionally turn on, e.g. when charge flows though the USB port).
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971586</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119654</id>
<property name="body"><![CDATA[+Outstanding tasks+

2. Data log format

3. Log science data

4. Log engineering data. Telemeter engineering data; phone battery state, Wakey battery state, etc

13. If ioio connection fails, no data is telemetered (e.g. not even phone sensor which doesn't require ioio)

15. If instrument bluetooth socket can't be created, get NullPointerException

16. If instrument serial port can't be created, get NullPointerException

17. If configuration requires IOIO but it is not physically connected, 'Refresh' button never gets reenabled.\\

+Done+

1. GUI to stop service

5. Fix rx/tx pin property bug (DrifterService reads property as string, should be int)
Appears to work if rx/tx pin properties are stored as strings

9. Do not try to send message to SPOT while SPOT is in transmit state

12. Check into version control
\\ 6. If SPOT selected, check that Bluetooth is enabled before starting run

10. Warn user of unneeded power use (e.g. Wifi, cell radio) when starting a run
11. Enable log-only run, i.e. no telemetry specified

8. Implement Wakey control, Wakey test
\\

7. If GPS selected, check that GPS enabled before starting run

14. Log debug/info/error messages to a file.. File would be accessed after recovery.\\ \\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086889</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004352</id>
<property name="body"><![CDATA[h3. Pair phone with SPOT Connect

Before sending messages from a particular phone to a particular SPOT Connect via Bluetooth, you must "pair" the two - see the "Pairing" section of the [SPOT Connect user manual.|^USB_Manual_022311-1.pdf]\\

The Android 'Drifter' app can be configured to log various sensors and use various telemetry channels. Many if not most deployment scenarios provide a limited amount of power to run the phone - e.g. external batteries. Unless you are luck enough to have the phone plugged into an AC adapter, consider the following power-saving tips.

Consider powering off the following, depending on your deployment needs:
* WiFi - if you are not using WiFi for telemetry, disable
* Cell radio - if you are not using cell network for telemetry via email or SMS, put phone into 'airplane mode'
* GPS - turn off if you don't need to log GPS
* BlueTooth - turn off unless you are using SPOT Connect for telemetry, or acquiring data from Bluetooth-serial instruments

Also, you should set the screen timeout to the lowest defined value, since the phone will be unattended
most of the time (the phone screen may occasionally turn on, e.g. when charge flows though the USB port).
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971584</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004325</id>
<property name="body"><![CDATA[I used the following procedure to 'root' a Kyocera Rise phone. This is not a very simple process, and several of the messages displayed during the process are somewhat misleading - but this worked for me. This procedure exploits a kernel bug in some Android phones, but may not work for your particular phone. Caveat emptor.
\\
\\
1. make sure usb debuging is on (under developer options)

2. make sure unknown sources is checked  (in system settings under security)

3. install [poot.apk|^Poot-debug(W100).apk]

4. install [minstro 2|https://play.google.com/store/apps/details?id=org.kde.necessitas.ministro] from Google Play Store

5. install [superuser|https://play.google.com/store/apps/details?id=com.noshufou.android.su] from Google Play Store

6. run poot on your phone - it will ask if it's okay to install libraries - say 'yes'

7. Select 'Press here to run poot'. The first time I did this I got the following result:

2012 giantpune
\[+\] opened device
\[+\] Set loggin mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[-\] expected current to be 1:ffff
\[-\] patching failed.
A demon materialized while pooting. Error code: 22
su binary was not written&nbsp;
&nbsp;

I then rebooted my phone and repeated this step; now I got a different result that indicates the 'su' binary was installed (despite the "Error code: 64" message):

2012 giantpune
\[+\] opened device
\[+\] Set logging mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[+\] Hooked mask_request_validate()
\[+\] Ran some code as the kernel
\[+\] I think root, therefore I am root
WriteSUBinary()
\[+\] remounted /system read-write
\[+\] wrote su binary
\[+\] changed su binary to uid 0, gid 0, mode 6755
\[+\] remounted /system read-only
\[+\] Removed hook
\[-\] current && current \!= last + 1:    0000ffff
0000ffff
\[-\] Haxx has run its coarse. Reboot the device to play again

A demon materialized while pooting. Error code: 64
You need to restart your device
\\

8. Run the&nbsp; 'superuser' app; go left to 'info' then down to su binary; click it and then click update (only do it once or it won't work)

9. After the update screen finishes, click 'temp unroot' under the su binary,&nbsp; then reboot your device

10. Install [root checker|https://play.google.com/store/apps/details?id=com.joeykrim.rootcheck] from Google Play Store and run it to ensure the phone is now rooted.

11. If the phone is rooted, go to superuser, uncheck 'temp root' and reboot

This procedure may work for your phone - if not, search the web for root procedures appropriate to your phone.
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971557</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004324</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.
\\

The Chavez lab has developed a robust low cost drifter that has been used repeatedly by our lab, CANON, Autonomy and several other MBARI projects. The drifter is based on a SPOT tracker and total hardware cost is about $250. We propose to exploit the rapid development of commercial low-cost mobile computing and sensor platforms by taking a prototype instrument data logger (developed by O'Reilly and Risi) that runs on an Android device (e.g. phone or tablet) and deploying it as a test on the low cost drifter. The Android logger application developed by O'Reilly periodically retrieves data from one or more RS-232 or analog instruments as well as onboard phone sensors (e.g. GPS, accelerometer, compass). The app then telemeters the retrieved data to shore via the cell phone network, WiFi or a satellite modem. Such a data logger could have several applications including low-cost moorings, drifters, or pier-mounted deployments.
\\

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

!DrifterSchematic.png|width=814,height=628!

The data logger app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app is written in Java, and source code is currently archived at [http://bitbucket.org] as a "private" repository. We plan to distribute the code as open source in the near future.

The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board. The phone sends telemetry to shore as 41-byte messages through the [SPOT Connect|http://www.findmespot.com/en/index.php?cid=116] satellite modem, using the Bluetooth protocol described [here|http://www.sparkfun.com/tutorials/340].

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not have a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android data logger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;

h2. Telemetry via SPOT Connect

A SPOT message can be no longer than 41 bytes (not including the transmit time and latitude/longitude header that the modem prepends). Thus the data logger&nbsp; app generates very terse summaries of the instrument, sensor and diagnostic for transmisson via SPOT. The app generates SPOT messages consisting of fields separated by a semicolon,&nbsp; with the following format:
{noformat}
instrument_record:orientation:gps:compass:phone_batt_level:wakey_batt_voltage
{noformat}
instrument_record - data record from attached serial or analog instrument. The format of the instrument_record depends on the instrument type.

orientation - data record from phones orientation sensors consisting of roll, pitch, and yaw

gps - data record from phone's GPS

compass - magnetic azimuth from phone's sensor

phone_batt_level - remaining phone battery, in percent

wakey_batt_voltage - "Wakey" battery voltage
\\
\\
Note that some fields may be zero-length. E.g. if the user does not select orientation sensor to be logged, then the SPOT message orientation sensor field (second field) will be zero length. E.g. following is an example SPOT message:
{noformat}
tmp 2923,pH 1352:::264.0:98:11.9
{noformat}
In the above case, the app had been configured to log data from an attached analog pH sensor (which outputs temperature and pH), and to log phone compass data (no other sensors were selected).\\

[Software tasks|Tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971556</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004323</id>
<property name="body"><![CDATA[I used the following procedure to 'root' a Kyocera Rise phone. This is not a very simple process, and several of the messages displayed during the process are concerning or confusing - but this worked for me. This procedure exploits a kernel bug in some Android phones, but may not work for your particular phone. Caveat emptor.
\\
\\
1. make sure usb debuging is on (under developer options)

2. make sure unknown sources is checked  (in system settings under security)

3. install [poot.apk|^Poot-debug(W100).apk]

4. install [minstro 2|https://play.google.com/store/apps/details?id=org.kde.necessitas.ministro] from Google Play Store

5. install [superuser|https://play.google.com/store/apps/details?id=com.noshufou.android.su] from Google Play Store

6. run poot on your phone - it will ask if it's okay to install libraries - say 'yes'

7. Select 'Press here to run poot'. The first time I did this I got the following result:

2012 giantpune
\[+\] opened device
\[+\] Set loggin mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[-\] expected current to be 1:ffff
\[-\] patching failed.
A demon materialized while pooting. Error code: 22
su binary was not written&nbsp;
&nbsp;

I then rebooted my phone and repeated this step; now I got a different result that indicates the 'su' binary was installed (despite the "Error code: 64" message):

2012 giantpune
\[+\] opened device
\[+\] Set logging mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[+\] Hooked mask_request_validate()
\[+\] Ran some code as the kernel
\[+\] I think root, therefore I am root
WriteSUBinary()
\[+\] remounted /system read-write
\[+\] wrote su binary
\[+\] changed su binary to uid 0, gid 0, mode 6755
\[+\] remounted /system read-only
\[+\] Removed hook
\[-\] current && current \!= last + 1:    0000ffff
0000ffff
\[-\] Haxx has run its coarse. Reboot the device to play again

A demon materialized while pooting. Error code: 64
You need to restart your device
\\

8. Run the&nbsp; 'superuser' app; go left to 'info' then down to su binary; click it and then click update (only do it once or it won't work)

9. After the update screen finishes, click 'temp unroot' under the su binary,&nbsp; then reboot your device

10. Install [root checker|https://play.google.com/store/apps/details?id=com.joeykrim.rootcheck] from Google Play Store and run it to ensure the phone is now rooted.

11. If the phone is rooted, go to superuser, uncheck 'temp root' and reboot

This procedure may work for your phone - if not, search the web for root procedures appropriate to your phone.
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971555</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">20119681</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.\\

[Software tasks|AndroidLogger:Software tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20086916</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004328</id>
<property name="body"><![CDATA[The Drifter app can optionally reboot the phone at a specified interval to clear potential error states in the phone and its interfaces. This reboot capability requires the app to have "root" privileges on the phone. I used the following procedure to root a Kyocera Rise phone. This is not a very simple process, and several of the messages displayed during the process are somewhat misleading - but this worked for me. This procedure exploits a kernel bug in some Android phones, but may not work for your particular phone. Caveat emptor.
\\
\\
1. make sure usb debuging is on (under developer options)

2. make sure unknown sources is checked  (in system settings under security)

3. install [poot.apk|^Poot-debug(W100).apk]

4. install [minstro 2|https://play.google.com/store/apps/details?id=org.kde.necessitas.ministro] from Google Play Store

5. install [superuser|https://play.google.com/store/apps/details?id=com.noshufou.android.su] from Google Play Store

6. run poot on your phone - it will ask if it's okay to install libraries - say 'yes'

7. Select 'Press here to run poot'. The first time I did this I got the following result:

:2012 giantpune
:\[+\] opened device
:\[+\] Set loggin mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[-\] expected current to be 1:ffff
\[-\] patching failed.
A demon materialized while pooting. Error code: 22
su binary was not written&nbsp;
&nbsp;

I then rebooted my phone and repeated this step; now I got a different result that indicates the 'su' binary was installed (despite the "Error code: 64" message):

2012 giantpune
\[+\] opened device
\[+\] Set logging mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[+\] Hooked mask_request_validate()
\[+\] Ran some code as the kernel
\[+\] I think root, therefore I am root
WriteSUBinary()
\[+\] remounted /system read-write
\[+\] wrote su binary
\[+\] changed su binary to uid 0, gid 0, mode 6755
\[+\] remounted /system read-only
\[+\] Removed hook
\[-\] current && current \!= last + 1:    0000ffff
0000ffff
\[-\] Haxx has run its coarse. Reboot the device to play again

A demon materialized while pooting. Error code: 64
You need to restart your device
\\

8. Run the&nbsp; 'superuser' app; go left to 'info' then down to su binary; click it and then click update (only do it once or it won't work)

9. After the update screen finishes, click 'temp unroot' under the su binary,&nbsp; then reboot your device

10. Install [root checker|https://play.google.com/store/apps/details?id=com.joeykrim.rootcheck] from Google Play Store and run it to ensure the phone is now rooted.

11. If the phone is rooted, go to superuser, uncheck 'temp root' and reboot

This procedure may work for your phone - if not, search the web for root procedures appropriate to your phone.
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971560</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004327</id>
<property name="body"><![CDATA[The Drifter app can optionally reboot the phone at a specified interval to clear potential error states in the phone and its interfaces. This reboot capability requires the app to have "root" privileges on the phone. I used the following procedure to root a Kyocera Rise phone. This is not a very simple process, and several of the messages displayed during the process are somewhat misleading - but this worked for me. This procedure exploits a kernel bug in some Android phones, but may not work for your particular phone. Caveat emptor.
\\
\\
1. make sure usb debuging is on (under developer options)

2. make sure unknown sources is checked  (in system settings under security)

3. install [poot.apk|^Poot-debug(W100).apk]

4. install [minstro 2|https://play.google.com/store/apps/details?id=org.kde.necessitas.ministro] from Google Play Store

5. install [superuser|https://play.google.com/store/apps/details?id=com.noshufou.android.su] from Google Play Store

6. run poot on your phone - it will ask if it's okay to install libraries - say 'yes'

7. Select 'Press here to run poot'. The first time I did this I got the following result:

2012 giantpune
\[+\] opened device
\[+\] Set loggin mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[-\] expected current to be 1:ffff
\[-\] patching failed.
A demon materialized while pooting. Error code: 22
su binary was not written&nbsp;
&nbsp;

I then rebooted my phone and repeated this step; now I got a different result that indicates the 'su' binary was installed (despite the "Error code: 64" message):

2012 giantpune
\[+\] opened device
\[+\] Set logging mode
\[+\] Resolved symbols
\[+\] Mapped 0x10000000
\[+\] Hooked mask_request_validate()
\[+\] Ran some code as the kernel
\[+\] I think root, therefore I am root
WriteSUBinary()
\[+\] remounted /system read-write
\[+\] wrote su binary
\[+\] changed su binary to uid 0, gid 0, mode 6755
\[+\] remounted /system read-only
\[+\] Removed hook
\[-\] current && current \!= last + 1:    0000ffff
0000ffff
\[-\] Haxx has run its coarse. Reboot the device to play again

A demon materialized while pooting. Error code: 64
You need to restart your device
\\

8. Run the&nbsp; 'superuser' app; go left to 'info' then down to su binary; click it and then click update (only do it once or it won't work)

9. After the update screen finishes, click 'temp unroot' under the su binary,&nbsp; then reboot your device

10. Install [root checker|https://play.google.com/store/apps/details?id=com.joeykrim.rootcheck] from Google Play Store and run it to ensure the phone is now rooted.

11. If the phone is rooted, go to superuser, uncheck 'temp root' and reboot

This procedure may work for your phone - if not, search the web for root procedures appropriate to your phone.
\\]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971559</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21398731</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.
\\

The Chavez lab has developed a robust low cost drifter that has been used repeatedly by our lab, CANON, Autonomy and several other MBARI projects. The drifter is based on a SPOT tracker and total hardware cost is about $250. We propose to exploit the rapid development of commercial low-cost mobile computing and sensor platforms by taking a prototype instrument data logger (developed by O'Reilly and Risi) that runs on an Android device (e.g. phone or tablet) and deploying it as a test on the low cost drifter. The Android logger application known as "Drifter" was developed by O'Reilly; it periodically retrieves data from one or more RS-232 or analog instruments as well as onboard phone sensors (e.g. GPS, accelerometer, compass). The app then telemeters the retrieved data to shore via the cell phone network, WiFi or a satellite modem. Such a data logger could have several applications including low-cost moorings, drifters, or pier-mounted deployments.

The Drifter app source code and associated files are attached to this page as a compressed '.tar' file. E.g. the code for Drifter version 1.61 is attached to this page as Drifter-1_61.tar.gz.&nbsp; Download the file into an Eclipse workspace, then decompress and un-tar it, e.g. on a Linux system:
{noformat}
% tar  zxf Drifter-1_61.tar.gz
{noformat}
&nbsp;Now run Eclipse (configured with the\[ Android Development Tools\|http://developer.android.com/tools/sdk/eclipse-adt.html\] plug-in) and import the files as an Eclipse project.
\\

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

!DrifterSchematic.png|width=814,height=628!

The Drifter app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app is written in Java, and source code is currently archived at [http://bitbucket.org] as a "private" repository. We plan to distribute the code as open source in the near future.

The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board. The phone sends telemetry to shore as 41-byte messages through the [SPOT Connect|http://www.findmespot.com/en/index.php?cid=116] satellite modem, using the Bluetooth protocol described [here|http://www.sparkfun.com/tutorials/340].

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not have a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android data logger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;

h2. Telemetry via SPOT Connect

A SPOT message can be no longer than 41 bytes (not including the transmit time and latitude/longitude header that the modem prepends). Thus the data logger&nbsp; app generates very terse summaries of the instrument, sensor and diagnostic for transmisson via SPOT. The app generates SPOT messages consisting of fields separated by a semicolon,&nbsp; with the following format:
{noformat}
instrument_record:orientation:gps:compass:phone_batt_level:wakey_batt_voltage
{noformat}
instrument_record - data record from attached serial or analog instrument. The format of the instrument_record depends on the instrument type.

orientation - data record from phones orientation sensors consisting of roll, pitch, and yaw

gps - data record from phone's GPS

compass - magnetic azimuth from phone's sensor

phone_batt_level - remaining phone battery, in percent

wakey_batt_voltage - "Wakey" battery voltage
\\
\\
Note that some fields may be zero-length. E.g. if the user does not select orientation sensor to be logged, then the SPOT message orientation sensor field (second field) will be zero length. E.g. following is an example SPOT message:
{noformat}
tmp 2923,pH 1352:::264.0:98:11.9
{noformat}
In the above case, the app had been configured to log data from an attached analog pH sensor (which outputs temperature and pH), and to log phone compass data (no other sensors were selected).
\\

[Software tasks|Tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21366027</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004333</id>
<property name="body"><![CDATA[The Android 'Drifter' app can be configured to log various sensors and use various telemetry channels. Many if not most deployment scenarios provide a limited amount of power to run the phone - e.g. external batteries. Unless you are luck enough to have the phone plugged into an AC adapter, consider the following power-saving tips.

Consider powering off the following, depending on your deployment needs:
* WiFi - if you are not using WiFi for telemetry, disable
* Cell radio - if you are not using cell network for telemetry via email or SMS, put phone into 'airplane mode'
* GPS - turn off if you don't need to log GPS
* BlueTooth - turn off unless you are using SPOT Connect for telemetry, or acquiring data from Bluetooth-serial instruments

Also, you should set the screen timeout to the lowest defined value, since the phone will be unattended
most of the time.]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971565</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21398729</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.
\\

The Chavez lab has developed a robust low cost drifter that has been used repeatedly by our lab, CANON, Autonomy and several other MBARI projects. The drifter is based on a SPOT tracker and total hardware cost is about $250. We propose to exploit the rapid development of commercial low-cost mobile computing and sensor platforms by taking a prototype instrument data logger (developed by O'Reilly and Risi) that runs on an Android device (e.g. phone or tablet) and deploying it as a test on the low cost drifter. The Android logger application known as "Drifter" was developed by O'Reilly; it periodically retrieves data from one or more RS-232 or analog instruments as well as onboard phone sensors (e.g. GPS, accelerometer, compass). The app then telemeters the retrieved data to shore via the cell phone network, WiFi or a satellite modem. Such a data logger could have several applications including low-cost moorings, drifters, or pier-mounted deployments.

The Drifter app source code and associated files are attached to this page as a compressed '.tar' file. E.g. the code for Drifter version 1.61 is attached to this page as Drifter-1_61.tar.gz.&nbsp; Download the file into an Eclipse workspace, then decompress and un-tar it, e.g. on a Linux system:
{noformat}
% tar  zxf Drifter-1_61.tar.gz
{noformat}
&nbsp;Now run Eclipse (configured for Android) and import the files as an Eclipse project.
\\

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

!DrifterSchematic.png|width=814,height=628!

The Drifter app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app is written in Java, and source code is currently archived at [http://bitbucket.org] as a "private" repository. We plan to distribute the code as open source in the near future.

The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board. The phone sends telemetry to shore as 41-byte messages through the [SPOT Connect|http://www.findmespot.com/en/index.php?cid=116] satellite modem, using the Bluetooth protocol described [here|http://www.sparkfun.com/tutorials/340].

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not have a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android data logger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;

h2. Telemetry via SPOT Connect

A SPOT message can be no longer than 41 bytes (not including the transmit time and latitude/longitude header that the modem prepends). Thus the data logger&nbsp; app generates very terse summaries of the instrument, sensor and diagnostic for transmisson via SPOT. The app generates SPOT messages consisting of fields separated by a semicolon,&nbsp; with the following format:
{noformat}
instrument_record:orientation:gps:compass:phone_batt_level:wakey_batt_voltage
{noformat}
instrument_record - data record from attached serial or analog instrument. The format of the instrument_record depends on the instrument type.

orientation - data record from phones orientation sensors consisting of roll, pitch, and yaw

gps - data record from phone's GPS

compass - magnetic azimuth from phone's sensor

phone_batt_level - remaining phone battery, in percent

wakey_batt_voltage - "Wakey" battery voltage
\\
\\
Note that some fields may be zero-length. E.g. if the user does not select orientation sensor to be logged, then the SPOT message orientation sensor field (second field) will be zero length. E.g. following is an example SPOT message:
{noformat}
tmp 2923,pH 1352:::264.0:98:11.9
{noformat}
In the above case, the app had been configured to log data from an attached analog pH sensor (which outputs temperature and pH), and to log phone compass data (no other sensors were selected).
\\

[Software tasks|Tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21366025</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21004332</id>
<property name="body"><![CDATA[The Android 'Drifter' app can be configured to log various sensors and use various telemetry channels. Many if not most deployment scenarios provide a limited amount of power to run the phone - e.g. external batteries. Unless you are luck enough to have the phone plugged into an AC adapter, consider the following power-saving tips.

Consider powering off the following, depending on your deployment needs:

* WiFi - if you are not using WiFi for telemetry, disable
* Cell radio - if you are not using cell network for telemetry via email or SMS, put phone into 'airplane mode'
* GPS
* BlueTooth

Also, you should set the screen timeout to the lowest defined value, since the phone will be unattended
most of the time.]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">20971564</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">21398727</id>
<property name="body"><![CDATA[This is the home page for the 901112 - MBTS; Android data logger space.
\\

The Chavez lab has developed a robust low cost drifter that has been used repeatedly by our lab, CANON, Autonomy and several other MBARI projects. The drifter is based on a SPOT tracker and total hardware cost is about $250. We propose to exploit the rapid development of commercial low-cost mobile computing and sensor platforms by taking a prototype instrument data logger (developed by O'Reilly and Risi) that runs on an Android device (e.g. phone or tablet) and deploying it as a test on the low cost drifter. The Android logger application known as "Drifter" was developed by O'Reilly; it periodically retrieves data from one or more RS-232 or analog instruments as well as onboard phone sensors (e.g. GPS, accelerometer, compass). The app then telemeters the retrieved data to shore via the cell phone network, WiFi or a satellite modem. Such a data logger could have several applications including low-cost moorings, drifters, or pier-mounted deployments.
\\

h2. &nbsp;pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

!DrifterSchematic.png|width=814,height=628!

The Drifter app runs on the Android phone (currently a [Kyocera Rise|http://www.gsmarena.com/kyocera_rise_c5155-4747.php] phone). The app is written in Java, and source code is currently archived at [http://bitbucket.org] as a "private" repository. We plan to distribute the code as open source in the near future.

The app retrieves pH and temperature sensor data through analog input ports on the [IOIO board|https://www.sparkfun.com/products/10748?]. The app manages the Wakey power controller through an RS232 port on the IOIO board. The phone sends telemetry to shore as 41-byte messages through the [SPOT Connect|http://www.findmespot.com/en/index.php?cid=116] satellite modem, using the Bluetooth protocol described [here|http://www.sparkfun.com/tutorials/340].

Note that phone is internally powered, phone power is NOT externally controlled. Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not have a way to do that with our current approach.
* Advantage: No physical modifications required to the phone.
* Disadvantage: There is no way to reset the phone once deployed.
\\

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android data logger app sampling once every minute. Paul measured power usage in the following states:
* Data logger idle (between samples): 1.2 mA
* Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds
\\
\\

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state.&nbsp;

h2. Telemetry via SPOT Connect

A SPOT message can be no longer than 41 bytes (not including the transmit time and latitude/longitude header that the modem prepends). Thus the data logger&nbsp; app generates very terse summaries of the instrument, sensor and diagnostic for transmisson via SPOT. The app generates SPOT messages consisting of fields separated by a semicolon,&nbsp; with the following format:
{noformat}
instrument_record:orientation:gps:compass:phone_batt_level:wakey_batt_voltage
{noformat}
instrument_record - data record from attached serial or analog instrument. The format of the instrument_record depends on the instrument type.

orientation - data record from phones orientation sensors consisting of roll, pitch, and yaw

gps - data record from phone's GPS

compass - magnetic azimuth from phone's sensor

phone_batt_level - remaining phone battery, in percent

wakey_batt_voltage - "Wakey" battery voltage
\\
\\
Note that some fields may be zero-length. E.g. if the user does not select orientation sensor to be logged, then the SPOT message orientation sensor field (second field) will be zero length. E.g. following is an example SPOT message:
{noformat}
tmp 2923,pH 1352:::264.0:98:11.9
{noformat}
In the above case, the app had been configured to log data from an attached analog pH sensor (which outputs temperature and pH), and to log phone compass data (no other sensors were selected).
\\

[Software tasks|Tasks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">21366023</id>
</property>
</object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">20971523</property>
<property name="key"><![CDATA[socialbookmarkingurl]]></property>
</composite-id>
<property name="type">6</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">21365097</property>
<property name="key"><![CDATA[socialbookmarkingurl]]></property>
</composite-id>
<property name="type">6</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">20971597</property>
<property name="key"><![CDATA[isbookmark]]></property>
</composite-id>
<property name="type">5</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">20971562</property>
<property name="key"><![CDATA[isbookmark]]></property>
</composite-id>
<property name="type">5</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">19562510</property>
<property name="key"><![CDATA[isbookmark]]></property>
</composite-id>
<property name="type">5</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">19562512</property>
<property name="key"><![CDATA[isbookmark]]></property>
</composite-id>
<property name="type">5</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">20971523</property>
<property name="key"><![CDATA[isbookmark]]></property>
</composite-id>
<property name="type">5</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">19562510</property>
<property name="key"><![CDATA[socialbookmarkingurl]]></property>
</composite-id>
<property name="type">6</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">20971562</property>
<property name="key"><![CDATA[socialbookmarkingurl]]></property>
</composite-id>
<property name="type">6</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">20971597</property>
<property name="key"><![CDATA[socialbookmarkingurl]]></property>
</composite-id>
<property name="type">6</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">19562512</property>
<property name="key"><![CDATA[socialbookmarkingurl]]></property>
</composite-id>
<property name="type">6</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">21365097</property>
<property name="key"><![CDATA[isbookmark]]></property>
</composite-id>
<property name="type">5</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
</hibernate-generic>