Nexus 7

DVB-T en Nexus 7 Kernel: 3.1.10-g009b6d1 – Ver la TDT en tu tablet

Hace tiempo que un amigo de linux albacete (Thempra) comentó que había podido ver la TDT en su Nexus 7 y enseñó un video demostrándolo. Pues, como se suele decir “si culo veo, culo quiero”, en realidad no se si se suele decir, pero lo decía mi madre y a mi me vale como argumento.

Para poder hacerlo, se puede seguir el hilo de xda donde explican como ver la TDT en la Nexus 7, eso siempre y cuando tengamos el mismo kernel para el que están compilados los módulos que pone para descarga (Puedes comprobar el kernel en Ajustes/Información del tablet/Versión del kernel).

En mi caso, el kernel que tengo en la Nexus no es el mismo para el que han sido compilado los módulos del post de xda, sino que tengo el kernel 3.1.10-g009b6d1). Por lo tanto, para hacerlo funcionar será necesario compilar un kernel personalizado para la Nexus 7, en donde le demos soporte para los dispositivos de TDT (en inglés DVB-T) y compilar el módulo para el dispositivo que quiero probar desde fuera del kernel ya que no está incluido en el kernel. Lo primero que haré es compilar el módulo desde fuera del kernel y contra el kernel que se usa en la Nexus:

 

  • Descargamos el módulo del RTL2832U: “git clone https://github.com/ambrosa/DVB-Realtek-RTL2832U-2.2.2-10tuner-mod_kernel-3.0.0.git”
  • Editamos el Makefile: Cambiamos la variable KDIR, y la dejamos para que apunte a nuestro directorio del kernel, en mi caso se ve así: KDIR = /home/rex2k1/Proyectos/Nexus7/android_kernel_grouper
  • Compilamos: make ARCH=arm CROSS_COMPILE=arm-linux-androideabi- EXTRA_CFLAGS=-fno-pic
  • Si todo sale bien y tenías configurado el Android NDK y en el path, tendrás el módulo compilado: dvb-usb-rtl2832u.ko

 

Después de tener el módulo compilado, compilamos el kernel, y habrá que activar algunas opciones necesarias para darle soporte al kernel de dvb-t.

[wp_ad_camp_1]

Necesitamos activar como módulo (al final los he metido dentro del kernel porque me daban un error, si consigo arreglar el _GLOBAL_OFFSET_TABLE_ subieré los módulos):

  • dvb-core

Opción DVBCORE para ver DVB-T en Nexus 7

  • dvb-usb

Opción DVBUSB para ver DVB-T en Nexus 7

  • dvb-pll

Opción DVBPLL para ver DVB-T en Nexus 7

  • rc-core

Opción RCCORE para ver DVB-T en Nexus 7

Con estas opciones, si el kernel nos compila sin problema, tendremos los módulos para poder insertarlos en la nexus desde el terminal una vez lancemos nuestro kernel.

Por si alguien quiere probar el módulo que sí que he podido compilar y que en teoría ha cargado sin problemas, lo pongo para descarga:

Módulo para RTL2832U

 [wp_ad_camp_4]

 

 

 

nexus-7

Compilación Kernel Nexus 7

Como ya he dicho antes de la Nexus, Google pone al alcance de la gente todas las herramientas necesarias para poder manipular sus dispositivos, algunas de las cosas las pone por obligación (por temas de licencias como la GPL) y otras por interés propio ya que siempre acaban saliendo cosas mas que interesantes para sus dispositivos y seguramente ellos puedan nutrir futuras versiones de esas apariciones. Una de las cosas que he conseguido hacer es la compilación del kernel de linux para la Nexus, no aportaba nada nuevo, solo el hecho de que estaba compilado por mi. Por si hay algún interesado y para que no se me pasen los pasos para volverlo a hacer, esto es lo que he hecho:

