Related
The msm8960 can go upto 1.8ghz without voltage tweak, some have the batteries too to support it. With the unlocked BL, I gather we can flash kernel modules? Thats what the oc is done with most of the time. If you dont like the idea of oc, you can still undervolt for more battery.
I gathered the kernel sources are here, but the module could maybe loaded without modding?
I'm thinking of this one from the HOX. I did the guide but got stuck at the same error the guy did on page2.
I added my edited file so you don't have to go through step 1-5.
Would this kernel be based on stock 4.1.1 or Cyanogenmod 10 / 10.1?
Not really looking to compile it into a kernel, it would be a touch-to-activate-on-every-boot kind of thing.
oh if i jeust know how to do it..............
we really need a superkernel now.....
I think the first worry should be to develop a recovery. Without a recovery what you with all these development?
Sent from my SAMSUNG-SGH-I747 using xda premium
bankanidhi said:
I think the first worry should be to develop a recovery. Without a recovery what you with all these development?
Sent from my SAMSUNG-SGH-I747 using xda premium
Click to expand...
Click to collapse
We have a working CWM already. Would be nice to have the types of recoveries the HTC devices had lol:silly:
jbatacan said:
We have a working CWM already. Would be nice to have the types of recoveries the HTC devices had lol:silly:
Click to expand...
Click to collapse
The cwm we have is buggy. Doesn't support gaining flashing of ROM buckle nicely.I have tried it. It its awful.
Sent from my MB886 using xda app-developers app
bankanidhi said:
The cwm we have is buggy. Doesn't support gaining flashing of ROM buckle nicely.I have tried it. It its awful.
Sent from my MB886 using xda app-developers app
Click to expand...
Click to collapse
what exactly wrong? im using it with no problems.........
CWM working just like I remember on HTC for me.
Youngunn2008 said:
CWM working just like I remember on HTC for me.
Click to expand...
Click to collapse
Can you link back to the thread you got it from? Also the bootloader unlock you used? Many thanks!
Stock 4.1.2 Bell kernel on github
https://github.com/skeevy420/android_kernel_qinara_bell
Figured this could help.
source frequency table
Code:
static struct acpu_level acpu_freq_tbl_8960_kraitv2_slow[] = {
{ 0, { STBY_KHZ, QSB, 0, 0, 0x00 }, L2(0), 950000 },
{ 1, { 384000, PLL_8, 0, 2, 0x00 }, L2(1), 950000 },
{ 0, { 432000, HFPLL, 2, 0, 0x20 }, L2(7), 975000 },
{ 1, { 486000, HFPLL, 2, 0, 0x24 }, L2(7), 975000 },
{ 0, { 540000, HFPLL, 2, 0, 0x28 }, L2(7), 1000000 },
{ 1, { 594000, HFPLL, 1, 0, 0x16 }, L2(7), 1000000 },
{ 0, { 648000, HFPLL, 1, 0, 0x18 }, L2(7), 1025000 },
{ 1, { 702000, HFPLL, 1, 0, 0x1A }, L2(7), 1025000 },
{ 0, { 756000, HFPLL, 1, 0, 0x1C }, L2(7), 1075000 },
{ 1, { 810000, HFPLL, 1, 0, 0x1E }, L2(7), 1075000 },
{ 0, { 864000, HFPLL, 1, 0, 0x20 }, L2(7), 1100000 },
{ 1, { 918000, HFPLL, 1, 0, 0x22 }, L2(7), 1100000 },
{ 0, { 972000, HFPLL, 1, 0, 0x24 }, L2(7), 1125000 },
{ 1, { 1026000, HFPLL, 1, 0, 0x26 }, L2(7), 1125000 },
{ 0, { 1080000, HFPLL, 1, 0, 0x28 }, L2(16), 1175000 },
{ 1, { 1134000, HFPLL, 1, 0, 0x2A }, L2(16), 1175000 },
{ 0, { 1188000, HFPLL, 1, 0, 0x2C }, L2(16), 1200000 },
{ 1, { 1242000, HFPLL, 1, 0, 0x2E }, L2(16), 1200000 },
{ 0, { 1296000, HFPLL, 1, 0, 0x30 }, L2(16), 1225000 },
{ 1, { 1350000, HFPLL, 1, 0, 0x32 }, L2(16), 1225000 },
{ 0, { 1404000, HFPLL, 1, 0, 0x34 }, L2(16), 1237500 },
{ 1, { 1458000, HFPLL, 1, 0, 0x36 }, L2(16), 1237500 },
{ 1, { 1512000, HFPLL, 1, 0, 0x38 }, L2(16), 1250000 },
{ 0, { 0 } }
};
static struct acpu_level acpu_freq_tbl_8960_kraitv2_nom[] = {
{ 0, { STBY_KHZ, QSB, 0, 0, 0x00 }, L2(0), 900000 },
{ 1, { 384000, PLL_8, 0, 2, 0x00 }, L2(1), 900000 },
{ 0, { 432000, HFPLL, 2, 0, 0x20 }, L2(7), 925000 },
{ 1, { 486000, HFPLL, 2, 0, 0x24 }, L2(7), 925000 },
{ 0, { 540000, HFPLL, 2, 0, 0x28 }, L2(7), 950000 },
{ 1, { 594000, HFPLL, 1, 0, 0x16 }, L2(7), 950000 },
{ 0, { 648000, HFPLL, 1, 0, 0x18 }, L2(7), 975000 },
{ 1, { 702000, HFPLL, 1, 0, 0x1A }, L2(7), 975000 },
{ 0, { 756000, HFPLL, 1, 0, 0x1C }, L2(7), 1025000 },
{ 1, { 810000, HFPLL, 1, 0, 0x1E }, L2(7), 1025000 },
{ 0, { 864000, HFPLL, 1, 0, 0x20 }, L2(7), 1050000 },
{ 1, { 918000, HFPLL, 1, 0, 0x22 }, L2(7), 1050000 },
{ 0, { 972000, HFPLL, 1, 0, 0x24 }, L2(7), 1075000 },
{ 1, { 1026000, HFPLL, 1, 0, 0x26 }, L2(7), 1075000 },
{ 0, { 1080000, HFPLL, 1, 0, 0x28 }, L2(16), 1125000 },
{ 1, { 1134000, HFPLL, 1, 0, 0x2A }, L2(16), 1125000 },
{ 0, { 1188000, HFPLL, 1, 0, 0x2C }, L2(16), 1150000 },
{ 1, { 1242000, HFPLL, 1, 0, 0x2E }, L2(16), 1150000 },
{ 0, { 1296000, HFPLL, 1, 0, 0x30 }, L2(16), 1175000 },
{ 1, { 1350000, HFPLL, 1, 0, 0x32 }, L2(16), 1175000 },
{ 0, { 1404000, HFPLL, 1, 0, 0x34 }, L2(16), 1187500 },
{ 1, { 1458000, HFPLL, 1, 0, 0x36 }, L2(16), 1187500 },
{ 1, { 1512000, HFPLL, 1, 0, 0x38 }, L2(16), 1200000 },
{ 0, { 0 } }
};
static struct acpu_level acpu_freq_tbl_8960_kraitv2_fast[] = {
{ 0, { STBY_KHZ, QSB, 0, 0, 0x00 }, L2(0), 850000 },
{ 1, { 384000, PLL_8, 0, 2, 0x00 }, L2(1), 850000 },
{ 0, { 432000, HFPLL, 2, 0, 0x20 }, L2(7), 875000 },
{ 1, { 486000, HFPLL, 2, 0, 0x24 }, L2(7), 875000 },
{ 0, { 540000, HFPLL, 2, 0, 0x28 }, L2(7), 900000 },
{ 1, { 594000, HFPLL, 1, 0, 0x16 }, L2(7), 900000 },
{ 0, { 648000, HFPLL, 1, 0, 0x18 }, L2(7), 925000 },
{ 1, { 702000, HFPLL, 1, 0, 0x1A }, L2(7), 925000 },
{ 0, { 756000, HFPLL, 1, 0, 0x1C }, L2(7), 975000 },
{ 1, { 810000, HFPLL, 1, 0, 0x1E }, L2(7), 975000 },
{ 0, { 864000, HFPLL, 1, 0, 0x20 }, L2(7), 1000000 },
{ 1, { 918000, HFPLL, 1, 0, 0x22 }, L2(7), 1000000 },
{ 0, { 972000, HFPLL, 1, 0, 0x24 }, L2(7), 1025000 },
{ 1, { 1026000, HFPLL, 1, 0, 0x26 }, L2(7), 1025000 },
{ 0, { 1080000, HFPLL, 1, 0, 0x28 }, L2(16), 1075000 },
{ 1, { 1134000, HFPLL, 1, 0, 0x2A }, L2(16), 1075000 },
{ 0, { 1188000, HFPLL, 1, 0, 0x2C }, L2(16), 1100000 },
{ 1, { 1242000, HFPLL, 1, 0, 0x2E }, L2(16), 1100000 },
{ 0, { 1296000, HFPLL, 1, 0, 0x30 }, L2(16), 1125000 },
{ 1, { 1350000, HFPLL, 1, 0, 0x32 }, L2(16), 1125000 },
{ 0, { 1404000, HFPLL, 1, 0, 0x34 }, L2(16), 1137500 },
{ 1, { 1458000, HFPLL, 1, 0, 0x36 }, L2(16), 1137500 },
{ 1, { 1512000, HFPLL, 1, 0, 0x38 }, L2(16), 1150000 },
{ 0, { 0 } }
};
That looks awesome, how well are these compatible with 4.0? I tried it only 4.0 because thats what I have because of lapdock.
souljaboy said:
That looks awesome, how well are these compatible with 4.0? I tried it only 4.0 because thats what I have because of lapdock.
Click to expand...
Click to collapse
Should, just use the ICS kernel sources on sourceforge.
table located in the file
arch/arm/mach-msm/acpuclock-8960.c
I'll be straight up with ya, kernel modding is new to me. I'm learning it one day at a time. My plan is to find a similar device with a 3.0.40 kernel (Bells version) and pull in mods and tweaks that way.
pianoman102 said:
Can you link back to the thread you got it from? Also the bootloader unlock you used? Many thanks!
Click to expand...
Click to collapse
Its all in our forum here, on the general section
pianoman102 said:
Can you link back to the thread you got it from? Also the bootloader unlock you used? Many thanks!
Click to expand...
Click to collapse
http://forum.xda-developers.com/showthread.php?t=2226504 Boot Loader Unlock
http://forum.xda-developers.com/showthread.php?t=2227938 Root
I pm-ed the said guy in first post, he replied and wrote he didnt get it to work because his one S had different SoC than one x. We have same chipset though, so not sure whats going wrong...
I'll long into these modules skeevy is writing about soon as I get a little free time.
souljaboy said:
I pm-ed the said guy in first post, he replied and wrote he didnt get it to work because his one S had different SoC than one x. We have same chipset though, so not sure whats going wrong...
I'll long into these modules skeevy is writing about soon as I get a little free time.
Click to expand...
Click to collapse
I'm not referring to modules, tweaking the above would be the start of a new AHD kernel.
As for your module idea, even though its the same soc, ya gotta find a module from a similar kernel. MR has 3.0.42 kernel.
Look at it like its an alternator. Mazda Miata and RX8 have the same underlying frame (soc), but the have different bodies (the phone you see) and different engines (kernel). RX8 alternator won't bolt onto Miata w/o some fabrication (the tweaking), where as you could go to the scrapyard (xda) and find an alternator from a similar engine that will bolt on...or you go to a machine shop (github) and fabricate your own (mess with the source). Hope that makes since.
So we could just change the table and recompile kernel and its done?
skeevydude said:
I'm not referring to modules, tweaking the above would be the start of a new AHD kernel.
As for your module idea, even though its the same soc, ya gotta find a module from a similar kernel. MR has 3.0.42 kernel.
Look at it like its an alternator. Mazda Miata and RX8 have the same underlying frame (soc), but the have different bodies (the phone you see) and different engines (kernel). RX8 alternator won't bolt onto Miata w/o some fabrication (the tweaking), where as you could go to the scrapyard (xda) and find an alternator from a similar engine that will bolt on...or you go to a machine shop (github) and fabricate your own (mess with the source). Hope that makes since.
Click to expand...
Click to collapse
Nice analogy.
Youngunn2008 said:
Nice analogy.
Click to expand...
Click to collapse
Agreed. That was beautiful!
http://android-gz.com
As it states I am trying to add Thundeplug to my hotplug. Heres the code.
/* Copyright (c) 2015, Varun Chitre <[email protected]>
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* A simple hotplugging driver.
* Compatible from dual core CPUs to Octa Core CPUs
*/
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/hrtimer.h>
#include <linux/init.h>
#include <linux/device.h>
#include <linux/input.h>
#include <linux/slab.h>
#include <linux/cpu.h>
#include <linux/lcd_notify.h>
#include <linux/cpufreq.h>
#include "thunderplug.h"
#define DEBUG 0
#define THUNDERPLUG "thunderplug"
#define DRIVER_VERSION 5
#define DRIVER_SUBVER 0
#define DEFAULT_CPU_LOAD_THRESHOLD (65)
#define MIN_CPU_LOAD_THRESHOLD (10)
#define HOTPLUG_ENABLED (0)
#define DEFAULT_HOTPLUG_STYLE HOTPLUG_SCHED
#define DEFAULT_SCHED_MODE BALANCED
#define DEF_SAMPLING_MS (500)
#define MIN_SAMLING_MS (50)
#define MIN_CPU_UP_TIME (750)
#define TOUCH_BOOST_ENABLED (0)
static bool isSuspended = false;
struct notifier_block lcd_worker;
static int suspend_cpu_num = 2, resume_cpu_num = (NR_CPUS -1);
static int endurance_level = 0;
static int core_limit = NR_CPUS;
static int now[8], last_time[8];
static int sampling_time = DEF_SAMPLING_MS;
static int load_threshold = DEFAULT_CPU_LOAD_THRESHOLD;
static int stop_boost = 0;
struct cpufreq_policy old_policy[NR_CPUS];
#ifdef CONFIG_SCHED_HMP
static int tplug_hp_style = DEFAULT_HOTPLUG_STYLE;
#else
static int tplug_hp_enabled = HOTPLUG_ENABLED;
#endif
static int tplug_sched_mode = DEFAULT_SCHED_MODE;
static int touch_boost_enabled = TOUCH_BOOST_ENABLED;
static struct workqueue_struct *tplug_wq;
static struct delayed_work tplug_work;
static struct workqueue_struct *tplug_boost_wq;
static struct delayed_work tplug_boost;
static struct workqueue_struct *tplug_resume_wq;
static struct delayed_work tplug_resume_work;
static unsigned int last_load[8] = { 0 };
struct cpu_load_data {
u64 prev_cpu_idle;
u64 prev_cpu_wall;
unsigned int avg_load_maxfreq;
unsigned int cur_load_maxfreq;
unsigned int samples;
unsigned int window_size;
cpumask_var_t related_cpus;
};
static DEFINE_PER_CPU(struct cpu_load_data, cpuload);
/* Two Endurance Levels for Octa Cores,
* Two for Quad Cores and
* One for Dual
*/
static inline void offline_cpus(void)
{
unsigned int cpu;
switch(endurance_level) {
case 1:
if(suspend_cpu_num > NR_CPUS / 2 )
suspend_cpu_num = NR_CPUS / 2;
break;
case 2:
if( NR_CPUS >=4 && suspend_cpu_num > NR_CPUS / 4)
suspend_cpu_num = NR_CPUS / 4;
break;
default:
break;
}
for(cpu = NR_CPUS - 1; cpu > (suspend_cpu_num - 1); cpu--) {
if (cpu_online(cpu))
cpu_down(cpu);
}
pr_info("%s: %d cpus were offlined\n", THUNDERPLUG, (NR_CPUS - suspend_cpu_num));
}
static inline void cpus_online_all(void)
{
unsigned int cpu;
switch(endurance_level) {
case 1:
if(resume_cpu_num > (NR_CPUS / 2) - 1 || resume_cpu_num == 1)
resume_cpu_num = ((NR_CPUS / 2) - 1);
break;
case 2:
if( NR_CPUS >= 4 && resume_cpu_num > ((NR_CPUS / 4) - 1))
resume_cpu_num = ((NR_CPUS / 4) - 1);
break;
case 0:
resume_cpu_num = (NR_CPUS - 1);
break;
default:
break;
}
if(DEBUG)
pr_info("%s: resume_cpu_num = %d\n",THUNDERPLUG, resume_cpu_num);
for (cpu = 1; cpu <= resume_cpu_num; cpu++) {
if (cpu_is_offline(cpu))
cpu_up(cpu);
}
pr_info("%s: all cpus were onlined\n", THUNDERPLUG);
}
static void __ref tplug_boost_work_fn(struct work_struct *work)
{
struct cpufreq_policy policy;
int cpu, ret;
for(cpu = 1; cpu < NR_CPUS; cpu++) {
#ifdef CONFIG_SCHED_HMP
if(tplug_hp_style == 1)
#else
if(tplug_hp_enabled == 1)
#endif
if(cpu_is_offline(cpu))
cpu_up(cpu);
ret = cpufreq_get_policy(&policy, cpu);
if (ret)
continue;
old_policy[cpu] = policy;
policy.min = policy.max;
cpufreq_update_policy(cpu);
}
if(stop_boost == 0)
queue_delayed_work_on(0, tplug_boost_wq, &tplug_boost,
msecs_to_jiffies(10));
}
static void tplug_input_event(struct input_handle *handle, unsigned int type,
unsigned int code, int value)
{
if (type == EV_KEY && code == BTN_TOUCH) {
if(DEBUG)
pr_info("%s : type = %d, code = %d, value = %d\n", THUNDERPLUG, type, code, value);
if(value == 0) {
stop_boost = 1;
if(DEBUG)
pr_info("%s: stopping boost\n", THUNDERPLUG);
}
else {
stop_boost = 0;
if(DEBUG)
pr_info("%s: starting boost\n", THUNDERPLUG);
}
}
#ifdef CONFIG_SCHED_HMP
if ((type == EV_KEY) && (code == BTN_TOUCH) && (value == 1)
&& touch_boost_enabled == 1)
#else
if ((type == EV_KEY) && (code == BTN_TOUCH) && (value == 1)
&& touch_boost_enabled == 1)
#endif
{
if(DEBUG)
pr_info("%s : touch boost\n", THUNDERPLUG);
queue_delayed_work_on(0, tplug_boost_wq, &tplug_boost,
msecs_to_jiffies(0));
}
}
static int tplug_input_connect(struct input_handler *handler,
struct input_dev *dev, const struct input_device_id *id)
{
struct input_handle *handle;
int error;
handle = kzalloc(sizeof(struct input_handle), GFP_KERNEL);
if (!handle)
return -ENOMEM;
handle->dev = dev;
handle->handler = handler;
handle->name = "cpufreq";
error = input_register_handle(handle);
if (error)
goto err2;
error = input_open_device(handle);
if (error)
goto err1;
return 0;
err1:
input_unregister_handle(handle);
err2:
kfree(handle);
return error;
}
static void tplug_input_disconnect(struct input_handle *handle)
{
input_close_device(handle);
input_unregister_handle(handle);
kfree(handle);
}
static const struct input_device_id tplug_ids[] = {
{ .driver_info = 1 },
{ },
};
static struct input_handler tplug_input_handler = {
.event = tplug_input_event,
.connect = tplug_input_connect,
.disconnect = tplug_input_disconnect,
.name = "tplug_handler",
.id_table = tplug_ids,
};
static ssize_t thunderplug_suspend_cpus_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf)
{
return sprintf(buf, "%d", suspend_cpu_num);
}
static ssize_t thunderplug_suspend_cpus_store(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count)
{
int val;
sscanf(buf, "%d", &val);
if(val < 1 || val > NR_CPUS)
pr_info("%s: suspend cpus off-limits\n", THUNDERPLUG);
else
suspend_cpu_num = val;
return count;
}
static ssize_t thunderplug_endurance_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf)
{
return sprintf(buf, "%d", endurance_level);
}
static ssize_t __ref thunderplug_endurance_store(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count)
{
int val;
sscanf(buf, "%d", &val);
if(tplug_hp_style == 1) {
switch(val) {
case 0:
case 1:
case 2:
if(endurance_level!=val &&
!(endurance_level > 1 && NR_CPUS < 4)) {
endurance_level = val;
offline_cpus();
cpus_online_all();
}
break;
default:
pr_info("%s: invalid endurance level\n", THUNDERPLUG);
break;
}
}
else
pr_info("%s: per-core hotplug style is disabled, ignoring endurance mode values\n", THUNDERPLUG);
return count;
}
static ssize_t thunderplug_sampling_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf)
{
return sprintf(buf, "%d", sampling_time);
}
static ssize_t __ref thunderplug_sampling_store(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count)
{
int val;
sscanf(buf, "%d", &val);
if(val > MIN_SAMLING_MS)
sampling_time = val;
return count;
}
static ssize_t thunderplug_tb_enabled_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf)
{
return sprintf(buf, "%d", touch_boost_enabled);
}
static ssize_t __ref thunderplug_tb_enabled_store(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count)
{
int val;
sscanf(buf, "%d", &val);
switch(val)
{
case 0:
case 1:
touch_boost_enabled = val;
break;
default:
pr_info("%s : invalid choice\n", THUNDERPLUG);
break;
}
return count;
}
static ssize_t thunderplug_load_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf)
{
return sprintf(buf, "%d", load_threshold);
}
static ssize_t __ref thunderplug_load_store(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count)
{
int val;
sscanf(buf, "%d", &val);
if(val > 10)
load_threshold = val;
return count;
}
static unsigned int get_curr_load(unsigned int cpu)
{
int ret;
unsigned int idle_time, wall_time;
unsigned int cur_load;
u64 cur_wall_time, cur_idle_time;
struct cpu_load_data *pcpu = &per_cpu(cpuload, cpu);
struct cpufreq_policy policy;
ret = cpufreq_get_policy(&policy, cpu);
if (ret)
return -EINVAL;
cur_idle_time = get_cpu_idle_time(cpu, &cur_wall_time, 0);
wall_time = (unsigned int) (cur_wall_time - pcpu->prev_cpu_wall);
pcpu->prev_cpu_wall = cur_wall_time;
idle_time = (unsigned int) (cur_idle_time - pcpu->prev_cpu_idle);
pcpu->prev_cpu_idle = cur_idle_time;
if (unlikely(!wall_time || wall_time < idle_time))
return 0;
cur_load = 100 * (wall_time - idle_time) / wall_time;
return cur_load;
}
static void thunderplug_suspend(void)
{
offline_cpus();
pr_info("%s: suspend\n", THUNDERPLUG);
}
static void __ref thunderplug_resume(void)
{
cpus_online_all();
pr_info("%s: resume\n", THUNDERPLUG);
}
static void __cpuinit tplug_resume_work_fn(struct work_struct *work)
{
thunderplug_resume();
}
static void __cpuinit tplug_work_fn(struct work_struct *work)
{
int i;
unsigned int load[8], avg_load[8];
switch(endurance_level)
{
case 0:
core_limit = NR_CPUS;
break;
case 1:
core_limit = NR_CPUS / 2;
break;
case 2:
core_limit = NR_CPUS / 4;
break;
default:
core_limit = NR_CPUS;
break;
}
for(i = 0 ; i < core_limit; i++)
{
if(cpu_online(i))
load = get_curr_load(i);
else
load = 0;
avg_load = ((int) load + (int) last_load) / 2;
last_load = load;
}
for(i = 0 ; i < core_limit; i++)
{
if(cpu_online(i) && avg_load > load_threshold && cpu_is_offline(i+1))
{
if(DEBUG)
pr_info("%s : bringing back cpu%d\n", THUNDERPLUG,i);
if(!((i+1) > 7)) {
last_time[i+1] = ktime_to_ms(ktime_get());
cpu_up(i+1);
}
}
else if(cpu_online(i) && avg_load < load_threshold && cpu_online(i+1))
{
if(DEBUG)
pr_info("%s : offlining cpu%d\n", THUNDERPLUG,i);
if(!(i+1)==0) {
now[i+1] = ktime_to_ms(ktime_get());
if((now[i+1] - last_time[i+1]) > MIN_CPU_UP_TIME)
cpu_down(i+1);
}
}
}
#ifdef CONFIG_SCHED_HMP
if(tplug_hp_style == 1 && !isSuspended)
#else
if(tplug_hp_enabled != 0 && !isSuspended)
#endif
queue_delayed_work_on(0, tplug_wq, &tplug_work,
msecs_to_jiffies(sampling_time));
else {
if(!isSuspended)
cpus_online_all();
else
thunderplug_suspend();
}
}
static int lcd_notifier_callback(struct notifier_block *nb,
unsigned long event, void *data)
{
switch (event) {
case LCD_EVENT_ON_START:
isSuspended = false;
#ifdef CONFIG_SCHED_HMP
if(tplug_hp_style==1)
#else
if(tplug_hp_enabled)
#endif
queue_delayed_work_on(0, tplug_wq, &tplug_work,
msecs_to_jiffies(sampling_time));
else
queue_delayed_work_on(0, tplug_resume_wq, &tplug_resume_work,
msecs_to_jiffies(10));
pr_info("thunderplug : resume called\n");
break;
case LCD_EVENT_ON_END:
break;
case LCD_EVENT_OFF_START:
break;
case LCD_EVENT_OFF_END:
isSuspended = true;
pr_info("thunderplug : suspend called\n");
break;
default:
break;
}
return 0;
}
/* Thunderplug load balancer */
#ifdef CONFIG_SCHED_HMP
static void set_sched_profile(int mode) {
switch(mode) {
case 1:
/* Balanced */
sched_set_boost(DISABLED);
break;
case 2:
/* Turbo */
sched_set_boost(ENABLED);
break;
default:
pr_info("%s: Invalid mode\n", THUNDERPLUG);
break;
}
}
static ssize_t thunderplug_sched_mode_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf)
{
return sprintf(buf, "%d", tplug_sched_mode);
}
static ssize_t __ref thunderplug_sched_mode_store(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count)
{
int val;
sscanf(buf, "%d", &val);
set_sched_profile(val);
tplug_sched_mode = val;
return count;
}
static ssize_t thunderplug_hp_style_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf)
{
return sprintf(buf, "%d", tplug_hp_style);
}
static ssize_t __ref thunderplug_hp_style_store(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count)
{
int val, last_val;
sscanf(buf, "%d", &val);
last_val = tplug_hp_style;
switch(val)
{
case HOTPLUG_PERCORE:
case HOTPLUG_SCHED:
tplug_hp_style = val;
break;
default:
pr_info("%s : invalid choice\n", THUNDERPLUG);
break;
}
if(tplug_hp_style == HOTPLUG_PERCORE && tplug_hp_style != last_val) {
pr_info("%s: Switching to Per-core hotplug model\n", THUNDERPLUG);
sched_set_boost(DISABLED);
queue_delayed_work_on(0, tplug_wq, &tplug_work,
msecs_to_jiffies(sampling_time));
}
else if(tplug_hp_style==2) {
pr_info("%s: Switching to sched based hotplug model\n", THUNDERPLUG);
set_sched_profile(tplug_sched_mode);
}
return count;
}
static struct kobj_attribute thunderplug_hp_style_attribute =
__ATTR(hotplug_style,
0666,
thunderplug_hp_style_show, thunderplug_hp_style_store);
static struct kobj_attribute thunderplug_mode_attribute =
__ATTR(sched_mode,
0666,
thunderplug_sched_mode_show, thunderplug_sched_mode_store);
#else
static ssize_t thunderplug_hp_enabled_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf)
{
return sprintf(buf, "%d", tplug_hp_enabled);
}
static ssize_t __ref thunderplug_hp_enabled_store(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count)
{
int val;
sscanf(buf, "%d", &val);
int last_val = tplug_hp_enabled;
switch(val)
{
case 0:
case 1:
tplug_hp_enabled = val;
break;
default:
pr_info("%s : invalid choice\n", THUNDERPLUG);
break;
}
if(tplug_hp_enabled == 1 && tplug_hp_enabled != last_val)
queue_delayed_work_on(0, tplug_wq, &tplug_work,
msecs_to_jiffies(sampling_time));
return count;
}
static struct kobj_attribute thunderplug_hp_enabled_attribute =
__ATTR(hotplug_enabled,
0666,
thunderplug_hp_enabled_show, thunderplug_hp_enabled_store);
#endif
static ssize_t thunderplug_ver_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf)
{
return sprintf(buf, "ThunderPlug %u.%u", DRIVER_VERSION, DRIVER_SUBVER);
}
static struct kobj_attribute thunderplug_ver_attribute =
__ATTR(version,
0444,
thunderplug_ver_show, NULL);
static struct kobj_attribute thunderplug_suspend_cpus_attribute =
__ATTR(suspend_cpus,
0666,
thunderplug_suspend_cpus_show, thunderplug_suspend_cpus_store);
static struct kobj_attribute thunderplug_endurance_attribute =
__ATTR(endurance_level,
0666,
thunderplug_endurance_show, thunderplug_endurance_store);
static struct kobj_attribute thunderplug_sampling_attribute =
__ATTR(sampling_rate,
0666,
thunderplug_sampling_show, thunderplug_sampling_store);
static struct kobj_attribute thunderplug_load_attribute =
__ATTR(load_threshold,
0666,
thunderplug_load_show, thunderplug_load_store);
static struct kobj_attribute thunderplug_tb_enabled_attribute =
__ATTR(touch_boost,
0666,
thunderplug_tb_enabled_show, thunderplug_tb_enabled_store);
static struct attribute *thunderplug_attrs[] =
{
&thunderplug_ver_attribute.attr,
&thunderplug_suspend_cpus_attribute.attr,
&thunderplug_endurance_attribute.attr,
&thunderplug_sampling_attribute.attr,
&thunderplug_load_attribute.attr,
#ifdef CONFIG_SCHED_HMP
&thunderplug_mode_attribute.attr,
&thunderplug_hp_style_attribute.attr,
#else
&thunderplug_hp_enabled_attribute.attr,
#endif
&thunderplug_tb_enabled_attribute.attr,
NULL,
};
static struct attribute_group thunderplug_attr_group =
{
.attrs = thunderplug_attrs,
};
static struct kobject *thunderplug_kobj;
static int __init thunderplug_init(void)
{
int ret = 0;
int sysfs_result;
printk(KERN_DEBUG "[%s]\n",__func__);
thunderplug_kobj = kobject_create_and_add("thunderplug", kernel_kobj);
if (!thunderplug_kobj) {
pr_err("%s Interface create failed!\n",
__FUNCTION__);
return -ENOMEM;
}
sysfs_result = sysfs_create_group(thunderplug_kobj, &thunderplug_attr_group);
if (sysfs_result) {
pr_info("%s sysfs create failed!\n", __FUNCTION__);
kobject_put(thunderplug_kobj);
}
lcd_worker.notifier_call = lcd_notifier_callback;
lcd_register_client(&lcd_worker);
pr_info("%s : registering input boost", THUNDERPLUG);
ret = input_register_handler(&tplug_input_handler);
if (ret) {
pr_err("%s: Failed to register input handler: %d\n",
THUNDERPLUG, ret);
}
tplug_wq = alloc_workqueue("tplug",
WQ_HIGHPRI | WQ_UNBOUND, 1);
tplug_resume_wq = alloc_workqueue("tplug_resume",
WQ_HIGHPRI | WQ_UNBOUND, 1);
tplug_boost_wq = alloc_workqueue("tplug_boost",
WQ_HIGHPRI | WQ_UNBOUND, 1);
INIT_DELAYED_WORK(&tplug_work, tplug_work_fn);
INIT_DELAYED_WORK(&tplug_resume_work, tplug_resume_work_fn);
INIT_DELAYED_WORK(&tplug_boost, tplug_boost_work_fn);
queue_delayed_work_on(0, tplug_wq, &tplug_work,
msecs_to_jiffies(10));
pr_info("%s: init\n", THUNDERPLUG);
return ret;
}
MODULE_LICENSE("GPL and additional rights");
MODULE_AUTHOR("Varun Chitre <[email protected]>");
MODULE_DESCRIPTION("Hotplug driver for ARM SoCs");
late_initcall(thunderplug_init);
Here is my error.
CC arch/arm/mach-msm/thunderplug.o
arch/arm/mach-msm/thunderplug.c: In function 'thunderplug_endurance_store':
arch/arm/mach-msm/thunderplug.c:283:5: error: 'tplug_hp_style' undeclared (first use in this function)
if(tplug_hp_style == 1) {
^
arch/arm/mach-msm/thunderplug.c:283:5: note: each undeclared identifier is reported only once for each function it appears in
arch/arm/mach-msm/thunderplug.c: In function 'thunderplug_hp_enabled_store':
arch/arm/mach-msm/thunderplug.c:598:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
error, forbidden warning: thunderplug.c:598
make[1]: *** [arch/arm/mach-msm/thunderplug.o] Error 1
make[1]: *** Waiting for unfinished jobs....
Any help would be appreciated
http://forum.xda-developers.com/nexus-6/devs-only
Hi Folks.
I am new to android studio and object oriented programming in general so apologies if this is obvious but I cannot get my head round it. I have a small xml web server and I can connect to it and send data to it and I can also read it back and view it in the monitor. I want to do xml parsing on it but cannot get it to work.
Below is the xml server being displayed in the android monitor and is from the line "System.out.println(output);"
The response is saved from a string but I think I need it in a different format to do a pull parser on it. The program basically prints this string and then crashes. What is the best way to parse my data? Any help would be really appreciated.
<TITLE>GET test page</TITLE>
05-16 20:19:50.499 13394-14092/com.example.mark.gps_to_server I/System.out: </HEAD>
05-16 20:19:50.499 13394-14092/com.example.mark.gps_to_server I/System.out: <BODY>
05-16 20:19:50.499 13394-14092/com.example.mark.gps_to_server I/System.out: <H1>LED Control</H1>
05-16 20:19:50.499 13394-14092/com.example.mark.gps_to_server I/System.out: <a href="/?nnn" >ON</a>
05-16 20:19:50.499 13394-14092/com.example.mark.gps_to_server I/System.out: <a href="/?fff" >OFF</a>
05-16 20:19:50.499 13394-14092/com.example.mark.gps_to_server I/System.out: <IFRAME name=inlineframe style="display:none" >
05-16 20:19:50.519 13394-14092/com.example.mark.gps_to_server I/System.out: </IFRAME>
05-16 20:19:50.519 13394-14092/com.example.mark.gps_to_server I/System.out: <H1>Status On Now</H1>
05-16 20:19:50.529 13394-14092/com.example.mark.gps_to_server I/System.out: <H2> test</H2>
Click to expand...
Click to collapse
The code:
Code:
public class HTTPRequestTask extends AsyncTask<String , Void, String > {
@Override
protected String doInBackground(String... args) {
String IP = args[0];
System.out.println(IP);
try {
URL url = new URL(IP);
XmlPullParser recievedData = XmlPullParserFactory.newInstance().newPullParser();
recievedData.setInput(url.openStream(),null);
System.setProperty("http.keepAlive", "false");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
if (conn.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ conn.getResponseCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
System.out.println(output);
}
XmlPullParser parser = Xml.newPullParser();
parser.setInput(new StringReader(output));
System.out.println("doc");
System.out.println(parser);
System.out.println("Disconnecting\n");
conn.disconnect();
//System.out.println(recievedData);
processRecievedData(recievedData);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
return null;
}
private int processRecievedData(XmlPullParser xmlData) {
int recordsFound = 0; // Find values in the XML records
int eventType = -1;
String appId = ""; // Attributes
String itemId = "";
String timeStamp = ""; String data = ""; // Text int eventType = -1;
while (eventType != XmlResourceParser.END_DOCUMENT) {
String tagName = xmlData.getName();
switch (eventType) {
case XmlResourceParser.START_TAG: // Start of a record, so pull values encoded as attributes.
if (tagName.equals("Version")) {
System.out.println("yes");
appId = xmlData.getAttributeValue(null, "Model");
itemId = xmlData.getAttributeValue(null, "vendor_id");
timeStamp = xmlData.getAttributeValue(null, "timestamp");
data = "";
}
System.out.println("no");
break;
// Grab data text (very simple processing)
// NOTE: This could be full XML data to process.
case XmlResourceParser.TEXT:
data += xmlData.getText();
break;
case XmlPullParser.END_TAG:
if (tagName.equals("record")) {
recordsFound++;
//publishProgress(appId, itemId, data, timeStamp);
}
break;
}
//eventType = xmlData.next();
}
// Handle no data available: Publish an empty event.
if (recordsFound == 0) { publishProgress();
}
Log.i(TAG, "Finished processing "+recordsFound+" records.");
return recordsFound;
}
protected void onProgressUpdate(String... values) {
if (values.length == 0) {
Log.i(TAG, "No data downloaded");
}
if (values.length == 4) {
String appId = values[0];
String itemId = values[1];
String data = values[2];
String timeStamp = values[3];
// Log it
Log.i(TAG, "AppID: " + appId + ", Timestamp: " + timeStamp);
Log.i(TAG, " ItemID: " + itemId + ", Data: " + data);
// Pass it to the application handleNewRecord(itemId, data); }
//super.onProgressUpdate(values);
}
}
Thanks.
Probably you should use 3rd party library to parse XML from your web server. This will significantly reduce the code and improve performance. Of course, before parsing xml, you should download the data.
Personal prefference
I prefer the document (DOM) parsing. I think DOM parsing is more object oriented.
Whats the error in the log?
this works for me:
BufferedReader in = null;
try {
in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
} catch (IOException e) {
e.printStackTrace();
}
StringBuffer sb = new StringBuffer("");
String line="";
while ((line = in.readLine()) != null) {
sb.append(line);
}
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
String sb_string = sb.toString();
Document return_doc = null;
if(sb_string.equals(0))
{
}
else {
DocumentBuilder db = null;
try {
db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(sb_string));
try {
return_doc = db.parse(is);
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Please note! It took me a while before i could get attributes and knew the difference between nodes and elements.
this line of thought will require you to gain more information how to work with documents which might get frustration but in the end it might be beneficial.
I want to make a request to a web page every 2 seconds. I found a tutorial on google about this and I tried to make an example code but unfortunately it doesn't work ....
When I try to make a simple request without loop then it works perfectly but when I try with loop then it already writes error ....
Here is the code I try to run:
public void run1(){
try {
while(true) {
Log.d(TAG, "test");
RequestQueue queue = Volley.newRequestQueue(this);
String url = "xxxx";
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@override
public void onResponse(String response) {
Log.d(TAG, "=============response=============");
//check response its is ok
if(response.length() > 0){
textView.setText( response);
}else{
Log.d(TAG, "NU am mesaj de trimis!");
}
}
}, new Response.ErrorListener() {
@override
public void onErrorResponse(VolleyError error) {
textView.setText("IMI PARE RAU CEVA NU A MERS!!");
}
});
queue.add(stringRequest);
Thread.sleep(2000); //1000 milliseconds is one second.
}
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
@override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
number = "0770162059";
message = "test";
send = findViewById(R.id.send);
final TextView textView = (TextView) findViewById(R.id.text);
send.setEnabled(false);
if(checkPermission(Manifest.permission.SEND_SMS)){
send.setEnabled(true);
}else{
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.SEND_SMS}, SEND_SMS_PERMISSION_REQUEST_CODE);
}
if(checkPermission(Manifest.permission.INTERNET)){
Log.d(TAG, "======Internet permission ready=======");
}else{
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.INTERNET}, INTERNET_PERMISSION_REQUEST_CODE);
}
run1();
}
And the error of what I think it shows in LogCat is:
02-02 11:09:26.763 6563-6563/com.example.send_sm_test D/MainActivity: test 02-02 11:09:26.763 6563-6590/com.example.send_sm_test I/qtaguid: Tagging socket 49 with tag 56062fc900000000(-704237623) for uid -1 failed errno=-2 02-02 11:09:26.763 6563-6590/com.example.send_sm_test I/NetworkManagementSocketTagger: tagSocketFd(49, -704237623, -1) failed with errno-2 02-02 11:09:26.763 6563-6590/com.example.send_sm_test I/qtaguid: Tagging socket 50 with tag 56062fc900000000(-704237623) for uid -1 failed errno=-2 02-02 11:09:26.763 6563-6590/com.example.send_sm_test I/NetworkManagementSocketTagger: tagSocketFd(50, -704237623, -1) failed with errno-2 02-02 11:09:26.793 6563-6567/com.example.send_sm_test D/dalvikvm: GC_CONCURRENT freed 361K, 4% free 18869K/19463K, paused 1ms+1ms 02-02 11:09:26.833 6563-6590/com.example.send_sm_test I/qtaguid: Untagging socket 50 failed errno=-2 02-02 11:09:26.833 6563-6590/com.example.send_sm_test W/NetworkManagementSocketTagger: untagSocket(50) failed with errno -2
UPDATE:
Code:
public void run1(){
try {
while(true) {
Log.d(TAG, "test");
RequestQueue queue = Volley.newRequestQueue(this);
String url = "xxx";
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
[user=439709]@override[/user]
public void onResponse(String response) {
Log.d(TAG, "=============response=============");
//check response its is ok
if(response.length() > 0){
textView.setText( response);
}else{
Log.d(TAG, "NU am mesaj de trimis!");
}
}
}, new Response.ErrorListener() {
[user=439709]@override[/user]
public void onErrorResponse(VolleyError error) {
textView.setText("IMI PARE RAU CEVA NU A MERS!!");
}
});
stringRequest.setTag(RequestTAG);
queue.add(stringRequest);
if(queue != null){
queue.cancelAll(RequestTAG);
}
Thread.sleep(9000); //1000 milliseconds is one second.
}
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
I introduced TAG to close each previous connection but it seems that this solved only the errors that were created but did not solve my request to the site. Next, the request submission does not work, but it does not cause any error ...
SOLVED :
[SOLVED] OTA manual update for every version to last possible [FIXED] - FINALLY
SOLVED : https://forum.xda-developers.com/t/ota-manual-update-finally.4368411/post-86021225 [ORIGINAL] New quest : https://github.com/R0rt1z2/realme-ota/ Thx to Roger Ortiz R0rt1z2 When I'll have time to do that ... Looking forward for...
forum.xda-developers.com
[ORIGINAL]
New quest :
https://github.com/R0rt1z2/realme-ota/
Thx to Roger Ortiz R0rt1z2
When I'll have time to do that ...
Looking forward for help. Need just pointer to files from .28 to .44.
Thank you. Hope it would work, been trying on windows but have problems with environment ....
ImportError: cannot import name 'Crypto' from 'utils'
ImportError: cannot import name 'Crypto' from 'realme_ota.utils'
It's win python ....
Finnaly after manual rearange of the main.py
And installing logger and config dependencies ...
C:\Users\\\AppData\Local\Programs\Python\Python39\Lib\site-packages\realme_ota>py main.py
usage: main.py [-h] [-c SERVER] [-t TIMEOUT] [-d DUMP] [-o ONLY] [-s] [-v {0,1}] product_model ota_version {1,2}
main.py: error: the following arguments are required: product_model, ota_version, rui_version
On to it ....
Too much depedencies error (logger and config).
If any1 could help and run :
main.py RMX3081 GDPR_11_A.41_2021081818280000 2
"Dependencies" are files - calls to utils from subdir /utils/ - config.py, crypto.py and logger.py ....
Fixed that ... Problems with Crypto and pycryptodome ....
Code:
realme_ota\utils\crypto.py", line 9, in <module>
from Crypto.Cipher import AES
ModuleNotFoundError: No module named 'Crypto'
Giving up on this win machine
HOW TO FINALLY :
Code:
py main.py -c 2 -d out.txt RMX3081 RMX3081NV87_11.A.41_1410_202108181828
Update from .41 to latest update using server 2 [INDIA] using Dump option.
Code:
C:\Users\\\AppData\Local\Programs\Python\Python39\Lib\site-packages\realme_ota>py main.py -c 2 -d out.txt RMX3081 RMX3081NV87_11.A.41_1410_202108181828 2
[2021-11-29 20:32:28.354495] I: RealmeUI V2 RMX3081 (A) - 1.A.41_1410_202108181828
[2021-11-29 20:32:33.696062] I: Successfully saved request as out.txt!
Output DUMP : out.txt
Code:
{
"aid": "RMX3081NV87_11.A",
"androidVersion": "Android 11",
"colorOSVersion": "ColorOS 11",
"componentAssembleType": true,
"components": [
{
"componentId": "my_manifest_10000111.202111032250273187372",
"componentName": "my_manifest",
"componentPackets": {
"id": "foreign_my_manifest_10000111.202111032250273187372_1_fce39c14247311b4c885f4c418b66036",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/0872140043914eceaad85887ff1df0cf.zip",
"md5": "fce39c14247311b4c885f4c418b66036",
"size": "1227625",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/0872140043914eceaad85887ff1df0cf.zip"
},
"componentVersion": "10000111.202111032250273187372"
},
{
"componentId": "my_stock_20713.2.20.202111032250273187372",
"componentName": "my_stock",
"componentPackets": {
"id": "foreign_my_stock_20713.2.20.202111032250273187372_1_39a7edd4a2960b393c130195a2670cbc",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/3e03dd24876341538cd5dde276aa9bbc.zip",
"md5": "39a7edd4a2960b393c130195a2670cbc",
"size": "469505882",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/3e03dd24876341538cd5dde276aa9bbc.zip"
},
"componentVersion": "20713.2.20.202111032250273187372"
},
{
"componentId": "my_heytap_20713.5.25.202111030000103180094",
"componentName": "my_heytap",
"componentPackets": {
"id": "foreign_my_heytap_20713.5.25.202111030000103180094_1_d62cf6aba23b71b25efb40be0aff1bf3",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/a8420dcdedda42938cd886e611bb467e.zip",
"md5": "d62cf6aba23b71b25efb40be0aff1bf3",
"size": "491548624",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/a8420dcdedda42938cd886e611bb467e.zip"
},
"componentVersion": "20713.5.25.202111030000103180094"
},
{
"componentId": "my_carrier_20211021102052.1036395840ab0dca",
"componentName": "my_carrier",
"componentPackets": {
"id": "foreign_my_carrier_20211021102052.1036395840ab0dca_1_d4351701c660fdb2e3c83b353d1d0c79",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/8a8d3d144da244cb8dc3302590cc738e.zip",
"md5": "d4351701c660fdb2e3c83b353d1d0c79",
"size": "1089458",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/8a8d3d144da244cb8dc3302590cc738e.zip"
},
"componentVersion": "20211021102052.1036395840ab0dca"
},
{
"componentId": "20713_system_vendor_20711.3.8.202111091804433226460",
"componentName": "system_vendor",
"componentPackets": {
"id": "foreign_20713_system_vendor_20711.3.8.202111091804433226460_1_8d8d551720b9ecdb9e2b6a1d4bb3009f",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/3666f65646c2437fb2c3f6b9bafef5bd.zip",
"md5": "8d8d551720b9ecdb9e2b6a1d4bb3009f",
"size": "1966380900",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/3666f65646c2437fb2c3f6b9bafef5bd.zip"
},
"componentVersion": "20711.3.8.202111091804433226460"
},
{
"componentId": "my_region_20713.9.14.202111090200133222408",
"componentName": "my_region",
"componentPackets": {
"id": "foreign_my_region_20713.9.14.202111090200133222408_1_7c04826ae8aa91cd58feb36cd5b48601",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/34ca47390d43469881b0ad7e1cff8e85.zip",
"md5": "7c04826ae8aa91cd58feb36cd5b48601",
"size": "319731978",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/34ca47390d43469881b0ad7e1cff8e85.zip"
},
"componentVersion": "20713.9.14.202111090200133222408"
}
],
"decentralize": {
"offset": 27625,
"round": 28800,
"strategyVersion": "default"
},
"description": {
"share": ".",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/445df25ec4fb49c39f27d03f23442243.html?logoType=1"
},
"googlePatchInfo": "0",
"group": "RMX3081_11.A.44_1440",
"id": "619f488966c96100957ea8de",
"isNvDescription": false,
"isRecruit": false,
"noticeType": 0,
"nvId16": "NV87",
"osVersion": "ColorOS 11",
"otaTemplateId": "619b5a48124eec0095f75c9c",
"otaVersion": "RMX3081NV87_11.A.44_1440_202111092109",
"paramFlag": 1,
"parent": "ota-template",
"reminderType": 0,
"rid": "633da3f9-4237-4306-b4a4-015d643f20df",
"securityPatch": "2021-11-05",
"securityPatchVendor": "2021-11-05",
"silenceUpdate": 0,
"status": "published",
"timestampH5": "2021.11.15",
"versionCode": 1440,
"versionName": "RMX3081_11_A.44",
"versionTypeH5": "Official version"
}
So far so good .... Downloading ....
Now I know how the MSM works and recovery ota update meaning updating : Y from X
Partially flash and update the components ...
We have a recovery flash binary tool to work with our device ....
Nicely. This is a start of an official manual flashing guys.
Hit thx because I have earned it
The last one is a description.
For last .41--->.44 OTA update the final Description is located at : https://gauss-componentotacostmanua...df25ec4fb49c39f27d03f23442243.html?logoType=1
Yes, for working update via recovery *.ozip you mush flash each component file or join the update script and all included files included in each partialy zip.
Or there is still a way to get official OS Update from current https://download.c.realme.com/osupdate ... but still no official update for Realme 8 Pro or URL sniff location (for upgrade procedure) for now ...
We will wait for the official ozip update for RMX3081 on web and we can flash original file via recovery.
StratOS_HTC said:
HOW TO FINALLY :
Code:
py main.py -c 2 -d out.txt RMX3081 RMX3081NV87_11.A.41_1410_202108181828
Update from .41 to latest update using server 2 [INDIA] using Dump option.
Code:
C:\Users\\\AppData\Local\Programs\Python\Python39\Lib\site-packages\realme_ota>py main.py -c 2 -d out.txt RMX3081 RMX3081NV87_11.A.41_1410_202108181828 2
[2021-11-29 20:32:28.354495] I: RealmeUI V2 RMX3081 (A) - 1.A.41_1410_202108181828
[2021-11-29 20:32:33.696062] I: Successfully saved request as out.txt!
Output DUMP : out.txt
Code:
{
"aid": "RMX3081NV87_11.A",
"androidVersion": "Android 11",
"colorOSVersion": "ColorOS 11",
"componentAssembleType": true,
"components": [
{
"componentId": "my_manifest_10000111.202111032250273187372",
"componentName": "my_manifest",
"componentPackets": {
"id": "foreign_my_manifest_10000111.202111032250273187372_1_fce39c14247311b4c885f4c418b66036",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/0872140043914eceaad85887ff1df0cf.zip",
"md5": "fce39c14247311b4c885f4c418b66036",
"size": "1227625",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/0872140043914eceaad85887ff1df0cf.zip"
},
"componentVersion": "10000111.202111032250273187372"
},
{
"componentId": "my_stock_20713.2.20.202111032250273187372",
"componentName": "my_stock",
"componentPackets": {
"id": "foreign_my_stock_20713.2.20.202111032250273187372_1_39a7edd4a2960b393c130195a2670cbc",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/3e03dd24876341538cd5dde276aa9bbc.zip",
"md5": "39a7edd4a2960b393c130195a2670cbc",
"size": "469505882",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/3e03dd24876341538cd5dde276aa9bbc.zip"
},
"componentVersion": "20713.2.20.202111032250273187372"
},
{
"componentId": "my_heytap_20713.5.25.202111030000103180094",
"componentName": "my_heytap",
"componentPackets": {
"id": "foreign_my_heytap_20713.5.25.202111030000103180094_1_d62cf6aba23b71b25efb40be0aff1bf3",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/a8420dcdedda42938cd886e611bb467e.zip",
"md5": "d62cf6aba23b71b25efb40be0aff1bf3",
"size": "491548624",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/a8420dcdedda42938cd886e611bb467e.zip"
},
"componentVersion": "20713.5.25.202111030000103180094"
},
{
"componentId": "my_carrier_20211021102052.1036395840ab0dca",
"componentName": "my_carrier",
"componentPackets": {
"id": "foreign_my_carrier_20211021102052.1036395840ab0dca_1_d4351701c660fdb2e3c83b353d1d0c79",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/8a8d3d144da244cb8dc3302590cc738e.zip",
"md5": "d4351701c660fdb2e3c83b353d1d0c79",
"size": "1089458",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/8a8d3d144da244cb8dc3302590cc738e.zip"
},
"componentVersion": "20211021102052.1036395840ab0dca"
},
{
"componentId": "20713_system_vendor_20711.3.8.202111091804433226460",
"componentName": "system_vendor",
"componentPackets": {
"id": "foreign_20713_system_vendor_20711.3.8.202111091804433226460_1_8d8d551720b9ecdb9e2b6a1d4bb3009f",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/3666f65646c2437fb2c3f6b9bafef5bd.zip",
"md5": "8d8d551720b9ecdb9e2b6a1d4bb3009f",
"size": "1966380900",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/3666f65646c2437fb2c3f6b9bafef5bd.zip"
},
"componentVersion": "20711.3.8.202111091804433226460"
},
{
"componentId": "my_region_20713.9.14.202111090200133222408",
"componentName": "my_region",
"componentPackets": {
"id": "foreign_my_region_20713.9.14.202111090200133222408_1_7c04826ae8aa91cd58feb36cd5b48601",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/34ca47390d43469881b0ad7e1cff8e85.zip",
"md5": "7c04826ae8aa91cd58feb36cd5b48601",
"size": "319731978",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/34ca47390d43469881b0ad7e1cff8e85.zip"
},
"componentVersion": "20713.9.14.202111090200133222408"
}
],
"decentralize": {
"offset": 27625,
"round": 28800,
"strategyVersion": "default"
},
"description": {
"share": ".",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/445df25ec4fb49c39f27d03f23442243.html?logoType=1"
},
"googlePatchInfo": "0",
"group": "RMX3081_11.A.44_1440",
"id": "619f488966c96100957ea8de",
"isNvDescription": false,
"isRecruit": false,
"noticeType": 0,
"nvId16": "NV87",
"osVersion": "ColorOS 11",
"otaTemplateId": "619b5a48124eec0095f75c9c",
"otaVersion": "RMX3081NV87_11.A.44_1440_202111092109",
"paramFlag": 1,
"parent": "ota-template",
"reminderType": 0,
"rid": "633da3f9-4237-4306-b4a4-015d643f20df",
"securityPatch": "2021-11-05",
"securityPatchVendor": "2021-11-05",
"silenceUpdate": 0,
"status": "published",
"timestampH5": "2021.11.15",
"versionCode": 1440,
"versionName": "RMX3081_11_A.44",
"versionTypeH5": "Official version"
}
So far so good .... Downloading ....
Click to expand...
Click to collapse
can you try on this Realme GT 5G
ro.build.display.full_id=RMX2202export_11_C.03_2021101204410286
ro.build.display.id=RMX2202_11_C.03
ro.build.display.ota=RMX2202_11_C.03
ro.build.version.ota=RMX2202_11.C.03_1030_202110120441
MrVeverythingHave you allready tried updating ? I cannot find any stock rom ID nor update. not on any continent . Not also original posted firmwareor opdate.Last available ? Check out the correct getprop values !
Check out the getprop infos and positional arguments:
product_model Product Model (ro.product.name).
ota_version OTA Version (ro.build.version.ota).
rui_version RealmeUI Version (1, 2).
Bash:
usage: main.py [-h] [-c SERVER] [-t TIMEOUT] [-d DUMP] [-o ONLY] [-s] [-v {0,1}] product_model ota_version rui_version
positional arguments:
product_model Product Model (ro.product.name).
ota_version OTA Version (ro.build.version.ota).
rui_version RealmeUI Version (1, 2).
optional arguments:
-h, --help show this help message and exit
-c SERVER, --server SERVER
Use specific server for the request (GL = 0, CN = 1, IN = 2, EU = 3).
-t TIMEOUT, --timeout TIMEOUT
Use custom timeout for the request.
-d DUMP, --dump DUMP Save request response into file.
-o ONLY, --only ONLY Only show the desired value from the request.
-s, --silent Enable silent output (purge logging).
-v {0,1}, --verbosity {0,1}
Increase or decrease verbosity.
i try this, invalid product name/version
Realme GT 5G (rmx2202
As noticed they are working on (implementing) for V3 ota. Will be available after the primarly updatev3.0 gets out. Primarly ota update for UI 3.0. Android 12. @MrVeverything check out the msg's.
Code:
py main.py -c 2 -d out.txt -v 1 RMX2202 RMX2202_11.C.03_1030_202110120441 2
Code:
{
"aid": "RMX2202NV1B_11.C",
"androidVersion": "Android 12",
"colorOSVersion": "ColorOS 12.0",
"componentAssembleType": true,
"components": [
{
"componentId": "my_manifest_RMX2202_11.C.05_1050_202112161927.1B.74faeb29",
"componentName": "my_manifest",
"componentPackets": {
"id": "foreign_my_manifest_RMX2202_11.C.05_1050_202112161927.1B.74faeb29_1_9018f7d685a4dd01ab3b7949be4537f0",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-d08b7e6a99b1718e1bce7a4bf97780dd/component-ota/21/12/21/1c01739b26c747b4aa6cfcb661608df0.zip",
"md5": "9018f7d685a4dd01ab3b7949be4537f0",
"size": "4753589719",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-d08b7e6a99b1718e1bce7a4bf97780dd/component-ota/21/12/21/1c01739b26c747b4aa6cfcb661608df0.zip",
"vabInfo": {
"data": {
"extra_params": "metadata_hash:7c31c6fc843fd4c2cfbf8ec56c62b4e7356dcd8a535529e161d94de08655d8f0",
"header": [
"FILE_HASH=1jXpOfaZtVaWf1+JdQdzsz75WE5DFoNWMp1UlcMkxnc=",
"FILE_SIZE=4753584009",
"METADATA_HASH=hdaqrYoM0nqBfItqE91CRGsHf4/YzL9f91jxL14Brus=",
"METADATA_SIZE=188914",
"ota_target_version=RMX2202_11.C.05_1050_202112161927"
],
"otaStreamingProperty": "payload_metadata.bin:2311:189181,payload.bin:2311:4753584009,payload_properties.txt:4753586378:209,metadata:69:865,metadata.pb:1002:1242",
"vab_package_hash": "9018f7d685a4dd01ab3b7949be4537f0"
}
}
},
"componentVersion": "RMX2202_11.C.05_1050_202112161927.1B.74faeb29"
}
],
"decentralize": {
"offset": 6340,
"round": 28800,
"strategyVersion": "default"
},
"description": {
"share": ".",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-d08b7e6a99b1718e1bce7a4bf97780dd/component-ota/21/12/29/8da09a9cc2ed456a9d1601979934625a.html?logoType=1"
},
"googlePatchInfo": "0",
"group": "RMX2202_11.C.05_1050_202112161927",
"id": "61c14461124eec0095f85e0a",
"isNvDescription": false,
"isRecruit": false,
"noticeType": 0,
"nvId16": "NV1B",
"osVersion": "ColorOS 12.0",
"otaTemplateId": "61cac8d1124eec00cf82d567",
"otaVersion": "RMX2202_11.C.05_1050_202112161927",
"paramFlag": 1,
"parent": "ota-template",
"reminderType": 0,
"rid": "a3269cb9-ee84-44c1-bc4c-83d60377a4f9",
"securityPatch": "2021-12-05",
"securityPatchVendor": "2021-12-05",
"silenceUpdate": 0,
"status": "published",
"timestampH5": "2021.12.29",
"versionCode": 1050,
"versionName": "RMX2202_11_C.05",
"versionTypeH5": "Official version"
}
StratOS_HTC said:
Code:
py main.py -c 2 -d out.txt -v 1 RMX2202 RMX2202_11.C.03_1030_202110120441 2
Code:
{
"aid": "RMX2202NV1B_11.C",
"androidVersion": "Android 12",
"colorOSVersion": "ColorOS 12.0",
"componentAssembleType": true,
"components": [
{
"componentId": "my_manifest_RMX2202_11.C.05_1050_202112161927.1B.74faeb29",
"componentName": "my_manifest",
"componentPackets": {
"id": "foreign_my_manifest_RMX2202_11.C.05_1050_202112161927.1B.74faeb29_1_9018f7d685a4dd01ab3b7949be4537f0",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-d08b7e6a99b1718e1bce7a4bf97780dd/component-ota/21/12/21/1c01739b26c747b4aa6cfcb661608df0.zip",
"md5": "9018f7d685a4dd01ab3b7949be4537f0",
"size": "4753589719",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-d08b7e6a99b1718e1bce7a4bf97780dd/component-ota/21/12/21/1c01739b26c747b4aa6cfcb661608df0.zip",
"vabInfo": {
"data": {
"extra_params": "metadata_hash:7c31c6fc843fd4c2cfbf8ec56c62b4e7356dcd8a535529e161d94de08655d8f0",
"header": [
"FILE_HASH=1jXpOfaZtVaWf1+JdQdzsz75WE5DFoNWMp1UlcMkxnc=",
"FILE_SIZE=4753584009",
"METADATA_HASH=hdaqrYoM0nqBfItqE91CRGsHf4/YzL9f91jxL14Brus=",
"METADATA_SIZE=188914",
"ota_target_version=RMX2202_11.C.05_1050_202112161927"
],
"otaStreamingProperty": "payload_metadata.bin:2311:189181,payload.bin:2311:4753584009,payload_properties.txt:4753586378:209,metadata:69:865,metadata.pb:1002:1242",
"vab_package_hash": "9018f7d685a4dd01ab3b7949be4537f0"
}
}
},
"componentVersion": "RMX2202_11.C.05_1050_202112161927.1B.74faeb29"
}
],
"decentralize": {
"offset": 6340,
"round": 28800,
"strategyVersion": "default"
},
"description": {
"share": ".",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-d08b7e6a99b1718e1bce7a4bf97780dd/component-ota/21/12/29/8da09a9cc2ed456a9d1601979934625a.html?logoType=1"
},
"googlePatchInfo": "0",
"group": "RMX2202_11.C.05_1050_202112161927",
"id": "61c14461124eec0095f85e0a",
"isNvDescription": false,
"isRecruit": false,
"noticeType": 0,
"nvId16": "NV1B",
"osVersion": "ColorOS 12.0",
"otaTemplateId": "61cac8d1124eec00cf82d567",
"otaVersion": "RMX2202_11.C.05_1050_202112161927",
"paramFlag": 1,
"parent": "ota-template",
"reminderType": 0,
"rid": "a3269cb9-ee84-44c1-bc4c-83d60377a4f9",
"securityPatch": "2021-12-05",
"securityPatchVendor": "2021-12-05",
"silenceUpdate": 0,
"status": "published",
"timestampH5": "2021.12.29",
"versionCode": 1050,
"versionName": "RMX2202_11_C.05",
"versionTypeH5": "Official version"
}
Click to expand...
Click to collapse
yes i have this
You have : RMX2202_11.C.03_1030_202110120441
Update : RMX2202_11.C.05_1050_202112161927
Download: here
Update info : here
StratOS_HTC said:
HOW TO FINALLY :
Code:
py main.py -c 2 -d out.txt RMX3081 RMX3081NV87_11.A.41_1410_202108181828
Update from .41 to latest update using server 2 [INDIA] using Dump option.
Code:
C:\Users\\\AppData\Local\Programs\Python\Python39\Lib\site-packages\realme_ota>py main.py -c 2 -d out.txt RMX3081 RMX3081NV87_11.A.41_1410_202108181828 2
[2021-11-29 20:32:28.354495] I: RealmeUI V2 RMX3081 (A) - 1.A.41_1410_202108181828
[2021-11-29 20:32:33.696062] I: Successfully saved request as out.txt!
Output DUMP : out.txt
Code:
{
"aid": "RMX3081NV87_11.A",
"androidVersion": "Android 11",
"colorOSVersion": "ColorOS 11",
"componentAssembleType": true,
"components": [
{
"componentId": "my_manifest_10000111.202111032250273187372",
"componentName": "my_manifest",
"componentPackets": {
"id": "foreign_my_manifest_10000111.202111032250273187372_1_fce39c14247311b4c885f4c418b66036",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/0872140043914eceaad85887ff1df0cf.zip",
"md5": "fce39c14247311b4c885f4c418b66036",
"size": "1227625",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/0872140043914eceaad85887ff1df0cf.zip"
},
"componentVersion": "10000111.202111032250273187372"
},
{
"componentId": "my_stock_20713.2.20.202111032250273187372",
"componentName": "my_stock",
"componentPackets": {
"id": "foreign_my_stock_20713.2.20.202111032250273187372_1_39a7edd4a2960b393c130195a2670cbc",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/3e03dd24876341538cd5dde276aa9bbc.zip",
"md5": "39a7edd4a2960b393c130195a2670cbc",
"size": "469505882",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/3e03dd24876341538cd5dde276aa9bbc.zip"
},
"componentVersion": "20713.2.20.202111032250273187372"
},
{
"componentId": "my_heytap_20713.5.25.202111030000103180094",
"componentName": "my_heytap",
"componentPackets": {
"id": "foreign_my_heytap_20713.5.25.202111030000103180094_1_d62cf6aba23b71b25efb40be0aff1bf3",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/a8420dcdedda42938cd886e611bb467e.zip",
"md5": "d62cf6aba23b71b25efb40be0aff1bf3",
"size": "491548624",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/a8420dcdedda42938cd886e611bb467e.zip"
},
"componentVersion": "20713.5.25.202111030000103180094"
},
{
"componentId": "my_carrier_20211021102052.1036395840ab0dca",
"componentName": "my_carrier",
"componentPackets": {
"id": "foreign_my_carrier_20211021102052.1036395840ab0dca_1_d4351701c660fdb2e3c83b353d1d0c79",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/8a8d3d144da244cb8dc3302590cc738e.zip",
"md5": "d4351701c660fdb2e3c83b353d1d0c79",
"size": "1089458",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/8a8d3d144da244cb8dc3302590cc738e.zip"
},
"componentVersion": "20211021102052.1036395840ab0dca"
},
{
"componentId": "20713_system_vendor_20711.3.8.202111091804433226460",
"componentName": "system_vendor",
"componentPackets": {
"id": "foreign_20713_system_vendor_20711.3.8.202111091804433226460_1_8d8d551720b9ecdb9e2b6a1d4bb3009f",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/3666f65646c2437fb2c3f6b9bafef5bd.zip",
"md5": "8d8d551720b9ecdb9e2b6a1d4bb3009f",
"size": "1966380900",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/3666f65646c2437fb2c3f6b9bafef5bd.zip"
},
"componentVersion": "20711.3.8.202111091804433226460"
},
{
"componentId": "my_region_20713.9.14.202111090200133222408",
"componentName": "my_region",
"componentPackets": {
"id": "foreign_my_region_20713.9.14.202111090200133222408_1_7c04826ae8aa91cd58feb36cd5b48601",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/34ca47390d43469881b0ad7e1cff8e85.zip",
"md5": "7c04826ae8aa91cd58feb36cd5b48601",
"size": "319731978",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/34ca47390d43469881b0ad7e1cff8e85.zip"
},
"componentVersion": "20713.9.14.202111090200133222408"
}
],
"decentralize": {
"offset": 27625,
"round": 28800,
"strategyVersion": "default"
},
"description": {
"share": ".",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/445df25ec4fb49c39f27d03f23442243.html?logoType=1"
},
"googlePatchInfo": "0",
"group": "RMX3081_11.A.44_1440",
"id": "619f488966c96100957ea8de",
"isNvDescription": false,
"isRecruit": false,
"noticeType": 0,
"nvId16": "NV87",
"osVersion": "ColorOS 11",
"otaTemplateId": "619b5a48124eec0095f75c9c",
"otaVersion": "RMX3081NV87_11.A.44_1440_202111092109",
"paramFlag": 1,
"parent": "ota-template",
"reminderType": 0,
"rid": "633da3f9-4237-4306-b4a4-015d643f20df",
"securityPatch": "2021-11-05",
"securityPatchVendor": "2021-11-05",
"silenceUpdate": 0,
"status": "published",
"timestampH5": "2021.11.15",
"versionCode": 1440,
"versionName": "RMX3081_11_A.44",
"versionTypeH5": "Official version"
}
So far so good .... Downloading ....
Click to expand...
Click to collapse
i need "OTA" stock rom for Realme 8 pro help please
Official OTA still doesn't exists. (AS told it will be available this month !!) https://www.realme.com/in/support/software-update
If you are talking about OFP (Official firmware package) it's available on the net.
latest on https://realmefirmware.com/realme-8-pro-firmware/
If you are using GDPR rom you cannot flash via *zip or *.ozip in recovery.
StratOS_HTC said:
Official OTA still doesn't exists. (AS told it will be available this month !!) https://www.realme.com/in/support/software-update
If you are talking about OFP (Official firmware package) it's available on the net.
latest on https://realmefirmware.com/realme-8-pro-firmware/
If you are using GDPR rom you cannot flash via *zip or *.ozip in recovery.
Click to expand...
Click to collapse
ok thanks Sir..just want to revive my rebootlooping realme 8 pro..but i need user and pass for msn tool.
StratOS_HTC said:
HOW TO FINALLY :
Code:
py main.py -c 2 -d out.txt RMX3081 RMX3081NV87_11.A.41_1410_202108181828
Update from .41 to latest update using server 2 [INDIA] using Dump option.
Code:
C:\Users\\\AppData\Local\Programs\Python\Python39\Lib\site-packages\realme_ota>py main.py -c 2 -d out.txt RMX3081 RMX3081NV87_11.A.41_1410_202108181828 2
[2021-11-29 20:32:28.354495] I: RealmeUI V2 RMX3081 (A) - 1.A.41_1410_202108181828
[2021-11-29 20:32:33.696062] I: Successfully saved request as out.txt!
Output DUMP : out.txt
Code:
{
"aid": "RMX3081NV87_11.A",
"androidVersion": "Android 11",
"colorOSVersion": "ColorOS 11",
"componentAssembleType": true,
"components": [
{
"componentId": "my_manifest_10000111.202111032250273187372",
"componentName": "my_manifest",
"componentPackets": {
"id": "foreign_my_manifest_10000111.202111032250273187372_1_fce39c14247311b4c885f4c418b66036",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/0872140043914eceaad85887ff1df0cf.zip",
"md5": "fce39c14247311b4c885f4c418b66036",
"size": "1227625",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/0872140043914eceaad85887ff1df0cf.zip"
},
"componentVersion": "10000111.202111032250273187372"
},
{
"componentId": "my_stock_20713.2.20.202111032250273187372",
"componentName": "my_stock",
"componentPackets": {
"id": "foreign_my_stock_20713.2.20.202111032250273187372_1_39a7edd4a2960b393c130195a2670cbc",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/3e03dd24876341538cd5dde276aa9bbc.zip",
"md5": "39a7edd4a2960b393c130195a2670cbc",
"size": "469505882",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/3e03dd24876341538cd5dde276aa9bbc.zip"
},
"componentVersion": "20713.2.20.202111032250273187372"
},
{
"componentId": "my_heytap_20713.5.25.202111030000103180094",
"componentName": "my_heytap",
"componentPackets": {
"id": "foreign_my_heytap_20713.5.25.202111030000103180094_1_d62cf6aba23b71b25efb40be0aff1bf3",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/a8420dcdedda42938cd886e611bb467e.zip",
"md5": "d62cf6aba23b71b25efb40be0aff1bf3",
"size": "491548624",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/a8420dcdedda42938cd886e611bb467e.zip"
},
"componentVersion": "20713.5.25.202111030000103180094"
},
{
"componentId": "my_carrier_20211021102052.1036395840ab0dca",
"componentName": "my_carrier",
"componentPackets": {
"id": "foreign_my_carrier_20211021102052.1036395840ab0dca_1_d4351701c660fdb2e3c83b353d1d0c79",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/8a8d3d144da244cb8dc3302590cc738e.zip",
"md5": "d4351701c660fdb2e3c83b353d1d0c79",
"size": "1089458",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/8a8d3d144da244cb8dc3302590cc738e.zip"
},
"componentVersion": "20211021102052.1036395840ab0dca"
},
{
"componentId": "20713_system_vendor_20711.3.8.202111091804433226460",
"componentName": "system_vendor",
"componentPackets": {
"id": "foreign_20713_system_vendor_20711.3.8.202111091804433226460_1_8d8d551720b9ecdb9e2b6a1d4bb3009f",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/3666f65646c2437fb2c3f6b9bafef5bd.zip",
"md5": "8d8d551720b9ecdb9e2b6a1d4bb3009f",
"size": "1966380900",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/3666f65646c2437fb2c3f6b9bafef5bd.zip"
},
"componentVersion": "20711.3.8.202111091804433226460"
},
{
"componentId": "my_region_20713.9.14.202111090200133222408",
"componentName": "my_region",
"componentPackets": {
"id": "foreign_my_region_20713.9.14.202111090200133222408_1_7c04826ae8aa91cd58feb36cd5b48601",
"manualUrl": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/34ca47390d43469881b0ad7e1cff8e85.zip",
"md5": "7c04826ae8aa91cd58feb36cd5b48601",
"size": "319731978",
"type": "1",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/34ca47390d43469881b0ad7e1cff8e85.zip"
},
"componentVersion": "20713.9.14.202111090200133222408"
}
],
"decentralize": {
"offset": 27625,
"round": 28800,
"strategyVersion": "default"
},
"description": {
"share": ".",
"url": "https://gauss-componentotacostmanual-in.allawnofs.com/remove-61717dc3fdb3b6d5dcc2fd185fa7d954/component-ota/21/11/15/445df25ec4fb49c39f27d03f23442243.html?logoType=1"
},
"googlePatchInfo": "0",
"group": "RMX3081_11.A.44_1440",
"id": "619f488966c96100957ea8de",
"isNvDescription": false,
"isRecruit": false,
"noticeType": 0,
"nvId16": "NV87",
"osVersion": "ColorOS 11",
"otaTemplateId": "619b5a48124eec0095f75c9c",
"otaVersion": "RMX3081NV87_11.A.44_1440_202111092109",
"paramFlag": 1,
"parent": "ota-template",
"reminderType": 0,
"rid": "633da3f9-4237-4306-b4a4-015d643f20df",
"securityPatch": "2021-11-05",
"securityPatchVendor": "2021-11-05",
"silenceUpdate": 0,
"status": "published",
"timestampH5": "2021.11.15",
"versionCode": 1440,
"versionName": "RMX3081_11_A.44",
"versionTypeH5": "Official version"
}
So far so good .... Downloading ....
Click to expand...
Click to collapse
Hello Sir,
Could you tell me how to get the thing after NV.. ( For eg. RMX3360NV1B ) How to get hold of it or know which NV is our region.
Edit :
I found out which NV code belongs to which region but still i am unable to fetch ota links for few region
TWOP : 1A | ID : 1D | RU : 37 | MYOP : 38 | TH : 39 | PH : 3E | BD : 55 | KZ : 5A | LK : 60 | KE : 74 | EG : 75 | MX : 7B | SA : 83 | LATAM : 9A | BR : 9E | EUEX : 44 | EU-NONEEA : 85 | GB : 8A | CN : 97
Currently I Cannot Fetch Links for REGION :- ID , RU , EUEX , EU-NONEEA , CN
Can you help me out ?
Thanks in advance