<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mi Brain-Training Personal &#187; Android</title>
	<atom:link href="http://saghul.net/blog/tag/android/feed/" rel="self" type="application/rss+xml" />
	<link>http://saghul.net/blog</link>
	<description>Para que no se me olviden las cosas...</description>
	<lastBuildDate>Mon, 06 Feb 2012 10:49:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Analizando el cliente SIP de Android 2.3 (Gingerbread)</title>
		<link>http://saghul.net/blog/2011/02/02/analizando-el-cliente-sip-de-android-2-3-gingerbread/</link>
		<comments>http://saghul.net/blog/2011/02/02/analizando-el-cliente-sip-de-android-2-3-gingerbread/#comments</comments>
		<pubDate>Wed, 02 Feb 2011 00:38:49 +0000</pubDate>
		<dc:creator>saghul</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[VoIP]]></category>

		<guid isPermaLink="false">http://saghul.net/blog/?p=1333</guid>
		<description><![CDATA[Cuando se publicó que Android 2.3 (Gingerbread) iba a traer un cliente SIP integrado muchos lo recibieron con alegría, yo personalmente me mostre escéptico ante el asunto y ahora que he podido probarlo paso a comentar mi experiencia. Lo primero que nos encontramos al acceder al menú de configuración es una interfaz bastante sencilla (tampoco [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando se publicó que Android 2.3 (Gingerbread) iba a traer un cliente SIP integrado muchos lo recibieron con alegría, yo personalmente me mostre escéptico ante el asunto y ahora que he podido probarlo paso a comentar mi experiencia.</p>
<p>Lo primero que nos encontramos al acceder al menú de configuración es una interfaz bastante sencilla (tampoco me esperaba encontrar opciones de <a class="vt-p" href="http://saghul.net/blog/tag/ice/" target="_blank">ICE</a> en la primera versión) en la que sin entrar en ningún menu avanzado se nos pide usuario, contraseña y servidor.</p>
<p style="text-align: center;"><a class="vt-p" href="http://saghul.net/blog/wp-content/uploads/2011/02/CONFIGURACION-SIP-2.3.jpg"><img class="size-medium wp-image-1337 aligncenter" title="CONFIGURACION-SIP-2.3" src="http://saghul.net/blog/wp-content/uploads/2011/02/CONFIGURACION-SIP-2.3-180x300.jpg" alt="" width="180" height="300" /></a></p>
<p>Aquí he encontrado el primer problema. Me he puesto a capturar el tráfico con <em>ngrep</em> en el servidor y al habilitar la opción de registro este es el REGISTER que se ha generado:</p>
<div id="gist-806992" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'>U +4.002042 192.168.99.36:46287 -&gt; 81.23.228.161:5060</div><div class='line' id='LC2'>REGISTER sip:sip2sip.info SIP/2.0</div><div class='line' id='LC3'>Call-ID: a812225af963d74d1f448421baf0e935@192.168.99.36</div><div class='line' id='LC4'>CSeq: 3879 REGISTER</div><div class='line' id='LC5'>From: &quot;saghul&quot; &lt;sip:saghul@sip2sip.info:5060&gt;;tag=578921570</div><div class='line' id='LC6'>To: &quot;saghul&quot; &lt;sip:saghul@sip2sip.info:5060&gt;</div><div class='line' id='LC7'>Via: SIP/2.0/UDP 192.168.99.36:46287;branch=z9hG4bKe3516d385aa81d7768be12f905d7d1e6333939;rport</div><div class='line' id='LC8'>Max-Forwards: 70</div><div class='line' id='LC9'>User-Agent: SIPAUA/0.1.001</div><div class='line' id='LC10'>Contact: &quot;saghul&quot; &lt;sip:saghul@192.168.99.36:46287;transport=udp&gt;</div><div class='line' id='LC11'>Expires: 3600</div><div class='line' id='LC12'>Content-Length: 0</div><div class='line' id='LC13'><br/></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/806992/9aed0f79a20e3d3439a9a5f3d9abe53d4eed70ff/gistfile1.txt" style="float:right;">view raw</a>
            <a href="https://gist.github.com/806992#file_gistfile1.txt" style="float:right;margin-right:10px;color:#666">gistfile1.txt</a>
            <a href="https://gist.github.com/806992">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>La primera línea la he dejado aposta, ya que es la información que ngrep añade acerca del origen y destino del paquete. El problema es que el REGISTER se manda a la IP obtenida como resultado de una consulta DNS de tipo A, <strong>el cliente SIP de Gingerbread no hace consultas DNS SRV</strong>. Si a día de hoy alguien saca un cliente de correo que no consulta los registros MX sería lanzado a los tiburones, pero parece que en el caso de SIP todo vale, en fín.</p>
<p>Aun siendo casi inusable para mí he añadido un <em>outbound proxy</em> para que solo hiciera la consulta de tipo A. Y así ha quedado el REGISTER:</p>
<div id="gist-806995" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'>U +0.085305 192.168.99.36:60583 -&gt; 81.23.228.146:5060</div><div class='line' id='LC2'>REGISTER sip:sip2sip.info:5060;maddr=node03.dns-hosting.info SIP/2.0</div><div class='line' id='LC3'>Call-ID: 2886516c9522d3e8f60702067e35e954@192.168.99.36</div><div class='line' id='LC4'>CSeq: 3404 REGISTER</div><div class='line' id='LC5'>From: &quot;saghul&quot; &lt;sip:saghul@sip2sip.info:5060&gt;;tag=1294656353</div><div class='line' id='LC6'>To: &quot;saghul&quot; &lt;sip:saghul@sip2sip.info:5060&gt;</div><div class='line' id='LC7'>Via: SIP/2.0/UDP 192.168.99.36:60583;branch=z9hG4bKfbf000b5535dc024e1bdaf7953e1d070333939;rport</div><div class='line' id='LC8'>Max-Forwards: 70</div><div class='line' id='LC9'>User-Agent: SIPAUA/0.1.001</div><div class='line' id='LC10'>Contact: &quot;saghul&quot; &lt;sip:saghul@192.168.99.36:60583;transport=udp&gt;</div><div class='line' id='LC11'>Expires: 3600</div><div class='line' id='LC12'>Authorization: Digest username=&quot;saghul&quot;,realm=&quot;sip2sip.info&quot;,nonce=&quot;4d489674bb8d20a695c6d425a4460893028cddb4&quot;,uri=&quot;sip:sip2sip.info:5060;maddr=node03.dns-hosting.info&quot;,response=&quot;xxxxx&quot;</div><div class='line' id='LC13'>Content-Length: 0</div><div class='line' id='LC14'><br/></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/806995/1c547695fd79dfc36f3f9fe495800086b06626f2/gistfile1.txt" style="float:right;">view raw</a>
            <a href="https://gist.github.com/806995#file_gistfile1.txt" style="float:right;margin-right:10px;color:#666">gistfile1.txt</a>
            <a href="https://gist.github.com/806995">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>¿Y ese <em>maddr</em>? Es una forma <em>deprecated</em> de forzar una ruta para el mensaje en cuestión. Veamos qué dice <a class="vt-p" href="https://www.ietf.org/rfc/rfc3261.txt" target="_blank">la biblia</a> al respecto:</p>
<blockquote><p>The maddr field has been used as a simple form of loose source routing.  It allows a URI to specify a proxy that must be traversed en-route to the destination.  Continuing to use the maddr parameter this way is strongly discouraged (the mechanisms that enable it are deprecated). Implementations should instead use the Route mechanism described in this document, establishing a pre-existing route set if necessary (see Section 8.1.1.1).  This provides a full URI to describe the node to be traversed.</p></blockquote>
<p>Vamos, que ya en el 2002, cuando se publicó el 3261 maddr estaba obsoleto. Pero aun así la última versión de Android lo incluye. A tope con el SIP.</p>
<p>Hay más: si deseleccionamos la opción de registrarnos es de suponer que se genere un REGISTER eliminando nuestro <em>binding</em>, ¿no? Pues no.</p>
<p>Pasemos al INVITE. No he enredado mucho porque llegado este punto me encontraba demasiado cabreado, así que he hecho lo posible por hacer una llamada, pero no ha sido fácil. En la plataforma <a class="vt-p" href="http://sip2sip.info" target="_blank">sip2sip.info</a> al llamar al <em>3333@sip2sip.info</em> se sobrescribe la parte del host para mandar el <em>request</em> a otro servidor, pero al tener el atributo maddr OpenSIPS se hace la picha un lío y no sabe muy bien qué hacer. -1 para OpenSIPS en esta.</p>
<p>En concreto se trata de un bug no resuelto que podéis consultar <a class="vt-p" href="http://sourceforge.net/tracker/?func=detail&amp;atid=1086410&amp;aid=2914149&amp;group_id=232389" target="_blank">aquí</a>. Para solucionarlo he reescrito el RURI eliminando todos los parámetros de la URI en caso de que se encuentre maddr:</p>
<pre>if($(ru{uri.maddr}) != "") {
    $ru = "sip:" + $rU + "@" + $rd;
}</pre>
<p>Es una cerdada, pero ha servido para poder hacer una llamda de prueba. Milagrosamente ha funcionado.</p>
<p><strong>Conclusión</strong></p>
<p>El cliente SIP de Android 2.3 <strong>no funciona</strong>. Puede funcionar en entornos muy simples, pero en nada que podamos considerar serio. Creo que no debería haber sido incluido en Android hasta estar más maduro, ya tenemos clientes SIP que funcionan en Android, como <a class="vt-p" href="http://www.cyrket.com/p/android/com.bria.voip/" target="_blank">Bria</a>, <a class="vt-p" href="http://www.cyrket.com/p/android/org.sipdroid.sipua/" target="_blank">SIPDroid</a> o <a class="vt-p" href="http://www.cyrket.com/p/android/com.csipsimple/" target="_blank">CSipSimple</a>. Para tener un cliente tan mediocre mejor no tener nada. Suena severo, pero la primera impresión es importante y en mi caso es nefasta, así que el Nexus One volverá al cajón hasta que otra noche que me aburra lo saque para ver si ha mejorado algo.</p>
<p>PD: La foto la he tomado prestada de <a class="vt-p" href="http://www.elandroidelibre.com/" target="_blank">El Androide Libre</a>, me daba algo de pereza sacar el screenshot <img src='http://saghul.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://saghul.net/blog/2011/02/02/analizando-el-cliente-sip-de-android-2-3-gingerbread/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sobre Android Gingerbread y su API SIP</title>
		<link>http://saghul.net/blog/2010/12/06/sobre-andoid-gingerbread-y-su-api-sip/</link>
		<comments>http://saghul.net/blog/2010/12/06/sobre-andoid-gingerbread-y-su-api-sip/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 21:17:05 +0000</pubDate>
		<dc:creator>saghul</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[VoIP]]></category>

		<guid isPermaLink="false">http://saghul.net/blog/?p=1265</guid>
		<description><![CDATA[Hoy dandome una vuelta por mis RSS me he encontrado los los posts en SinoLogic y VoIP Novatos comentando que la nueva versión de Android, 2.3 o Gingerbread, incluye una API para desarrollar aplicaciones VoIP basadas en SIP. La verdad es que me he quedado bastante sorprendido, así que lo primero que he hecho ha [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy dandome una vuelta por mis RSS me he encontrado los los posts en <a class="vt-p" href="http://www.sinologic.net/blog/2010-12/android-2-3-gingerbread-incluye-api-para-sipvoip/" target="_blank">SinoLogic</a> y <a class="vt-p" href="http://www.voipnovatos.es/item/2010/12/el-nexus-s-de-google-traer-en-gingerbread-sip-de-forma-nativa" target="_blank">VoIP Novatos</a> comentando que la nueva versión de Android, 2.3 o <em>Gingerbread</em>, incluye una API para desarrollar aplicaciones VoIP basadas en SIP.</p>
<p>La verdad es que me he quedado bastante sorprendido, así que lo primero que he hecho ha sido echar un vistazo a la <a class="vt-p" href="http://developer.android.com/sdk/android-2.3.html" target="_blank">documentación</a>. Pero como dijo el Señor Lobo:</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/M-3kujDVQW0?fs=1&amp;hl=en_US" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/M-3kujDVQW0?fs=1&amp;hl=en_US" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Tras un paseo rápido por el API me he quedado bastante decepcionado. Parece muy básica y solo permite implementar llamadas de audio. Nada de mensajería. Nada de presencia.</p>
<p>Además, mirando la documentación de <a class="vt-p" href="http://developer.android.com/reference/android/net/sip/SipSession.State.html" target="_blank">SipSession</a>, nos encontramos con esta perla:</p>
<blockquote><p>Defines SIP session states, such as &#8220;registering&#8221;, &#8220;outgoing call&#8221;, and &#8220;in call&#8221;.</p></blockquote>
<p>¿Cómo? ¿Desde cuando usa sesión puede estar <em>&#8220;registering&#8221;</em>? Vale que quieran que el API sea sencillo, pero el registro y una sesión SIP no están para nada relacionados.</p>
<p>Supongo que le irán añadiendo features, y tal vez en Android 3.0 mejore&#8230; De momento me quedo con <a class="vt-p" href="http://www.counterpath.com/bria-android-edition.html" target="_blank">Bria</a> (tuve la suerte de ser betatester) y <a class="vt-p" href="http://code.google.com/p/csipsimple/" target="_blank">cSipSimple</a> en Android.</p>
<p>Veremos que nos depara el futuro <img src='http://saghul.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://saghul.net/blog/2010/12/06/sobre-andoid-gingerbread-y-su-api-sip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jugando con Python en Android</title>
		<link>http://saghul.net/blog/2010/03/20/jugando-con-python-en-android/</link>
		<comments>http://saghul.net/blog/2010/03/20/jugando-con-python-en-android/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 18:18:43 +0000</pubDate>
		<dc:creator>saghul</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[ASE]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://saghul.net/blog/?p=1108</guid>
		<description><![CDATA[Prácticamente todo lo que hay para Android esta hecho en Java, pero para los que nos dejó de molar hay alternativa: Android Scripting Environment. ASE es una aplicación de Google gracias a la cual podemos instalar diversos lenguajes de scripting como Python, Perl, Lua, etc&#8230; Hasta ahora parece que la tenían un poco abandonada, pero [...]]]></description>
			<content:encoded><![CDATA[<p>Prácticamente todo lo que hay para Android esta hecho en Java, pero para los que nos dejó de molar hay alternativa: <a href="http://code.google.com/p/android-scripting/" target="_blank">Android Scripting Environment</a>.</p>
<p>ASE es una aplicación de Google gracias a la cual podemos instalar diversos lenguajes de scripting como Python, Perl, Lua, etc&#8230; Hasta ahora parece que la tenían un poco abandonada, pero han sacado dos versiones en la última semana, y por fin funciona sin tener que hacer nada a mano <img src='http://saghul.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Para instalarla basta con acceder a la web y <a href="http://code.google.com/p/android-scripting/downloads/list" target="_blank">bajarse el apk</a>. Una vez instalamos la aplicación nos da la opción de instalar los diversos intérpretes, así que escogemos Python <img src='http://saghul.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Además del propio intérprete se instalan varios scripts de demostración para empezar a jugar.</p>
<p>Happy coding!</p>
<p style="text-align: center; "><a href="http://saghul.net/blog/wp-content/uploads/2010/03/4448535314_8f4d1998ca_o.jpg"><img class="size-medium wp-image-1109 aligncenter" title="4448535314_8f4d1998ca_o" src="http://saghul.net/blog/wp-content/uploads/2010/03/4448535314_8f4d1998ca_o-180x300.jpg" alt="4448535314_8f4d1998ca_o" width="180" height="300" /></a></p>
<p style="text-align: center; "><a href="http://saghul.net/blog/wp-content/uploads/2010/03/4447762215_cc5b507710_o.jpg"><img class="size-medium wp-image-1110 aligncenter" title="4447762215_cc5b507710_o" src="http://saghul.net/blog/wp-content/uploads/2010/03/4447762215_cc5b507710_o-180x300.jpg" alt="4447762215_cc5b507710_o" width="180" height="300" /></a></p>
<p style="text-align: center; "><a href="http://saghul.net/blog/wp-content/uploads/2010/03/4448540138_4649853595_o.jpg"><img class="size-medium wp-image-1111 aligncenter" title="4448540138_4649853595_o" src="http://saghul.net/blog/wp-content/uploads/2010/03/4448540138_4649853595_o-180x300.jpg" alt="4448540138_4649853595_o" width="180" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://saghul.net/blog/2010/03/20/jugando-con-python-en-android/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Undervolted Kernel: ahorrando batería en Android</title>
		<link>http://saghul.net/blog/2010/02/26/undervolted-kernel-ahorrando-bateria-en-android/</link>
		<comments>http://saghul.net/blog/2010/02/26/undervolted-kernel-ahorrando-bateria-en-android/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 08:25:54 +0000</pubDate>
		<dc:creator>saghul</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[NexusOne]]></category>

		<guid isPermaLink="false">http://saghul.net/blog/?p=1088</guid>
		<description><![CDATA[Una de las cosas que a mucha gente le preocupa sobre los teléfonos móviles es la duración de la batería. Teniendo en cuenta que cada vez son capaces de realizar más funciones, las baterías duran menos, aunque éstas hayan mejorado mucho en los últimos años. Para mejorar la duración de la batería en nuestro terminal [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las cosas que a mucha gente le preocupa sobre los teléfonos móviles es la duración de la batería. Teniendo en cuenta que cada vez son capaces de realizar más funciones, las baterías duran menos, aunque éstas hayan mejorado mucho en los últimos años.</p>
<p>Para mejorar la duración de la batería en nuestro terminal Android vamos a ver cómo instalar un <em>undervolted kernel</em> en un Nexus One (si dispones de otro terminal Android busca un undervolted kernel adaptado a él).</p>
<p>El concepto de un <em>undervolted kernel</em> es sencillo: consiste en mantener el procesador trabajando a la velocidad original, pero utilizando menos voltaje para ello. Al utilizar menos voltaje, obtendremos una mayor duración de la batería. Esto no es posible con todos los terminales, pero con el Nexus One al menos si, así que ¡vamos a ello!</p>
<p>Necesitamos tener <a href="http://saghul.net/blog/2010/01/31/root-y-custom-rom-en-el-nexus-one/" target="_blank">instalada la ROM</a> CyanogenMod 5.0.3.1, y los pasos a seguir son sencillos: descargar el kernel, flashearlo desde fastboot, reiniciar el terminal y habilitar el módulo de WiFi:</p>
<p><code>wget http://kmobs.scepterr.info/kernels/zImage33UV.zip<br />
unzip zImage33UV.zip -d uvkernel<br />
(reiniciamos el androide en modo fastboot)<br />
./fastboot flash zimage uvkernel/zImage33UV<br />
./fastboot reboot<br />
(una vez ha arrancado normal)<br />
./adb remount<br />
./adb push uvkernel/b*.ko /system/lib/modules<br />
./adb reboot</code></p>
<p>Happy undervolting!</p>
]]></content:encoded>
			<wfw:commentRss>http://saghul.net/blog/2010/02/26/undervolted-kernel-ahorrando-bateria-en-android/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Root y custom ROM en el Nexus One</title>
		<link>http://saghul.net/blog/2010/01/31/root-y-custom-rom-en-el-nexus-one/</link>
		<comments>http://saghul.net/blog/2010/01/31/root-y-custom-rom-en-el-nexus-one/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 20:40:59 +0000</pubDate>
		<dc:creator>saghul</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Nexus One]]></category>

		<guid isPermaLink="false">http://saghul.net/blog/?p=1056</guid>
		<description><![CDATA[Muy buenas amigos del androide, Hoy haremos el Nexus One un poco menos &#8220;aburrido&#8221; El Market tiene muchas aplicaciones, sí, pero no somos root, no podemos hacer tethering, ni tener OpenVPN&#8230; ¡asi que toca flashear! Para poder tener una mayor libertado sobre nuestro terminal y poder flashear cualquier ROM primero flashearemos una recovery image, de [...]]]></description>
			<content:encoded><![CDATA[<p>Muy buenas amigos del androide,</p>
<p>Hoy haremos el Nexus One un poco menos &#8220;aburrido&#8221; <img src='http://saghul.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  El Market tiene muchas aplicaciones, sí, pero no somos root, no podemos hacer tethering, ni tener OpenVPN&#8230; ¡asi que toca flashear!</p>
<p>Para poder tener una mayor libertado sobre nuestro terminal y poder flashear cualquier ROM primero flashearemos una <em>recovery image</em>, de manera que podamos hacer una copia de seguridad de todo el firmware y jugar sobre seguro. El asunto es que para poder instalar esta recovery image será necesario desbloquear el bootloader, algo que invalida la garantía, así que si no os importa ese pequeño detalle seguimos adelante. <img src='http://saghul.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>En este post haremos lo siguiente: desbloquear el bootloader, flasear la ROM CyanogenMod 5.0 beta3 y por ultimo flashear una nueva imagen del kernel que permite direccionar más RAM, de manera que el terminal se movera mas &#8216;fresco&#8217;. No será necesario hacer nada especial para hacernos root en el terminal, ya que la ROM que vamos a instalar ya lo trae de serie. ¡Vamos al lio!</p>
<p><strong>Descargar el software necesario</strong></p>
<ul>
<li><a href="http://www.romraid.com/paul/fastboot.zip" target="_blank">Fastboot</a></li>
<li><a href="http://rapidshare.com/files/330696493/recovery-RA-nexus-v1.5.3.img" target="_blank">Recovery Image</a></li>
<li><a href="http://n0rp.chemlab.org/android/nexus/experimental/update-cm-5.0-N1-beta3-signed.zip">ROM CyanogenMod 5.0 beta3</a></li>
<li><a href="http://www.mediafire.com/file/25jmynjjnmz/gapps-passion-ERD79-signed.zip" target="_blank">Aplicaciones de Google</a></li>
<li><a href="http://n0rp.chemlab.org/android/nexus/testing/zImage-2.6.29.6-highmem" target="_blank">Kernel 2.6.29.6-highmem</a></li>
</ul>
<p><strong>Desbloquear el bootloader</strong></p>
<p>Con el terminal apagado, mantenemos pulsado el trackball y pulsamos el boton de encendido para entrar en el menu del bootloader. Una vez alli utilizaremos la herramienta fastboot para desbloquear el bootloader:</p>
<p><code>./fastboot-linux oem unlock</code></p>
<p>Al ejecutar el comando nos saldra una ventana advirtiendonos de las consecuencias. El Capitán Obvio nos ordena que aceptemos.</p>
<p>El zip de fastboot tambien contiene los binarios para Windows y Mac, usad el que corresponda.</p>
<p><strong>Instalar el Recovery Image</strong></p>
<p>Flasheamos la imagen de recovery con fastboot (tenemos que estar en el menu del bootloader igual que antes):</p>
<p><code>./fastboot-linux devices (nos aseguramos de que nuestro androide es detectado)<br />
./fastboot-linux flash recovery recovery-RA-nexus-v1.5.3.img</code></p>
<p><strong>Instalar la ROM CyanogenMod 5.0 beta3</strong></p>
<p>Primero tenemos que copiar los ficheros zip de la ROM de Cyanogen y las aplicaciones de Google a la raiz de la tarjeta SD.</p>
<p>Llegado este punto lo mejor es hacer un backup completo del terminal, seleccionando la opción &#8220;Nand backup&#8221;.</p>
<p>Antes de proceder a flashear nada es necesario que hagamos un <em>wipe</em> del terminal (al loro, que se borra TODO). Para ello iniciamos el terminal en el menu del bootloader y seleccionamos la opción recovery y luego &#8220;Wipe data/factory reset&#8221;.</p>
<p>Una vez hecho el wipe podemos proseguir a flashear, primero la ROM de Cyanogen y luego las aplicaciones de Google. Para ello utilizaremos la opción &#8220;Flash zip from sdcard&#8221;.</p>
<p><strong>¡Más RAM por favor!</strong></p>
<p>El Nexus One tiene mucha RAM, pero nunca hay demasiada RAM <img src='http://saghul.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  asi que vamos a instalar un nuevo kernel con soporte para direccionar más memoria, de manera que podamos tener más aplicaciones abiertas simultánemente sin que se nos ralentice el  sistema.</p>
<p><code>./fastboot-linux flash zimage zImage-2.6.29.6-highmem</code></p>
<p>Yo he notado muchísima diferencia, así que os lo recomiendo.</p>
<p>Bueno, esto es todo por hoy, en el proximo post hablaremos de VoIP en Android, stay tuned!</p>
<p style="text-align: center;"><img class="size-full wp-image-1058 aligncenter" title="4320083024_b298b49378_m" src="http://saghul.net/blog/wp-content/uploads/2010/01/4320083024_b298b49378_m.jpg" alt="4320083024_b298b49378_m" width="180" height="240" /></p>
<p>Fuentes:</p>
<p>http://android.modaco.com/content/google-nexus-one-nexusone-modaco-com/299241/05-jan-1-5-3-ra-nexus-recovery-image/</p>
<p>http://android.modaco.com/content/google-nexus-one-nexusone-modaco-com/299078/how-to-unlock-the-bootloader-on-your-nexus-one/</p>
<p>http://n0rp.chemlab.org/android/nexus/testing/</p>
<p>http://forum.xda-developers.com/showthread.php?t=623496</p>
]]></content:encoded>
			<wfw:commentRss>http://saghul.net/blog/2010/01/31/root-y-custom-rom-en-el-nexus-one/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Nexus One: primeras impresiones</title>
		<link>http://saghul.net/blog/2010/01/24/nexus-one-primeras-impresiones/</link>
		<comments>http://saghul.net/blog/2010/01/24/nexus-one-primeras-impresiones/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 14:05:58 +0000</pubDate>
		<dc:creator>saghul</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Nexus One]]></category>

		<guid isPermaLink="false">http://saghul.net/blog/?p=1040</guid>
		<description><![CDATA[Como algunos sabéis por Twitter, aprovechando la jugada de la ITEXPO me he agennciado el juguete de moda: un Nexus One. Tras unos días jugando con el voy a comentar un poco el feeling que he tenido en diversos aspectos. Es obvio que el Nexus One ha sido diseñado para competir con el iPhone, y [...]]]></description>
			<content:encoded><![CDATA[<p>Como algunos sabéis por <a href="http://twitter.com/saghul" target="_blank">Twitter</a>, aprovechando la jugada de la <a href="http://www.tmcnet.com/voip/conference/" target="_blank">ITEXPO</a> me he agennciado el juguete de moda: un Nexus One. Tras unos días <em>jugando</em> con el voy a comentar un poco el <em>feeling</em> que he tenido en diversos aspectos. Es obvio que el Nexus One ha sido diseñado para competir con el iPhone, y como casualmente también tengo uno, no puedo evitar compararlos <img src='http://saghul.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Proceso de compra</strong></p>
<p>Un 10 para Google. Hice el pedido un domingo por la tarde y el martes a las 9 de la mañana ya tenía el jueguete. Puedes seguir vía web por dónde va tu paquete, joder ¡solo falta el DNI de las personas que lo manipulan! ¡Y encima con mi nombre inscrito detrás! Me lo trajeron sin problemas al hotel, así que si váis de viaje a Estados Unidos por más de dos días no dudéis ni un segundo <img src='http://saghul.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Unboxing y primer contacto</strong></p>
<p>Al abrir la caja te encuentras con un embalaje bastante similar el iPhone, sencillo, sin manual. Cuando te compras un Nokia u otro móvil te viene con un super-manual de 100 páginas que no se lee nadie. Cuando te compras un iPhone o un Nexus One no viene manual. Porque no hace falta. Es tan fácil de usar que no necesitas manual, y eso aunque a alguno le parezca un <em>bug</em> es  una <em>feature</em>.</p>
<p>El feeling del terminal es muy bueno: no pesa, parece consistente y robusto&#8230; pero le falta algo. Es dificil de explicar, pero podría decirse que veo el Nexus One como diseñado por un ingeniero mientras que el iPhone esta diseñado por alguien con más arte, por decirlo de alguna manera. No obstante, no echarás de menos tu iPhone, créeme.</p>
<p><strong>Pantalla</strong></p>
<p>Aunque la pantalla del N1 es solo 0,2 pulgadas más grande que la de el iPhone da la sensación de ser mucho más grande. Las fuentes son muy claras (de hecho es la que uso en mi desktop, ttf-droid) y se puede visualizar mucha más información que en el iPhone. Parece como si tuviera el doble de resolución o algo. :-O</p>
<p><strong>Aplicaciones</strong></p>
<p>Queridos señores de Apple, más vale que el iPhone OS 4.0 tenga multi-tasking, porque sino&#8230; El hardware del N1 es muy potente (procesador a 1GHz y 512MB de RAM) por lo que puedes tener muchas aplicaciones abiertas a la vez y ni te enteras. Personalmente siempre tengo un softphone SIP y un cliente de Jabber funcionando, y no tiene sentido abrir las aplicaciones solo cuando tu quieras hacer una llamada o mandar un mensaje, tienes que poder recibir llamadas&#8230;</p>
<p><strong>&#8220;Apertura&#8221;</strong></p>
<p>Vale, el iPhone funciona con un sistema operativo propietario y el N1 con uno libre, pero me he encontrado con las mismas trabas en ambos casos: si quieres hacer cosas <em>diferentes</em> con tu N1 tienes que ser root, y para eso tienes que realizar un proceso (habrá otro post <img src='http://saghul.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) que invalida la garantía. Lo mismo que hacer el famoso <em>jailbreak</em>, así que no por utilizar un sistema operativo libre tienes todo el control sobre el terminal&#8230; ¿got root?</p>
<p><strong>Concluyendo&#8230;</strong></p>
<p>No os rallo más, pero si tenéis la oportunidad de haceros con uno (566$ libre) cogedlo, además ¡ser un <em>early adopter </em>siempre<em> </em>mola! <img src='http://saghul.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  He dejado unas fotos <a href="http://www.flickr.com/photos/saghul/sets/72157623273645670/" target="_blank">aquí en Flickr</a>.</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/saghul/sets/72157623273645670/"><img class="size-full wp-image-1041 aligncenter" title="4299794413_7ffcaf1c1e_m" src="http://saghul.net/blog/wp-content/uploads/2010/01/4299794413_7ffcaf1c1e_m.jpg" alt="4299794413_7ffcaf1c1e_m" width="240" height="161" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://saghul.net/blog/2010/01/24/nexus-one-primeras-impresiones/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>SIPdroid: cliente SIP para Android</title>
		<link>http://saghul.net/blog/2009/06/14/sipdroid-cliente-sip-para-android/</link>
		<comments>http://saghul.net/blog/2009/06/14/sipdroid-cliente-sip-para-android/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 23:21:13 +0000</pubDate>
		<dc:creator>saghul</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[VoIP]]></category>

		<guid isPermaLink="false">http://saghul.net/blog/?p=919</guid>
		<description><![CDATA[Parece que ya tenemos un softphone SIP para Android: SIPdroid. Está hecho en Java utilizando las librerías MjSIP. De momento es solo una beta, pero los afortunados poseedores un teléfono con Android podéis probarlo siguiendo éstas instrucciones. Si alguno lo probáis ya nos contaréis a los que estamos esperando a comprarnos uno&#8230;]]></description>
			<content:encoded><![CDATA[<p>Parece que ya tenemos un softphone SIP para Android: <a href="http://sipdroid.org/" target="_blank">SIPdroid</a>. Está hecho en Java utilizando las librerías <a href="http://www.mjsip.org/" target="_blank">MjSIP</a>.</p>
<p>De momento es solo una beta, pero los afortunados poseedores un teléfono con Android podéis probarlo siguiendo <a href="http://forum.xda-developers.com/showthread.php?t=516861" target="_blank">éstas instrucciones.</a></p>
<p>Si alguno lo probáis ya nos contaréis a los que estamos esperando a comprarnos uno&#8230; <img src='http://saghul.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="text-align: center;"><a href="http://saghul.net/blog/wp-content/uploads/2009/06/sipd02.png"><img class="size-full wp-image-921 aligncenter" title="sipd02" src="http://saghul.net/blog/wp-content/uploads/2009/06/sipd02.png" alt="" width="200" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://saghul.net/blog/2009/06/14/sipdroid-cliente-sip-para-android/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