[wp_ad_camp_4]

  • Descargamos el NDK de Android y lo descomprimimos en /opt/ y mete en el path la carpeta con las herramientas, en mi casó añadí: /opt/android-ndk-r8d/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86/
  • Descarga del repositorio del kernel del Nexus: “git clone https://github.com/drewis/android_kernel_grouper” y entramos en la carpeta creada.
  • Conectamos la Nexus al pc (estando encendida) y le cogemos el fichero de configuración: “adb pull /proc/config.gz” y lo descomprimimos “gunzip config.gz
  • Movemos el config para que lo coja el make: “mv config arch/arm/configs/nexus7_defconfig
  • Ahora pasamos a establecer la configuración de nuestra Nexus al kernel: “make nexus7_defconfig ARCH=arm CROSS_COMPILE=arm-linux-androideabi-
  • Ahora vamos a modificar lo que queramos del kernel: “make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-androideabi-
  • Y por último, compilamos el kernel: “make -j4 ARCH=arm CROSS_COMPILE=arm-linux-androideabi-” La j4 indica que use los 4 cores de la CPU (si los tiene), si no tienes claro si tienes o no mas de 1 core, no lo pongas.
  • Si todo ha salido bien, tendremos nuestro kernel modificado en arch/arm/boot, el fichero zImage.
  • Ahora toca descargarse la imagen de fábrica de nuestra Nexus: https://developers.google.com/android/nexus/images#nakasijop40d para así poder extraer el boot.img que contiene el kernel y el ramdisk.
  • Una vez bajada y descomprimida, veremos un zip, pues dentro tenemos varias imagenes que son las que se grabarán (recovery, boot, userdata y system). Sacamos el boot.img y lo reservamos
  • Ahora necesitamos una herramienta para separar el kernel del ramdisk, yo usé el split_bootimg.pl
  • Ahora lo separamos, llevamos el script donde hemos dejado el boot.img y lanzamos: “./split_bootimg.pl boot.img” y el script nos sacara 2 ficheros: boot.img-kernel y boot.img-ramdisk.gz
  • Ahora necesitaremos crear nuevamente el boot.img, pero en vez de usar el kernel que viene de serie pondremos nuestro nuevo y flamante kernel, para eso, necesitamos el mkbootimg.
  • Una vez tengamos el mkbootimg lanzamos la linea: “mkbootimg –kernel zImage –ramdisk boot.img-ramdisk.gz –cmdline “no_console_suspend=1 console=null” -o nuevoboot.img
  • Y ya tendremos el fichero nuevoboot.img que podremos lanzar directamente en la tablet por medio del fastboot o bien, lo renombramos como boot.img y lo metemos en el fichero oficial de Google para flashearlo como si de una ROM oficial se tratara. Yo mostraré como lo hice sin tener que flashear, para evitar, si nos hemos colado en alguna configuración, que no arranque la tablet.
  • Nos vamos al directorio donde descomprimimos el fastboot cuando desbloqueamos el bootloader , y nos copiamos alli el nuevoboot.img que hemos generado.
  • Apagamos la Nexus, arrancamos en modo bootloader (Vol – y power) y conectamos USB.
  • Lanzamos: “fastboot boot newboot.img” . En unos segundos, el fastboot le lanza la imagen nueva de arranque por el usb y la ejecuta para que se inicie y arranque con el nuevo kernel, así, al no flashear, si falla, basta con apagar y volver a encender la Nexus.

[wp_ad_camp_1]

Y si vamos a ajustes veremos nuestro nuevo kernel:

rps20130127_001408_904

nexus 7 root

Desbloqueo del bootloader de la Nexus 7

Hace poco que ha caído en mis manos una tablet de la gran G, la Nexus 7, es una pasada…todo un alarde de potencia y he de reconocer la suavidad frente a las tablets de los chinos, por buenas que puedan parecer, no hay color. Aunque de todo, lo mejor de los productos de Google son las actualizaciones y la entrega de prácticamente todo el sistema para que se le pueda meter mano y ampliar el ecosistema Android (en el fondo les interesa). Es como comprar un dispositivo de desarrolladores, te ofrecen todas las herramientas para programar, modificar, etc etc. Entre otras cosas, te ofrecen el repositorio del kernel y de la propia tablet te puedes sacar el config que hará funcionar un nuevo kernel en el dispositivo.

