{"id":1471,"date":"2014-09-13T00:49:06","date_gmt":"2014-09-12T22:49:06","guid":{"rendered":"http:\/\/blog.rastersoft.com\/?p=1471"},"modified":"2014-09-13T00:49:06","modified_gmt":"2014-09-12T22:49:06","slug":"nueva-tablet-para-cacharrear","status":"publish","type":"post","link":"https:\/\/blog.rastersoft.com\/?p=1471","title":{"rendered":"Nueva tablet para cacharrear"},"content":{"rendered":"<p><strong>Actualizado:<\/strong> he retocado algunos detalles de la l\u00ednea de configuraci\u00f3n que eran incorrectos. Al escribir la entrada cort\u00e9 y pegu\u00e9 una l\u00ednea que no era.<\/p>\n<p>Un colega me regal\u00f3 una vieja tablet que no funcionaba para aprovechar piezas, pero como encend\u00eda y llegaba a hacer algo, decid\u00ed ver si pod\u00eda resucitarla (s\u00ed, la pantalla est\u00e1 rota; afortunadamente s\u00f3lo es el pl\u00e1stico, el LCD est\u00e1 en perfecto estado).<\/p>\n<p><a href=\"https:\/\/blog.rastersoft.com\/wp-content\/uploads\/2014\/09\/tablet.jpg\" rel=\"lightbox-0\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1472 size-medium\" src=\"https:\/\/blog.rastersoft.com\/wp-content\/uploads\/2014\/09\/tablet-300x201.jpg\" alt=\"tablet\" width=\"300\" height=\"201\" \/><\/a><\/p>\n<p>El primer intento consisti\u00f3 en encenderla pulsando a la vez el bot\u00f3n de encendido y el de subir volumen para entrar en modo de rescate, a ver si consegu\u00eda restaurar el sistema Android. Aparentemente funcion\u00f3, pero al intentar arrancar se volv\u00eda a quedar a la mitad, por lo que empec\u00e9 a sospechar que el problema estaba en la memoria flash interna, pero para demostrarlo necesitaba acceder al sistema de alguna manera.<\/p>\n<p>Echando un vistazo por dentro encontr\u00e9 que hab\u00eda cuatro pads en una esquina marcados como <em>gnd, tx, rx<\/em> y <em>3,3v<\/em>, por lo que sospech\u00e9 que podr\u00eda tratarse de un puerto serie de depuraci\u00f3n. Estos puertos serie son bastante habituales en aparatos de consumo, pero tienen el inconveniente de que trabajan con niveles TTL (0 voltios para un cero, o 5 o 3,3 voltios para un uno) en lugar de las tensiones est\u00e1ndar del RS-232 (3\/15 voltios para un cero, -3\/-15 voltios para un uno). Existen algunos <a href=\"http:\/\/www.adafruit.com\/products\/954\" target=\"_blank\">conversores de serie TTL a USB<\/a>, pero por diversos motivos prefer\u00ed hacerme una placa con un <a href=\"http:\/\/datasheets.maximintegrated.com\/en\/ds\/MAX3222-MAX3241.pdf\" target=\"_blank\">MAX 3232<\/a> y un conversor RS-232 a USB normal y corriente. El MAX3232 es un chip similar al conocido MAX232, que convierte los niveles entre un puerto serie TTL y uno RS-232, pero con la ventaja de admitir tensiones de alimentaci\u00f3n entre 3 y 5,5 voltios (el MAX232 est\u00e1 limitado a 5 voltios). Con este chip pude conectar la tablet a mi PC (pulsa en la imagen para ampliar).<\/p>\n<p><a href=\"https:\/\/blog.rastersoft.com\/wp-content\/uploads\/2014\/09\/tablet_conversor.jpg\" rel=\"lightbox-1\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1475\" src=\"https:\/\/blog.rastersoft.com\/wp-content\/uploads\/2014\/09\/tablet_conversor-300x212.jpg\" alt=\"tablet_conversor\" width=\"300\" height=\"212\" \/><\/a><\/p>\n<p>Un detalle importante es que fue necesario soldar dos puentes para activar el puerto serie. Est\u00e1n marcados con un c\u00edrculo rojo en la siguiente fotograf\u00eda (pulsa en la imagen para ampliar):<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/blog.rastersoft.com\/wp-content\/uploads\/2014\/09\/tablet_serial.jpg\" rel=\"lightbox-2\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1476\" src=\"https:\/\/blog.rastersoft.com\/wp-content\/uploads\/2014\/09\/tablet_serial-300x225.jpg\" alt=\"tablet_serial\" width=\"300\" height=\"225\" \/><\/a><\/p>\n<p>Una vez hechos los puentes y lanzado el <a href=\"http:\/\/en.wikipedia.org\/wiki\/Minicom\" target=\"_blank\">minicom<\/a> con el puerto serie configurado a 115.200 8N1, apareci\u00f3 el texto de arranque. Ah\u00ed pude ver que, como esperaba, primero cargaba el <a href=\"http:\/\/en.wikipedia.org\/wiki\/Das_U-Boot\" target=\"_blank\">U-Boot<\/a>, y \u00e9ste cargaba el n\u00facleo Linux de Android, siguiendo el proceso habitual. Sin embargo, al llegar a cierto punto empezaron a salir errores de lectura de la flash, tal y como tem\u00eda. Sin embargo, decid\u00ed probar si pod\u00eda conseguir acceso al U-Boot para cambiar las opciones de arranque, y s\u00ed, fu\u00e9 posible: pulsando la tecla\u00a0<em>Return<\/em> en el terminal varias veces en el momento de encender la tablet detiene el proceso de arranque y ofrece un prompt en el que se puede jugar con muchas opciones.<\/p>\n<p>Con el comando <em>print<\/em> ech\u00e9 un vistazo a las variables de entorno, y encontr\u00e9 la que me interesaba: la que contiene el par\u00e1metro <em>bootargs<\/em>. Esta variable define los par\u00e1metros de arranque que se le pasan al n\u00facleo al arrancar, tales como la partici\u00f3n con el sistema de ficheros ra\u00edz y otras. En el caso de esta tablet, sin embargo, el proceso es ligeramente oscuro, pues lo que se hace es llamar a un <em>script<\/em> que define en cada momento la variable <em>bootargs<\/em> en funci\u00f3n de lo que sea necesario. En concreto, este es el\u00a0<em>script<\/em> tal y como viene definido:<\/p>\n<div class=\"mycode\">\n<pre class=\"mycode\">set-rfs-ram-ota=setenv bootargs mem=${memtotal} root=\/dev\/ram0 rw initrd=${load-addr-initrd},0x${filesize} console=ttyS0,115200n8 init=\/init androidboot.serialno=${androidboot.serialno}<\/pre>\n<\/div>\n<p>Para hacer una primera prueba introduje la tarjeta de memoria de mi otra tablet, la cual ya tiene un sistema Debian completo, junto con mi <a href=\"http:\/\/www.rastersoft.com\/programas\/tabletwm_es.html\" target=\"_blank\">gestor de ventanas para tablets<\/a>, y modifiqu\u00e9 la entrada anterior con:<\/p>\n<div class=\"mycode\">\n<pre class=\"mycode\">setenv set-rfs-ram-ota setenv bootargs mem=${memtotal} root=\/dev\/mmcblk0p2 rw rootdelay=1 console=ttyS0,115200n8<\/pre>\n<\/div>\n<p>El dispositivo <em>\/dev\/mmcblk0p2<\/em> es la partici\u00f3n segunda de la tarjeta microSD, que es donde tengo el sistema Debian. Al principio le a\u00f1ad\u00ed un <em>rootdelay=7<\/em> para retrasar siete segundos el montaje de la partici\u00f3n ra\u00edz, pensando que tardar\u00eda un poco en detectar la tarjeta, pero al final no es necesario. En cambio, si se quiere arrancar desde una partici\u00f3n en un disco USB, es muy probable que dicha opci\u00f3n sea necesaria para darle tiempo al n\u00facleo a detectar los dispositivos.<\/p>\n<p>Y con\u00a0 esto la tablet arranc\u00f3 perfectamente (pulsa en la imagen para ampliar):<\/p>\n<p><a href=\"https:\/\/blog.rastersoft.com\/wp-content\/uploads\/2014\/09\/tablet_booted.jpg\" rel=\"lightbox-3\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1480\" src=\"https:\/\/blog.rastersoft.com\/wp-content\/uploads\/2014\/09\/tablet_booted-300x225.jpg\" alt=\"tablet_booted\" width=\"300\" height=\"225\" \/><\/a><\/p>\n<p>Ahora voy a probar a compilar mi propio n\u00facleo y a intentar arrancarlo desde la tarjeta microSD.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Actualizado: he retocado algunos detalles de la l\u00ednea de configuraci\u00f3n que eran incorrectos. Al escribir la entrada cort\u00e9 y pegu\u00e9 una l\u00ednea que no era. Un colega me regal\u00f3 una vieja tablet que no funcionaba para aprovechar piezas, pero como encend\u00eda y llegaba a hacer algo, decid\u00ed ver si pod\u00eda resucitarla (s\u00ed, la pantalla est\u00e1 &hellip; <a href=\"https:\/\/blog.rastersoft.com\/?p=1471\" class=\"more-link\">Seguir leyendo <span class=\"screen-reader-text\">Nueva tablet para cacharrear<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,7],"tags":[],"class_list":["post-1471","post","type-post","status-publish","format-standard","hentry","category-cacharreo","category-tutoriales"],"_links":{"self":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/1471","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1471"}],"version-history":[{"count":0,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/1471\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1471"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1471"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1471"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}