Ver Mensaje Individual
  #2  
Viejo 04/09/12, 08:21:36
Array

[xs_avatar]
pedestre pedestre no está en línea
Apolero y +
 
Fecha de registro: ene 2011
Localización: Madrid
Mensajes: 8,963
Modelo de smartphone: Galaxy J5(2016), ICONIA TAB A510
Tu operador: Vodafone
Edicion 27/07/2012 : pequeños cambios en el tuto, añadida una imagen de como debe quedar la estructura, actualizado el package añadiendo el fichero "clean.sh" (para borrar lo compilado) y editado el "build.sh" destacando aquellos sitios donde hay que poner rutas. Información sobre el hard brick.

TUTORIAL PARA UNDERVOLTING el kernel Speedmod en ICS


OJO:NO APTO PARA NOVATOS. NO OS METÁIS SI NO SABÉIS LO QUE HACÉIS y TENEIS UN MÍNIMO DE IDEA DE LO QUE SE HACE.

Información sobre el hard brick "MMC_CAP_ERASE" :
http://www.htcmania.com/showpost.php...postcount=2839

SOBRA DECIR QUE SOIS RESPONSABLES DE LO QUE HAGAIS

La finalidad de este tutorial es que cada uno pueda hacerse su propio kernel SPEEDMOD ICS con los valores de voltajes que le funcionan en su Galaxy. Está basado en el tutorial de fenomeno83 (MIL GRACIAS) para GingerBread, retocado para ICS y puestas algunas cosas a mi gusto.
Hace falta una mínima soltura con el Ubuntu y los scripts. Si nunca has visto Linux ni Ubuntu , ni sabes cómo moverte esto no es para ti.



Si sigues adelante, ¿qué hay más bonito que algo hecho por uno mismo? A parte de que podrás ajustar los voltajes exactamente a los que tu móvil aguante sin depender de nadie más que de Hardcore (hasta ahora siempre liberó sus fuentes).



Las herramientas necesarias para realizar el undervolting son :
  • Equipo con Ubuntu
  • Fuentes de speedmod :
http://forum.xda-developers.com/show....php?t=1574218
  • Fuentes de Samsung Update6 (ICS) para ROMS 4.0.3 o Update 7 para ROMS 4.0.4 :
https://opensource.samsung.com (Buscar i9100)
  • El toolchain (compilador) :
https://launchpad.net/linaro-toolcha..._linux.tar.bz2
  • Paquete para montarlo todo y compilar:
http://www.wuala.com/pedestre/SGS2/Undervolting%20ICS
1) PREPARAR LAS COSAS
- Descomprimir el paquete para compilar donde se quiera, por ejemplo /home/Kernel/package.
- Dentro de “package”, debe haber ahora un directorio llamado “MyKernel”, descomprimir el GT-I9100_Kernel.tar.gz que viene dentro del Update4 de Samsung. Deben quedar los directorios Arch, block, etc colgando directamente de MyKernel.
- Extraer el toolchain en /home/kernel , la carpeta (gcc-linaro…) debe colgar de kernel (si no se pone aqui hay que editar el fichero build.sh)
- Extraer el directorio “initramfs” que viene dentro de las fuentes de speedmod en la carpeta “package”. Debe colgar el directorio “initramfs” de “package” y dentro de “initramfs” un directorio “out” que contiene todo.
- Extraer el archivo .patch que viene en los fuentes de speedmod dentro de la carpeta “MyKernel”

Así queda la estructura (excepto el patch del speedmod que hay que moverlo a MyKenel).



2) APLICAMOS EL PARCHE DE SPEEDMOD
Abrimos un terminal, vamos al directorio “MyKernel “ y parcheamos:
patch –p1 < NombredelArchivoSpeedmod.patch
Se pondrá a hacer los cambios en los fuentes de Samsung para que queden igual a la versión de speedmod. Con esto tendríamos el speedmod tal cual sin tocar nada.
Vigilar que no de ningún error.

3) CAMBIAMOS COSAS DE LA CONFIGURACIÓN de la COMPILACIÓN

Archivo a editar: /arch/arm/configs/u1_speedmod_defconfig


En este fichero hay que buscar
CONFIG_CROSS_COMPILE=""
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION AUTO=y

y modificarlo así:

CONFIG_CROSS_COMPILE="/home/kernel/gcc-linaro-arm-linux-gnueabi-2012.03-20120326_linux/bin/arm-linux-gnueabi-"
CONFIG_LOCALVERSION="-El Nombre que quieras Darle al kernel"
#CONFIG_LOCALVERSION AUTO is not set

El guión delante del nombre es obligatorio

Buscar después:
CONFIG_INITRAMFS_SOURCE="/home/kernel/initramfs/out"
y editarlo así:
CONFIG_INITRAMFS_SOURCE="/tmp/initramfs-source"