[wp_ad_camp_1]

Una de las primeras cosas que le hice a la Nexus fué abrir el bootloader, que permite trabajar por medio del fastboot con la tablet, para abrir el bootloader estos son los pasos (OJO se hará borrado completo de la tablet):

  • Revisar que la batería esté, como poco al 80%.
  • Descargar el sdk de android y descomprimirlo.
  • Activamos depuración usb, dentro de opciones de desarrollador. Por cierto, si tenemos actualizada la tablet a 4.2, las opciones de desarrollador han sido ocultadas, pero para activarlas, solo hay que ir ajustes / Información del tablet y pulsamos repetidas veces en “Numero de compilación”, tras casi 10 veces, pondrá algo del tipo “Ahora eres desarrollador” y podrás activar la depuración usb.
  • Apagamos la tablet
  • Encendemos la tablet manteniendo pulsados a la vez “Volumen -” y el “power”, tras varios segundos aparecerá el bootloader con el que trabajaremos.
  • Ahora nos vamos a la consola (doy por hecho que ya casi no quedará gente usando Windows xD) y buscamos la carpeta donde descomprimimos el sdk y nos metemos a la carpeta platform-tools, donde dentro veremos el fastboot
  • Ejecutamos: “./fastboot oem unlock” y en pantalla aceptamos.
  • Ahora se borrará por completo la tablet y lo normal es que se reinicie automáticamente, después de eso, veremos que tendremos un candado debajo del logo de Google al arrancar, eso es que ya está la tablet abierta para ser manipulada.

Una vez que tengamos hecho eso, cuando volvamos a arrancar en el fastboot podremos lanzarle muchos comandos para flashear, leer, etc etc.

[wp_ad_camp_4]

android

Modificación Baru X6-S (II)

Seguimos con el Baru TV BOX Android. Después de llevármelo un día a las reuniones semanales de Linux Albacete, decidí empezar a meterle mano al cacharro e hice la prueba para ver si conseguía algo mas que arrancarlo. Lo lógico parecía ir por la parte de del “RECOVER” que había en la placa (como se vio en el post primero de la modificación Baru X6-S), por lo que puse un clip entre los dos pines, apagué y encendí y ¡Bingo!:

Herramienta “recover-clip”:

rps20130120_212329

Y una vez arrancado (un par de segundos) quitamos el clip (yo al principio no lo quitaba y aunque aparece el dispositivo, no funciona) y con un lsusb podemos ver:

lsusbcaptura

Arriba aparece una linea en blanco, que buscando en Google, es el modo flash del chip RK2918 (Dispositivo 2207:290a). Una vez detectado, me decidí a empezar a realizar las lecturas con el software rk2918tools y todo funcionó a la perfección:

rkflashtools

En las primeras direcciones de memoria podemos extraer el mtd, que es ni mas ni menos que la tabla de particiones de la nand flash (en mi caso 4GB).

El mtd contiene un bloque de informacion en el que indica el inicio de la partición y el tamaño de ésta, suele venir de la manera : 0x0000200@0x000a0240(boot), en el que el primer número es el tamaño (200) en el ejemplo y el otro número la dirección del inicio (a0240) en este ejemplo. Luego, entre paréntesis indica la partición a la que corresponde, en este caso el boot.

Como se verá mas adelante, el mtd se puede modificar para poder probar roms de otros tamaños ya que a veces las roms tienen systems mucho mayores que el que trae por defecto.

De momento, lo que hice fue hacer una copia de cada una de las particiones que habia para evitar futuros desastres y para permitirme recuperar si flasheaba mal en algún caso (que lo hice en muchas ocasiones).

Para el backup use el rkflashtool de la siguiente manera:

rkflashtool r 0x000a0240 0x0000200 > boot.img

Ojo! Esto es solo un ejemplo y las direcciones cambiaran, para saber exactamente las direcciones del vuestro, podéis extraer el parameter que es lo primero que va en la memoria con:

rkflashtool r 0x00000000 0x00000200 > parameter

[wp_ad_camp_1]

Al acabar tendréis en el fichero parameter toda la información del mtd, ahora podéis leer el fichero con un editor hexadecimal, yo usé en la ubuntu el bless.

bless

quejas

Quejas contra el Banco CCM

Hace ya un tiempo que he tenido que pasar por el banco CCM debido a la hipoteca del piso y no se puede estar mas a disgusto con el Sr. de la oficina que me ha tocado. El caso es que no es cosa mia, porque no soy al único que ha cabreado este individuo ni soy el único que tiene batallitas sobre sus engaños. Nunca había actuado contra él, pero hoy he empezado, entre otras perlas que me nos ha hecho desde que tenemos el piso (y antes de tenerlo, durante la negociación de la concesión o no de la hipoteca):

  • Imposición de productos innecesarios alegando que son obligatorios con la escritura (esto es mentira, pero entiendo que le obliguen).
  • Cambio ciertas cosas el día de la firma de la hipoteca, a lo que me negué y levanté de la mesa y reculó.
  • Movimiento sin mi consentimiento de 50€ (es poca cosa, pero no tiene porque hacerlo) de mi cuenta al plan de pensiones que obligó a meter allí.
  • Retraso en la entrega de las copias con el fin de hacer firmar mas cosas

Estas son algunas de las que ha hecho, y se que un amigo cercano podría extender este post hasta llenar varias páginas, pero hoy ya me ha quemado del todo, porque he empezado a pensar que se dedica a hacer o justo en cada visita y dejar otras cuestiones para obligarme a ir al banco un viaje mas (sabe que por cuestiones de trabajo me destroza tener que ir a la oficina y claro, por internet o teléfono la CCM es nefasta). La última ha sido al pedir que me cambie la hipoteca para que la carguen en una cuenta de otra entidad, y dice que no se puede cambiar la cuenta asociada, que va en las escrituras y que no es posible cambiarla. Este amigo que comento le dijeron en CCM que no es que no se pueda, es que la CCM no está preparada para hacerlo, su sistema no lo permite (cosa que de ser cierto, diría mucho de una entidad que mueve mucho dinero…que luego destina a aeropuertos con futuro, pero bueno). El caso es que como me ha tocado la moral, he decidido preguntar a facua la obligación o no de tener dicha cuenta (nómina y demás cosas ya van a volar y no quiero que me cobren por dicha cuenta nada) y en caso de no ser cierto que el número de cuenta está grabada a fuego por los mismos elfos que tallaron las espadas milenarias del Señor de los Anillos, que presenten en mi nombre la hoja de reclamación que he rellenado asegurando que él ha afirmado eso y que no quiero verle la cara mas. Conforme me respondan, actualizaré la noticia.

Android

Modificación BARU X6-S (I)

Ufff, hace tiempo que no escribía nada aquí, voy a ver si continuo con el blog contando en lo que estoy “enfrascao” a modo hobby por aprender y por pasar las noches con la parienta cada uno liao en sus cosas dentro de la oficina que montamos en casa.

Desde hace bastante tiempo (algo mas de un año) compré en eBay un reproductor Android con un procesador Cortex A8 creo recordar a 1.2 Ghz y una gráfica Mali400. El reproductor funciona bien, el interfaz chino es feo, pero bueno, sencillo para manejar con el mando que trae con 40 botones de los que se usan 4 xD.

Leer más

programacion android

Phonegap: Framework para Android