Grabar Archivo

4) CAMBIAR LOS VOLTAJES

Hay que editar 3 archivos:

A) Archivo /arch/arm/mach-exynoscpufreq-4210.c

Buscamos los voltajes de las frecuencias ARM stock y editarlos.

Aqui:
/*
* SS, A1, A2, B1, B2, C1, C2, D
* @Dummy:
* @1200 :
* @1000 :
* @800 : ASV_VOLTAGE_TABLE
* @500 :
* @200 :
*
{ 0, 0, 0, 0, 0, 0, 0, 0 },
{ 1350000, 1350000, 1300000, 1275000, 1250000, 1225000, 1200000, 1175000 },
{ 1300000, 1250000, 1200000, 1175000, 1150000, 1125000, 1100000, 1075000 },
{ 1200000, 1150000, 1100000, 1075000, 1050000, 1025000, 1000000, 975000 },
{ 1100000, 1050000, 1000000, 975000, 975000, 950000, 925000, 925000 },
{ 1050000, 1000000, 975000, 950000, 950000, 925000, 925000, 925000 },


En rojo lo que hay que editar y en negrita el valor que viene de referencia en los programas de cambio de voltaje

B) Archivo /arch/arm/mach-exynosbusfreq.c
Hacemos lo mismo, buscamos los voltajes de stock y lo editamos. Aquí están las del bus y las internas.
Bus:

static struct busfreq_table exynos4_busfreq_table[] = {
{LV_0, 400000, 1100000, 0, 0},
{LV_1, 267000, 1000000, 0, 0},
{LV_2, 133000, 950000, 0, 0},
{0, 0, 0, 0, 0},
};

Internas:

static unsigned int exynos4_asv_volt[ASV_GROUP][LV_END] = {
{1150000, 1050000, 1050000},
{1125000, 1025000, 1025000},
{1100000, 1000000, 1000000},
{1075000, 975000, 975000},
{1050000, 950000, 950000}
,
};


C) Archivo /drivers/media/video/Samsung/mali/platform/orion-m400mali_platform_dvfs.c
Aquí tenemos los voltajes de la GPU

/*step 0*/{160 ,1000000 , 950000},
/*step 1*/{267 ,1000000 ,1000000} };

#ifdef EXYNOS4_ASV_ENABLED

#define ASV_8_LEVEL 8
#define ASV_5_LEVEL 5
#define ASV_LEVEL_SUPPORT 0

static unsigned int asv_3d_volt_5_table[ASV_5_LEVEL][MALI_DVFS_STEPS] = {
/* L3(160MHz), L2(266MHz) *
{1000000, 1100000}, /* S *
{1000000, 1100000}, /* A *
{ 950000,1000000}, /* B *
{
950000,1000000}, /* C *
{ 950000, 950000}, /* D *
};

static unsigned int asv_3d_volt_8_table[ASV_8_LEVEL][MALI_DVFS_STEPS] = {
/* L3(160MHz), L2(266MHz)) *
{1000000, 1100000}, /* SS *
{1000000, 1100000}, /* A1 *
{1000000, 1100000}, /* A2 *
{ 950000, 1000000}, /* B1 *
{ 950000, 1000000}, /* B2 *
{ 950000, 1000000}, /* C1 *
{ 950000, 1000000}, /* C2 *
{ 950000, 950000}, /* D1 *
};
#endif
Ya tenemos cambiados los voltajes

5) COMPILAR

Editar el fichero build.sh, buscando al final del mismo donde pone “Directorio Guardar el tar” y “Directorio Guardar el CWM” y cambiarlo por la ruta donde queréis que guarde los ficheros resultantes. Si habeis cambiado alguna ruta (por ejemplo el toolchain no lo poneis en /home/kernel, hay que editarlo también en este fichero)
En un terminal ir al directorio donde está el build.sh y ejecutar el script que se encarga de compilar el kernel. Tardará bastante la primera vez ya que tiene que compilar todo. Si luego queréis toquetear sólo voltajes o cualquier otro fichero ya tardará mucho menos puesto que sólo compilará los ficheros modificados.
Si todo va bien tendréis vuestro kernel en formato .tar y .zip en la ruta que hayáis puesto.

Yo creo que es sencillo con un mínimo de manejo en Linux.
Espero que os sea útil y que aprendamos más del tema. Cuantos más nos metamos en algo de esto, más aprenderemos seguro porque la gente descubrirá nuevas cosas.

AÑADIDO: Si queréis que salga vuestro nombre en "Acerca del Teléfono", tenéis que editar el fichero "mkcompile_h" en la carpeta de MyKernel /scripts (Buscad "Hardcore")
__________________


Última edición por pedestre Día 04/09/12 a las 08:27:06.
Responder Con Cita
Los siguientes 16 usuarios han agradecido a pedestre su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]