Como ya he dicho antes, estoy mirando por aprender a programar para Android, y el primer paso que dí era la programación nativa en Java con eclipse y después de mirar en internet mucha información al respecto, creo que voy a empezar con un Framework HTML5, CSS y Javascript ya que de las 3 cosas, lo único que no he tocado nunca (o a penas) es Javascript, por lo que me será mas sencillo aprender a usar el framework y así, ayudarme a aprender de manera mas avanzada HTML y CSS ( que lo que he tocado ha sido siempre de manera sencilla). El Framework elegido ha sido Phonegap.

De momento solo he tenido tiempo para el clásico Hello world y modificar apenas los ficheros para hacer uso de algunas funciones del Framework para ver como funciona Phonegap, pero me gusta para comenzar, el día que quiera pasar a la programación nativa, intentaré sacar días de unas 28-29 horas, para tener algo mas de tiempo para estas cosas, de momento, hasta que no vea que el día se amplía, usaré Phonegap.

Frameworks hay bastantes en el mercado y muchos de ellos son iguales y posiblemente mejores a Phonegap, pero me he decidido por él (dudaba entre Phonegap y Titanium) por el hecho de haberme encontrado mas información y ejemplos en internet y la verdad, después de leer las especificaciones, pocas son las limitaciones por lo que pronto empezaré a colgar los ejemplos que vaya sacando por si ayuda a alguien igual que me ayudan a mi los ejemplos que la gente cuelga en sus blogs.

 

 

 

 

peceras

Mi acuario: Afición desde tiempos inmemoriables

Mi acuario: Es posible que del último post, se pueda deducir uno de mis mayores hobbies (junto a la informática), los acuarios. He tenido desde hace muchos años acuario y he tenido toda clase de peces y sobretodo toda clase de fracasos en ellos.

Desde mi pecera de cristal obtenida en la feria de Albacete, a escondidas de mi madre y muy a su pesar (decía que los peces traían mala suerte), pasando por un pequeño acuario de unos 25 litros, han pasado muchos peces por mi casa, los pobres, experimentando mi inexperiencia con el acuario. Luego se sumaba la maravillosa agua de Albacete con una dureza de mas de 20 puntos.

Ahora tengo 2 acuarios en funcionamiento, uno de unos 320 litros y otro de 120 litros. El 320 es el que tenéis en la foto adjunta y el de 120 lo uso para la cria de discos (todavía sin mucho éxito). Principalmente tengo discos.

Como unión de ambas aficiones cree un foro ( www.peces.tk ) enfocado a los acuarófilos de Albacete pero por un error mío y la nulidad del servicio técnico del hosting gratuito donde lo hospedé se perdió todo el contenido (y ya tenía actividad). Después de numerosos correos al hosting sin éxito, solo me quedó desearles la caida de todos sus servidores de manera permanente.

Ahora, se intenta volver a crear el foro, pero no termina de arrancar, a ver si consigo volver a juntar a todos los que allí escribían para volver a reactivar el foro porque es una gran fuente de información. Si te gustan los acuarios, terrarios, etc etc estás invitado a entrar ;)

 

Mi acuario de 300 litros

 

El acuario de la foto es el comunitario de 320 litros, con algunos discos (algunos ya no están por un fallo gordísimo mio) y con las plantas naturales que han tapizado el suelo de manera natural y que me toca podar con frecuencia porque deja el acuario sin casi sitio para los habitantes, que actualmente son:

  • Discos
  • Neones
  • Corydoras
  • 1 x Ancistrus
  • Endlers (Gracias Francisco!)
  • Caracoles manzana
  • Caracoles planorbis (Quisiera erradicar la plaga que ahora mismo hay con un truco que me enseñaron en el foro)

 

programacion android

Desarrollo básico en Android

Hace mucho tiempo que quería mirar para ver si era capaz de sacar alguna aplicación en Android y finalmente me he decidido a probar. Quisiera hacerlas de manera nativa con Java.

Ya me he configurado el portátil con Eclipse para poder trabajar con el, pero he descubierto lo que traga de RAM Eclipse. Intentaré aprender a hacerlo y si puedo iré explicando lo que voy aprendiendo (a la vez de las cosas que note de SEO) para que queden a modo de notas para cuando quiera volver a ellas.

Lo primero, recordar las nociones básicas de Java para poder seguir con algo de Android, que Java lo toqué en la universidad y muy de lejos.

 

Lo bueno es que conozco algunos programadores y siempre se pueden aclarar las dudas que puedan surgir.

 

Como primera idea de aplicación, que la tengo en mente desde hace mucho, es una sencilla aplicación para llevar el registro de mi acuario. Es posible que solo me sirva a mi, pero igual ayuda a alguien a controlar el suyo.

Básicamente hará:

– Registro por días de temperatura,ph,kh,gh,nitritos,nitratos,etc etc

– Si incluyes las razas de peces que tienes dentro, te avisa si alguna no se encuentra en los parámetros correctos

– También te puede avisar si tienes peces que no pueden convivir juntos

– Incluso puede sugerir peces, por si vas a comprar que sean compatibles con los que ya tienes.

Algo así. Básicamente es una base de datos donde escribes y otra que lleva la mayoría de razas de peces y compara con los otros peces y con los parámetros. He visto 1 aplicación de pago en iphone pero en Android no he visto ninguna (no he vuelto a buscar e igual ya hay 100 a día de hoy xD) pero al ser tan específica, me puede ayudar a aprender.

magento

Problema de backups de Magento 1.7

Hace un tiempo que llevo usando el magento, en producción estoy usando la 1.4 y la verdad es que va muy bien. Pero por probar a título personal, estoy probando la versión 1.7 y la verdad, incorpora mejoras y carencias que la 1.4 tiene. El problema me lo he encontrado cuando he querido hacer un backup de sistema. Primero me daba un error de permisos “Not enough permissions to create backup”, cosa que no entendía porque mi instalación casi limpia, tan solo algunos plugins para probar, pero poco mas.

Después de leer en diversos sitios he visto que hay poca documentación en castellano hablando de dicho problema y no he dado con la solución aún, creo haber encontrado un avance y lo explicaré aquí por si a alguien le ayuda a solucionar el problema:

La fuente la encontré en el foro oficial de magento hablando del problema:

 

Por el momento podemos localizar el fichero en el que no hay permisos suficientes para que nuestro magento sea capaz de meterlo al backup, para ello necesitamos:

  • Desde el raíz de nuestra instalación de Magento, copiamos el fichero lib/Mage/Backup/Filesystem/Helper.php a app/code/local/Mage/Backup/Filesystem/Helper.php . Ojo: Si no existe la estructura de directorios, hay que crearla.
  • Editamos el Helper.php que hemos creado nuevo (el que está en app/code/local/Mage/Backup/Filesystem)
  • Buscamos:
if (($infoOptions & self::INFO_READABLE) && !$item->isReadable()) {    $info['readable'] = false;}
  • Lo cambiamos por:
if (($infoOptions & self::INFO_READABLE) && !$item->isReadable()) {    Mage::log($item->getPathname(), null, 'backup_not_readable_files.log');    $info['readable'] = false;}
  • Nos vamos a la configuración de nuestro Magento y en desarrollador, activamos el log.
  • Ahora vamos a la herramienta para hacer backup y le damos de nuevo a crear backup del sistema.
  • Ahora, dentro del raíz de nuestro magento, vamos a var/log y en el fichero backup_not_readable_files.log tendremos la lista de los ficheros que no son accesibles.

 

Una vez terminado, podremos borrar sin problema el Helper.php que creamos y modificamos. Yo conseguí descubrir el fichero que me daba el problema en el backup de sistema de magento, aunque de momento no he conseguido terminar de solucionar el problema, ya que no se me crean los backups, se queda a medio del backup con el fichero tar temporal.

Seguiré investigando e intentaré dar con la solución para publicarlo.