Hi All,
As luckily Gen9 are very similar to Gen8, here are Gen9 AES/MPK keys if anyone wants to unpack Gen9 firmware:
Code:
static unsigned char G9A_AES[] = {
0x35,0x22,0x9A,0x0F,0xCA,0xA4,0xAC,0x22,
0xC6,0x1B,0x73,0x4E,0x4F,0x57,0xBF,0xB0
};
static unsigned char G9A_BOOTLOADER[] = {
0xFF, 0xDC, 0x6A, 0xB2, 0xF9, 0xBA, 0x42, 0xC2, 0x00, 0x58,
0xFD, 0xE0, 0x88, 0xE8, 0x2B, 0x4C, 0xFD, 0xAA, 0x22, 0x90,
0xF0, 0x4C, 0xD8, 0x8C, 0x5E, 0x67, 0xED, 0xAD, 0xFA, 0x5A,
0x7B, 0x93, 0x90, 0x11, 0x2A, 0x8D, 0x0F, 0x98, 0xD6, 0x24,
0x37, 0xF7, 0x0B, 0xDC, 0x83, 0x67, 0x0A, 0xF4, 0x0E, 0x7D,
0xBB, 0xA9, 0x28, 0xFF, 0x7C, 0x56, 0xFB, 0x05, 0x39, 0x27,
0xD2, 0xBA, 0x96, 0x0B, 0x8B, 0xF8, 0x58, 0x80, 0xC8, 0xAD,
0xD5, 0xF9, 0xDF, 0x93, 0xBE, 0x46, 0x2F, 0x04, 0xA9, 0x98,
0xF6, 0xE9, 0x61, 0xE9, 0xBC, 0x72, 0x27, 0xC7, 0xEA, 0xF4,
0x1A, 0xCF, 0xED, 0x25, 0xEC, 0x93, 0xDB, 0x6F, 0x42, 0x8E,
0x93, 0xC4, 0x12, 0x64, 0xBF, 0x40, 0xB7, 0xEA, 0xBE, 0xBC,
0xE9, 0xE2, 0xE8, 0xD2, 0x29, 0xFB, 0xFD, 0x4E, 0x2C, 0x39,
0x63, 0x1E, 0x60, 0x4B, 0xF2, 0xC7, 0x49, 0xEC, 0x01, 0x00,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xBB,
0x42, 0xD2
};
static unsigned char G9A_RELMPK[] = {
0x5D, 0x68, 0x13, 0xDB, 0x93, 0xDE, 0x2E, 0x1F, 0xEB, 0xD5,
0xD2, 0x80, 0x57, 0x31, 0x4D, 0x60, 0xF6, 0x14, 0x15, 0xA0,
0xAA, 0x4D, 0x6C, 0x2A, 0x24, 0xA1, 0x39, 0xB7, 0x99, 0x22,
0xF6, 0x8E, 0x3C, 0x70, 0x91, 0x31, 0xD2, 0x01, 0xAE, 0xBE,
0xFA, 0x71, 0x17, 0xF5, 0xDF, 0xF8, 0xD8, 0xCD, 0x62, 0x87,
0xF8, 0x53, 0x1A, 0x5A, 0x5C, 0x37, 0x6C, 0xF0, 0xAD, 0xBA,
0x20, 0xBE, 0xC7, 0x37, 0x0E, 0xF4, 0x98, 0xBE, 0x80, 0x6F,
0x10, 0x54, 0xE8, 0xB9, 0x4A, 0x39, 0x86, 0x77, 0xC6, 0x4C,
0x7C, 0xFC, 0xC5, 0xC2, 0x61, 0xE9, 0xAB, 0x81, 0xB5, 0xF3,
0x2A, 0x30, 0x87, 0xEF, 0xB7, 0x3A, 0xD5, 0xD9, 0x11, 0x60,
0x7E, 0xC8, 0xDD, 0x28, 0x9A, 0xB9, 0xF3, 0x97, 0x53, 0x97,
0xD5, 0x26, 0xE3, 0x67, 0x09, 0xF3, 0xCC, 0x3D, 0x32, 0xDF,
0x02, 0x66, 0xAA, 0xB1, 0x1C, 0x75, 0x13, 0xAF, 0x01, 0x00,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x18,
0xC3, 0x2A
};
static unsigned char G9A_DEVMPK[] = {
0xD3, 0x07, 0xA8, 0xC3, 0xF1, 0x02, 0x28, 0xB9, 0x9A, 0x37,
0xEF, 0x06, 0xF1, 0x75, 0x93, 0xA3, 0x73, 0xBA, 0x2A, 0x60,
0x25, 0x30, 0x33, 0x0D, 0x71, 0xAE, 0x4B, 0xF0, 0x07, 0xB0,
0xD8, 0x35, 0xBF, 0x06, 0xB0, 0x16, 0x9C, 0x6B, 0x1A, 0x9E,
0xC1, 0x80, 0xE7, 0xDA, 0xCC, 0x64, 0x61, 0x91, 0xF6, 0x1C,
0xD8, 0xFE, 0x10, 0x70, 0x9E, 0x26, 0x60, 0xFF, 0x4E, 0x26,
0xB8, 0x96, 0xE7, 0xB6, 0xDC, 0x01, 0x19, 0xE9, 0x43, 0xDB,
0xC7, 0xB7, 0xF8, 0xBC, 0x38, 0xFB, 0x9C, 0x6F, 0xDE, 0x1C,
0xF1, 0xA0, 0x68, 0xD7, 0x1F, 0x99, 0x4E, 0xBB, 0xC7, 0xCF,
0x17, 0x63, 0xA5, 0xBC, 0x41, 0xA7, 0x23, 0xCA, 0x5E, 0xF4,
0xF7, 0xE6, 0x2F, 0x0D, 0x0F, 0x36, 0x9F, 0x51, 0x56, 0x1E,
0x30, 0xD5, 0xB5, 0x7C, 0x8C, 0x1D, 0x1D, 0xCC, 0x5F, 0xBF,
0x12, 0xC8, 0xED, 0x4D, 0x28, 0xB2, 0x2D, 0xCC, 0x01, 0x00,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x7E,
0x2F, 0x24
};
static unsigned char G9A_PLUGMPK[] = {
0x37, 0xF9, 0x07, 0xB7, 0x38, 0xDD, 0xB1, 0x0A, 0x65, 0xFE,
0x67, 0xC8, 0x64, 0xC5, 0x14, 0xE4, 0xF6, 0xAF, 0x8D, 0xD8,
0xF3, 0x31, 0x37, 0x59, 0xEB, 0xEC, 0x23, 0x44, 0x84, 0xDD,
0x8B, 0x68, 0xD6, 0xEC, 0x5D, 0xDD, 0x84, 0x3B, 0xE4, 0x67,
0x45, 0x78, 0x56, 0x0F, 0x71, 0x91, 0xFB, 0xA2, 0x05, 0x54,
0x8C, 0xB2, 0xB9, 0x61, 0x6C, 0xE0, 0x91, 0x41, 0xB0, 0x02,
0xD5, 0x66, 0xA6, 0xC7, 0x81, 0x0E, 0x20, 0xBB, 0xD5, 0x85,
0x43, 0xB2, 0x7E, 0x01, 0xC2, 0xC4, 0x28, 0x13, 0x20, 0xC3,
0x75, 0xDF, 0xCB, 0x64, 0x66, 0x1E, 0xB9, 0x43, 0x92, 0xFD,
0x12, 0x99, 0x31, 0xA3, 0x55, 0xBC, 0x25, 0x9F, 0x09, 0x46,
0xE1, 0x1D, 0xD3, 0x5B, 0x12, 0xF7, 0xCB, 0x2C, 0x94, 0x05,
0x57, 0x4D, 0xCA, 0x6B, 0xF4, 0xD2, 0xD8, 0x49, 0x0C, 0x71,
0x39, 0x0E, 0x6D, 0xCC, 0xC9, 0x7E, 0x04, 0xDA, 0x01, 0x00,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x97,
0x29, 0x69
};
static unsigned char G9A_HDDMPK[] = {
0x9D, 0x4A, 0x3A, 0xFF, 0x34, 0xAC, 0x47, 0x69, 0xEF, 0xB0,
0xD9, 0xE6, 0x9C, 0xBF, 0x53, 0xFD, 0x35, 0x4A, 0xB8, 0x7B,
0xF5, 0xE4, 0x48, 0x2A, 0x29, 0x62, 0xB5, 0x01, 0x9A, 0xF7,
0x8D, 0xF8, 0xE3, 0x02, 0xDB, 0xEC, 0xAC, 0x45, 0xFA, 0x0D,
0x03, 0xEC, 0x10, 0x39, 0xC9, 0x21, 0x51, 0x77, 0x95, 0x59,
0x9B, 0x82, 0xBF, 0x85, 0x7D, 0x59, 0xFA, 0xD1, 0xD8, 0x8A,
0x91, 0x4E, 0x01, 0xFE, 0x5E, 0xEE, 0x4D, 0x5B, 0xB8, 0x66,
0xD6, 0x65, 0x92, 0x82, 0x3B, 0xFB, 0x0A, 0x3C, 0x1C, 0xF2,
0xE4, 0x99, 0xB5, 0x57, 0xF8, 0x3F, 0x7B, 0x6C, 0x35, 0x1E,
0x92, 0x07, 0x72, 0xE5, 0x73, 0x52, 0x70, 0x62, 0x5E, 0x17,
0x1B, 0x5D, 0x07, 0x72, 0x21, 0x3E, 0xD8, 0x37, 0xC5, 0xC5,
0x4E, 0x36, 0xCE, 0x16, 0x4E, 0x50, 0xC9, 0xE8, 0x4B, 0x99,
0x04, 0x89, 0x91, 0x5F, 0x38, 0x82, 0xCD, 0xAB, 0x01, 0x00,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE5, 0xB1,
0x4E, 0x10
};
I tested them on last firmware, it unpacks properly.
Have fun!
sry but how to work with this?
for the root !
@brunsbanjo:
Wenn du nicht weist wofür es ist, brauchst du es auch nicht ;-)
If you don't what to use it for, you don't need it.
Related
as kj6 is supposed to bring some bug fixes, I thought I'd check the kernel source.
there's not a huge amount of difference, but some looks interesting, hopefully of use to anyone wanting to building it.
Code:
--- drivers/input/touchscreen/mxt540e.c 2011-10-20 02:58:48.000000000
+++ drivers/input/touchscreen/mxt540e.c 2011-10-25 17:58:10.000000000
@@ -907,16 +907,16 @@
}
if (object_type == PROCG_NOISESUPPRESSION_T48) {
if (msg[4] == 5) { /* Median filter error */
printk("[TSP] Median filter Error\n");
get_object_info(data, PROCG_NOISESUPPRESSION_T48, &size, &obj_address);
- value = data->calcfg_batt_e;
+ value = 0;
error = write_mem(data, obj_address+2, 1, &value);
- msleep(5);
- value |= 0x20;
+ msleep(15);
+ value = data->calcfg_batt_e;
error |= write_mem(data, obj_address+2, 1, &value);
if(error) printk(KERN_ERR "[TSP] failed to reenable CHRGON\n");
}
}
if (object_type == TOUCH_MULTITOUCHSCREEN_T9) {
Code:
--- drivers/input/keyboard/cypress/cypress-touchkey.c 2011-10-20 02:58:48.000000000
+++ drivers/input/keyboard/cypress/cypress-touchkey.c 2011-10-25 17:58:10.000000000
@@ -1909,18 +1909,20 @@
int ret = 0;
#ifdef TEST_JIG_MODE
unsigned char get_touch = 0x40;
#endif
+#ifndef CONFIG_MACH_Q1_REV02
if (gpio_request(_3_TOUCH_SDA_28V, "_3_TOUCH_SDA_28V"))
WARN(1, "Fail to request gpio (_3_TOUCH_SDA_28V)\n");
if (gpio_request(_3_TOUCH_SCL_28V, "_3_TOUCH_SCL_28V"))
WARN(1, "Fail to request gpio (_3_TOUCH_SCL_28V)\n");
if (gpio_request(_3_GPIO_TOUCH_EN, "_3_GPIO_TOUCH_EN"))
WARN(1, "Fail to request gpio (_3_GPIO_TOUCH_EN)\n");
+#endif
if (gpio_request(_3_GPIO_TOUCH_INT, "_3_GPIO_TOUCH_INT"))
WARN(1, "Fail to request gpio (_3_GPIO_TOUCH_INT)\n");
/*20110222 N1_firmware_sync*/
sec_touchkey = device_create(sec_class, NULL, 0, NULL, "sec_touchkey");
@@ -2212,18 +2214,20 @@
misc_deregister(&touchkey_update_device);
if (touchkey_wq) {
destroy_workqueue(touchkey_wq);
}
+#ifndef CONFIG_MACH_Q1_REV02
gpio_free(_3_TOUCH_SDA_28V);
gpio_free(_3_TOUCH_SCL_28V);
gpio_free(_3_GPIO_TOUCH_EN);
+#endif
gpio_free(_3_GPIO_TOUCH_INT);
}
late_initcall(touchkey_init);
module_exit(touchkey_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("@@@");
MODULE_DESCRIPTION("melfas touch keypad");
Code:
--- drivers/leds/leds-max8997.c 2011-10-20 02:58:48.000000000
+++ drivers/leds/leds-max8997.c 2011-10-25 17:58:10.000000000
@@ -242,19 +242,30 @@
regulator_led_disable(led);
regulator_put(led->vcc);
kfree(led);
return 0;
}
+static void regulator_led_shutdown(struct platform_device *pdev)
+{
+ struct regulator_led *led = platform_get_drvdata(pdev);
+
+ if (regulator_is_enabled(led->vcc)) {
+ regulator_led_disable(led);
+ }
+ return;
+}
+
static struct platform_driver regulator_led_driver = {
.driver = {
.name = "leds-max8997",
.owner = THIS_MODULE,
},
.probe = regulator_led_probe,
.remove = __devexit_p(regulator_led_remove),
+ .shutdown = regulator_led_shutdown,
};
static int __init regulator_led_init(void)
{
return platform_driver_register(®ulator_led_driver);
}
Code:
--- drivers/media/video/samsung/mali/common/mali_kernel_mem_os.c 2011-10-20 02:58:48.000000000
+++ drivers/media/video/samsung/mali/common/mali_kernel_mem_os.c 2011-10-25 17:58:10.000000000
@@ -251,12 +251,13 @@
{
if ( allocation_order > 0 ) {
--allocation_order;
} else {
/* return OOM */
_mali_osk_lock_signal(info->mutex, _MALI_OSK_LOCKMODE_RW);
+ MALI_PRINT(("Failed to allocate consistent memory in all sizes.\n"));
return MALI_MEM_ALLOC_NONE;
}
}
/* try to allocate 2^(allocation_order) pages, if that fails, try
* allocation_order-1 to allocation_order 0 (inclusive) */
@@ -270,18 +271,21 @@
--allocation_order;
}
if ( NULL == virt )
{
MALI_DEBUG_PRINT(1, ("Failed to allocate consistent memory. Is CONSISTENT_DMA_SIZE set too low?\n"));
+ MALI_PRINT(("Failed to allocate consistent memory. Is CONSISTENT_DMA_SIZE set too low?\n"));
/* return OOM */
_mali_osk_lock_signal(info->mutex, _MALI_OSK_LOCKMODE_RW);
return MALI_MEM_ALLOC_NONE;
}
MALI_DEBUG_PRINT(5, ("os_allocator_allocate_page_table_block: Allocation of order %i succeeded\n",
+ allocation_order));
+ MALI_PRINT(("os_allocator_allocate_page_table_block: Allocation of order %i succeeded\n",
allocation_order));
/* we now know the size of the allocation since we know for what
* allocation_order the allocation succeeded */
size = _MALI_OSK_CPU_PAGE_SIZE << allocation_order;
Code:
--- drivers/media/video/m5mo.c 2011-10-20 02:58:48.000000000
+++ drivers/media/video/m5mo.c 2011-10-25 17:58:10.000000000
@@ -1707,13 +1707,13 @@
}
#endif
static int m5mo_set_touch_auto_focus(struct v4l2_subdev *sd, int val)
{
struct m5mo_state *state = to_state(sd);
- int err = -EINVAL;
+ int err;
cam_info("%s\n", val ? "start" : "stop");
state->focus.touch = val;
if (val) {
err = m5mo_set_af_mode(sd, FOCUS_MODE_TOUCH);
@@ -1727,13 +1727,13 @@
err = m5mo_writew(sd, M5MO_CATEGORY_LENS,
M5MO_LENS_AF_TOUCH_POSY, state->focus.pos_y);
CHECK_ERR(err);
}
cam_trace("X\n");
- return err;
+ return 0;
}
static int m5mo_set_zoom(struct v4l2_subdev *sd, struct v4l2_control *ctrl)
{
struct m5mo_state *state = to_state(sd);
struct v4l2_queryctrl qc = {0,};
Code:
--- drivers/power/smb328_charger.c 2011-10-20 02:58:49.000000000
+++ drivers/power/smb328_charger.c 2011-10-25 17:58:10.000000000
@@ -820,18 +820,26 @@
{
struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent);
struct smb328_chip *chip;
int ret = 0;
int gpio = 0;
u8 data;
+ int i;
- if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE))
- return -EIO;
+ i = 10;
+ while (1) {
+ if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE))
+ goto I2CERROR;
- if (smb328_i2c_read(client, 0x36, &data)<0) /* check HW */
- return -EIO;
+ if (smb328_i2c_read(client, 0x36, &data)>=0) /* check HW */
+ break;
+
+I2CERROR:
+ if (!i--) return -EIO;
+ msleep(300);
+ }
dev_info(&client->dev, "%s : SMB328 Charger Driver Loading\n", __func__);
chip = kzalloc(sizeof(struct smb328_chip), GFP_KERNEL);
if (!chip)
return -ENOMEM;
Code:
--- drivers/video/samsung/s3cfb_s6e8aa0.c 2011-10-20 02:58:50.000000000
+++ drivers/video/samsung/s3cfb_s6e8aa0.c 2011-10-25 17:58:10.000000000
@@ -1009,19 +1009,27 @@
return 0;
}
int s6e8ax0_read_mtp(struct lcd_info *lcd, u8 *mtp_data)
{
int ret;
+ u8 retry_cnt = 3;
s6e8ax0_write(lcd, enable_mtp_register, ARRAY_SIZE(enable_mtp_register));
+
+read_retry:
ret = s6e8ax0_read(lcd, LDI_MTP_ADDR, LDI_MTP_LENGTH, mtp_data);
if (!ret) {
- printk("ERROR:MTP read failed\n");
- return 0;
+ if (retry_cnt) {
+ printk("[WARN:LCD] : %s : retry cnt : %d\n", __func__, retry_cnt);
+ retry_cnt--;
+ goto read_retry;
+ } else
+ printk("ERROR:MTP read failed\n");
}
+
s6e8ax0_write(lcd, disable_mtp_register, ARRAY_SIZE(disable_mtp_register));
return ret;
}
#endif
static ssize_t lcdtype_show(struct device *dev, struct
@@ -1228,12 +1236,13 @@
struct s5p_platform_dsim *pd = (struct s5p_platform_dsim *)pdev->dev.platform_data;
#endif
#ifdef SMART_DIMMING
u8 mtp_data[LDI_MTP_LENGTH] = {0,};
u32 i;
u8 id_buf[3] = {0,};
+ u8 retry_cnt = 3;
#endif
lcd = kzalloc(sizeof(struct lcd_info), GFP_KERNEL);
if (!lcd) {
pr_err("failed to allocate for lcd\n");
ret = -ENOMEM;
@@ -1330,17 +1339,24 @@
dev_info(&lcd->ld->dev, "s6e8aa0 lcd panel driver has been probed.\n");
#ifdef SMART_DIMMING
mutex_init(&lcd->bl_lock);
- //read mpt
+read_retry:
ret = s6e8ax0_read(lcd, PANEL_ID_COMMAND, 3, id_buf);
if (!ret) {
- printk("[LCD:ERROR] : %s read id failed\n", __func__);
- //return -1;
+ if (retry_cnt) {
+ printk("[WARN:LCD] : %s : retry cnt : %d\n", __func__, retry_cnt);
+ retry_cnt--;
+ goto read_retry;
+ } else {
+ printk("[ERROR:LCD] : %s : Read ID Failed\n", __func__);
+ /*To protect ELVSS Wrong Operation*/
+ id_buf[2] = 0x33;
+ }
}
printk("Read ID : %x, %x, %x\n", id_buf[0], id_buf[1], id_buf[2]);
if (id_buf[2] == 0x33) {
lcd->support_elvss = 0;
@@ -1361,22 +1377,23 @@
init_table_info(&lcd->smart);
ret = s6e8ax0_read_mtp(lcd, mtp_data);
if (!ret) {
printk("[LCD:ERROR] : %s read mtp failed\n", __func__);
- //return -1;
+ lcd->connected = 0;
+ dev_info(&lcd->ld->dev, "panel is not connected well\n");
+ /*return -1;*/
}
calc_voltage_table(&lcd->smart, mtp_data);
s6e8ax0_adb_brightness_update(lcd, lcd->bd->props.brightness, 1);
#endif
- if (id_buf[0] == 0xa2) {
- lcd->connected = 1;
+ if (lcd->connected) {
INIT_DELAYED_WORK(&hs_clk_re_try, hs_clk_re_try_work);
lcd->irq = gpio_to_irq(GPIO_OLED_DET);
s3c_gpio_cfgpin(GPIO_OLED_DET, S3C_GPIO_SFN(0xf));
s3c_gpio_setpull(GPIO_OLED_DET, S3C_GPIO_PULL_NONE);
@@ -1384,15 +1401,12 @@
if (request_irq(lcd->irq, oled_det_int, IRQF_TRIGGER_FALLING, "vgh_toggle", 0)) {
pr_err("failed to reqeust irq. %d\n", lcd->irq);
ret = -EINVAL;
goto out_free_backlight;
}
- } else {
- lcd->connected = 0;
- dev_info(&lcd->ld->dev, "panel is not connected\n");
}
return 0;
out_free_backlight:
lcd_device_unregister(lcd->ld);
Code:
--- drivers/video/samsung/s5p-dsim.c 2011-10-20 02:58:50.000000000
+++ drivers/video/samsung/s5p-dsim.c 2011-10-25 17:58:10.000000000
@@ -115,13 +115,13 @@
#define MIPI_CMD_GENERIC_RD_2 0x24
#define MIPI_CMD_DSI_RD_0 0x06
#define MIPI_CMD_DSI_SET_PKT_SZ 0x37
-#define MIPI_RX_TIMEOUT HZ
+#define MIPI_RX_TIMEOUT msecs_to_jiffies(250)
#define DSMI_RX_FIFO_READ_DONE 0x30800002
#define DSIM_MAX_RX_FIFO 20
#define S5P_DSIM_INT_SFR_FIFO_EMPTY 29
#define S5P_DSIM_INT_BTA 25
#define S5P_DSIM_INT_MSK_FRAME_DONE 24
@@ -358,13 +358,13 @@
}
rxhd = readl(reg_base + S5P_DSIM_RXFIFO);
printk("rxhd : %x\n", rxhd);
if ((u8)(rxhd & 0xff) != response) {
printk(KERN_ERR "[DSIM:ERROR]:%s wrong response rxhd : %x, response:%x\n"
- ,__func__, rxhd, response);
+ , __func__, rxhd, response);
goto clear_rx_fifo;
}
// for short packet
if (count <= 2) {
for (i = 0; i < count; i++)
buf[i] = (rxhd >> (8+(i*8))) & 0xff;
@@ -379,21 +379,21 @@
goto clear_rx_fifo;
}
for (i = 0; i < rxsize>>2; i++) {
temp = readl(reg_base + S5P_DSIM_RXFIFO);
printk("pkt : %08x\n", temp);
- for(j=0; j < 4; j++) {
+ for (j = 0; j < 4; j++) {
buf[(i*4)+j] = (u8)(temp>>(j*8))&0xff;
//printk("Value : %02x\n",(temp>>(j*8))&0xff);
}
}
if (rxsize % 4) {
temp = readl(reg_base + S5P_DSIM_RXFIFO);
printk("pkt-l : %08x\n", temp);
- for(j=0; j < rxsize%4; j++) {
+ for (j = 0; j < rxsize%4; j++) {
buf[(i*4)+j] = (u8)(temp>>(j*8))&0xff;
//printk("Value : %02x\n",(temp>>(j*8))&0xff);
}
}
}
@@ -1089,30 +1089,30 @@
writel(int_stat, dsim.reg_base + S5P_DSIM_INTMSK);
}
int s5p_dsim_fifo_clear(void)
{
- int dsim_count=0,ret;
+ int dsim_count = 0, ret;
writel(SwRstRelease, dsim.reg_base + S5P_DSIM_INTSRC);
-
+
writel(DSIM_FUNCRST, dsim.reg_base + S5P_DSIM_SWRST);
- do{
- if(++dsim_count>90000){
- printk("dsim fifo clear fail re_try dsim resume\n");
- ret=0;
+ do {
+ if (++dsim_count > 90000) {
+ printk("dsim fifo clear fail re_try dsim resume\n");
+ ret = 0;
break;
- }
-
- if(readl(dsim.reg_base + S5P_DSIM_INTSRC) & SwRstRelease){
- s5p_dsim_interrupt_mask_set();
- ret=1;
+ }
+
+ if (readl(dsim.reg_base + S5P_DSIM_INTSRC) & SwRstRelease) {
+ s5p_dsim_interrupt_mask_set();
+ ret = 1;
break;
}
- }while(1);
+ } while (1);
return ret;
}
#ifdef CONFIG_HAS_EARLYSUSPEND
void s5p_dsim_early_suspend(void)
@@ -1140,24 +1140,24 @@
if (dsim.mipi_drv->suspend)
dsim.mipi_drv->suspend(dsim.dev, state);
if (dsim.mipi_ddi_pd->lcd_power_on)
dsim.mipi_ddi_pd->lcd_power_on(dsim.dev, 0);
-
+
s5p_dsim_enable_hs_clock(dsim.reg_base, 0);
s5p_dsim_set_clock(dsim.reg_base, dsim.dsim_info->e_byte_clk, 0);
-
+
writel(0xffff, dsim.reg_base + S5P_DSIM_CLKCTRL);
writel(0x0, dsim.reg_base + S5P_DSIM_PLLCTRL);
writel(0x0, dsim.reg_base + S5P_DSIM_PLLTMR);
writel(0x0, dsim.reg_base + S5P_DSIM_PHYACCHR);
- writel(0x0, dsim.reg_base + S5P_DSIM_PHYACCHR1);
+ writel(0x0, dsim.reg_base + S5P_DSIM_PHYACCHR1);
writel(0x1, dsim.reg_base + S5P_DSIM_SWRST);
-
+
clk_disable(dsim.clock);
#if 0
if (dsim.pd->mipi_power)
dsim.pd->mipi_power(0);
else
Code:
--- drivers/video/samsung/s6e8aa0_param.h 2011-10-20 02:58:50.000000000
+++ drivers/video/samsung/s6e8aa0_param.h 2011-10-25 17:58:10.000000000
@@ -66,13 +66,14 @@
static const unsigned char SEQ_APPLY_LEVEL_2_KEY[] = {
0xFC,
0x5A, 0x5A
};
static const unsigned char SEQ_SLEEP_OUT[] = {
- 0x11
+ 0x11,
+ 0x00,0x00
};
static const unsigned char SEQ_PANEL_CONDITION_SET[] = {
0xF8,
0x25, 0x34, 0x00, 0x00, 0x00, 0x95, 0x00, 0x3C, 0x7D, 0x08,
0x27, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00,
@@ -83,13 +84,14 @@
static const unsigned char SEQ_DISPLAY_CONDITION_SET[] = {
0xF2,
0x80, 0x03, 0x0D
};
static const unsigned char SEQ_GAMMA_UPDATE[] = {
- 0xF7, 0x03
+ 0xF7, 0x03,
+ 0x00
};
static const unsigned char SEQ_ETC_SOURCE_CONTROL[] = {
0xF6,
0x00, 0x02, 0x00
};
@@ -116,30 +118,35 @@
0x14, 0x40, 0x0C, 0xCB, 0xCE,
0x6E, 0xC4, 0x0F, 0x40, 0x41,
0xD9, 0x00, 0x00, 0x00
};
static const unsigned char SEQ_DISPLAY_ON[] = {
- 0x29
+ 0x29,
+ 0x00,0x00
};
static const unsigned char SEQ_DISPLAY_OFF[] = {
- 0x28
+ 0x28,
+ 0x00,0x00
};
static const unsigned char SEQ_STANDBY_ON[] = {
- 0x01
+ 0x01,
+ 0x00,0x00
};
static const unsigned char SEQ_ACL_ON[] = {
0xC0, 0x01,
+ 0x00
};
static const unsigned char SEQ_ACL_OFF[] = {
0xC0, 0x00,
+ 0x00
};
static const unsigned char SEQ_ACL_CUTOFF_20[] = {
0xC1,
0x47, 0x53, 0x13, 0x53, 0x00,
0x00, 0x03, 0x1F, 0x00, 0x00,
and they changed to codesourcery for toolchain
+CROSS_COMPILE ?= /opt/toolchains/arm-2009q3/bin/arm-none-linux-gnueabi-
Not a massive amount of differences, the screen driver changes looks most interesting to me.
fards said:
and they changed to codesourcery for toolchain
+CROSS_COMPILE ?= /opt/toolchains/arm-2009q3/bin/arm-none-linux-gnueabi-
Not a massive amount of differences, the screen driver changes looks most interesting to me.
Click to expand...
Click to collapse
Is there a new kernel source?
Sent from my GT-I9100
yes, kj6 is up,
the diffs are between kj4 and that kj6
to show the file differences (there's also some docs changes but they aren't really needed)
fards said:
yes, kj6 is up,
the diffs are between kj4 and that kj6
to show the file differences (there's also some docs changes but they aren't really needed)
Click to expand...
Click to collapse
Where did you get the kernel source?
https://opensource.samsung.com/index.jsp
search for N7000
I presume the kkx build will be there under the other device code.
fards said:
https://opensource.samsung.com/index.jsp
search for N7000
I presume the kkx build will be there under the other device code.
Click to expand...
Click to collapse
LOL you have the Hong Kong version source code xD
netchip said:
LOL you have the Hong Kong version source code xD
Click to expand...
Click to collapse
kj6 as I said...
to compare against kj4 as 6 is supposed to bring bugfixes..
fards said:
Not a massive amount of differences, the screen driver changes looks most interesting to me.
Click to expand...
Click to collapse
Maybe that diff solves my screen issue.
Just to explain, sometimes my screen does not wake up even if the phone is still running (long pressing the on/off button makes the phone vibrate which means that it is still working) and when I hard reboot it (8 seconds long on/off button press), it restarts and in the battery usage I can see that the phone has been awake for a long time instead of having been idle (when it happens, it is generally during the night).
As I am facing it globally (with both European stock and Hong Kong ROMs), I hope this kernel change corrects it.
The_Steph said:
Maybe that diff solves my screen issue.
Just to explain, sometimes my screen does not wake up even if the phone is still running (long pressing the on/off button makes the phone vibrate which means that it is still working) and when I hard reboot it (8 seconds long on/off button press), it restarts and in the battery usage I can see that the phone has been awake for a long time instead of having been idle (when it happens, it is generally during the night).
As I am facing it globally (with both European stock and Hong Kong ROMs), I hope this kernel change corrects it.
Click to expand...
Click to collapse
I've seen the same thing a couple of times. Still haven't tested the KJ6 kernel to see the effect of those patches yet.
Actually thats spurred me onto testing the KJ6.. Initialtesting suggests Screen powers back up Much quicker from standby
KJ6, where did you get it?
Edit: I have Baseband version N7000XXKJ6 but Kernel N7000ZSKK1. Is is this version you are talking about?
The_Steph said:
KJ6, where did you get it?
Edit: I have Baseband version N7000XXKJ6 but Kernel N7000ZSKK1. Is is this version you are talking about?
Click to expand...
Click to collapse
no there's threads with the kj6 kernel, including the CF root thread.
I've just built kernel with the patches, working well so far.
Basically, what you did is you installed KJ6 kernel, rooted it and install the kernel you built?
If yes, do you mind, allowing me to download the kernel you built in order to use it?
Hey guys,
I used the stock LG camera app when I had stock ICS on my phone and it made the best pictures I ever took with my phone. Did anyone try to patch it to be used with CM10? Or is it possible to just install it on CM10 some how?
thanks in advance
why don't u try to copy the one from ICS then push it to system/apps then see if it's working..
I tried that..Says" Cannot connect to camera". Cleared data too, but no it FC's..
Could you upload lg ics stock cam please? Maybe we can do something.
Sent from my LG-P990 using xda app-developers app
I tried also(i am no dev) but can't make it 2 work on cm10
Would be verry happy also if one can port ics cam to cm10
cm photo sucks :c
wfd said:
Could you upload lg ics stock cam please? Maybe we can do something.
Sent from my LG-P990 using xda app-developers app
Click to expand...
Click to collapse
... that would be so great if someone get ported a better camera to CM10.
I were for a short time on CM10 from pengus, he does a fabulous job!!!, it's really nice, but went back to guestes CM7 hybrid, cause I need a good mobile camera and quality is much better than cm10, using it very often.
The 2x camera has great potencial and if its possible to make e.g. ICS camera work on CM10, if its so good, this would be awesome!!!
I uploaded ICS camera from DjangoManouche X 1.1... If more files are needed, some libs or so i can upload this too! :fingers-crossed:
...here is the one from DjangoManouche X1.2. (ICS 30b). Its newer and file size is different. Maybe its a better update...
Wow I really wait this port
If the LG camera app utilizes some proprietary LG framework, like HTC Sense and Samsung Touchwiz, then it won't be possible to port it to an AOSP ROM that uses the default AOSP framework.
Sent from my Desire HD using xda premium
sashank said:
If the LG camera app utilizes some proprietary LG framework, like HTC Sense and Samsung Touchwiz, then it won't be possible to port it to an AOSP ROM that uses the default AOSP framework.
Sent from my Desire HD using xda premium
Click to expand...
Click to collapse
This exactly.
sashank said:
If the LG camera app utilizes some proprietary LG framework, like HTC Sense and Samsung Touchwiz, then it won't be possible to port it to an AOSP ROM that uses the default AOSP framework.
Sent from my Desire HD using xda premium
Click to expand...
Click to collapse
well the gingerbread camera from LG was ported to CM7
so I guess it would be possible to port stock ICS to CM10
honeslty I am hoping this happens since I want constant 30fps recording on CM10(irrespective of the lighting conditions)
Add missing Windows.extend .smali to framework.jar and change Android/os/enviroment getStorage in camera to match CM10 get me logcat i can maybe help.
I had an idea not sure it would work if we were to all LG Stuff from framework.jar and make a new JAr called LG.jar add it to permissions and mod manifest with that string uses library to point to LG.jar would it not work just like MIUI where miui apps use the MIUI instead of CM10 classes?
defcomg said:
Add missing Windows.extend .smali to framework.jar and change Android/os/enviroment getStorage in camera to match CM10 get me logcat i can maybe help.
I had an idea not sure it would work if we were to all LG Stuff from framework.jar and make a new JAr called LG.jar add it to permissions and mod manifest with that string uses library to point to LG.jar would it not work just like MIUI where miui apps use the MIUI instead of CM10 classes?
Click to expand...
Click to collapse
I see you are expert on modding camera?
Can you please mod the JB cam so it saves to extern sdcard and up the bitrate and fps
Thanksss
defcomg said:
Add missing Windows.extend .smali to framework.jar and change Android/os/enviroment getStorage in camera to match CM10 get me logcat i can maybe help.
I had an idea not sure it would work if we were to all LG Stuff from framework.jar and make a new JAr called LG.jar add it to permissions and mod manifest with that string uses library to point to LG.jar would it not work just like MIUI where miui apps use the MIUI instead of CM10 classes?
Click to expand...
Click to collapse
If you could do something with the cam would be awesome. CM10 camera quality isn´t really good and you can´t use flash, photos get very milky.
The CM10 camera was one reason that I´m on ICS right now. Camera here takes good photos and work fine with flash.
Unfortunately I can´t upload logcat from CM10, maybe someone else? Or do you mean you need ICS logcat?
KillerbeeNL said:
I see you are expert on modding camera?
Can you please mod the JB cam so it saves to extern sdcard and up the bitrate and fps
Thanksss
Click to expand...
Click to collapse
Not an expert just try to help where i can for the FPS i could maybe try to hex the camera.tegra.so file to set default fps to 60 not sure how different it is to the omap4 one i was able to set it to 60fps worked on ICS on CM it showed 60fps supported but only did 30. When you start Camera UP on ICS what are the supported FPS Modes should see something like 5,15,24,30 check if it is the same ics as far as i know the userspace module/driver from ics should be the same as JB so the camera should act the same unless there non standard invocation in camera.tegra.so like on omap the O3D you can change Capture mode to ZSL that is not in framework nor is it in CM10 Camera. as for bitrate Changes to media_profiles.xml should do the trick. SAving to extern sd is doable the camera contains no paths to storage it uses the getStorage something path which returns sdcard0 then Calls the DCIM Path set in Framework the makes the path storage/sdcard0/DCIM they key is to add Const string with sdcard1 as the path to overide default path
franky_z said:
If you could do something with the cam would be awesome. CM10 camera quality isn´t really good and you can´t use flash, photos get very milky.
The CM10 camera was one reason that I´m on ICS right now. Camera here takes good photos and work fine with flash.
Unfortunately I can´t upload logcat from CM10, maybe someone else? Or do you mean you need ICS logcat?
Click to expand...
Click to collapse
Saving to ext SD is doable i have done it on 4.2Camera. When you say flash. Do you mean Flash is disabled or will not fire when enabled or it just screws the photos up?
I will need the camera so file in /lib/hw ics cam + cm10 will see what i can do
defcomg said:
Saving to ext SD is doable i have done it on 4.2Camera. When you say flash. Do you mean Flash is disabled or will not fire when enabled or it just screws the photos up?
I will need the camera so file in /lib/hw ics cam + cm10 will see what i can do
Click to expand...
Click to collapse
OK, here is a zip with all you need. I renamed the files and added "ICS_" and "CM10_" in front. If you need something else, tell me!
The flash of the CM10 camera works and flashes but the picture is very milky and looks overexposed. Normally the camera adjusts when its too bright, but this does not work (in my tests).
Thanks in advance! :good:
Relating to the Flash the only Diff Parameter between ICS Cam and CM10 is
Code:
invoke-virtual {p1, v2}, Landroid/hardware/Camera$Parameters;->setExposureCompensation(I)V
it exist on ICS Camera but not on CM10
Test a CameraFV-5 on ICS and JB they should give the same as Camera Param in Framework and camera.tegra.so are the same i think they difference might be in libcameraservice + libcameraclient
found this in camera.tegra.so
"OMX.Nvidia.index.config.autoframerate" so i made highest frame 90 > 60 > 30 > 24 >20
try it then go to media_profiles change from maxFrameRate="30" /> to maxFrameRate="90" />
then in <CamcorderProfiles cameraId="0">
<EncoderProfile quality="720p"
frameRate="60" /> / frameRate="30" /> / frameRate="90" />
JPEG Quant Table
Code:
.data:0003BDC4 myCustomQuantTables DCB 1, 0x10, 0xB, 0xA, 0x10, 0x18, 0x28, 0x33, 0x3D, 0xC
.data:0003BDC4 ; DATA XREF: .data:CustomQuantTableso
.data:0003BDC4 DCB 0xC, 0xE, 0x13, 0x1A, 0x3A, 0x3C, 0x37, 0xE, 0xD, 0x10
.data:0003BDC4 DCB 0x18, 0x28, 0x39, 0x45, 0x38, 0xE, 0x11, 0x16, 0x1D
.data:0003BDC4 DCB 0x33, 0x57, 0x50, 0x3E, 0x12, 0x16, 0x25, 0x38, 0x44
.data:0003BDC4 DCB 0x6D, 0x67, 0x4D, 0x18, 0x23, 0x37, 0x40, 0x51, 0x68
.data:0003BDC4 DCB 0x71, 0x5C, 0x31, 0x40, 0x4E, 0x57, 0x67, 0x79, 0x78
.data:0003BDC4 DCB 0x65, 0x48, 0x5C, 0x5F, 0x62, 0x70, 0x64, 0x67, 0x63
.data:0003BDC4 DCB 0x11, 0x12, 0x18, 0x2F, 0x63, 0x63, 0x63, 0x63, 0x12
.data:0003BDC4 DCB 0x15, 0x1A, 0x42, 0x63, 0x63, 0x63, 0x63, 0x18, 0x1A
.data:0003BDC4 DCB 0x38, 0x63, 0x63, 0x63, 0x63, 0x63, 0x2F, 0x42, 0x63
.data:0003BDC4 DCB 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63
.data:0003BDC4 DCB 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63
.data:0003BDC4 DCB 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63
.data:0003BDC4 DCB 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63
.data:0003BDC4 DCB 0x63, 0x32, 6, 4, 4, 6, 8, 0xE, 0x11, 0x15, 4, 4, 5
.data:0003BDC4 DCB 7, 9, 0x14, 0x14, 0x13, 5, 5, 6, 8, 0xE, 0x13, 0x17
.data:0003BDC4 DCB 0x13, 5, 6, 8, 0xA, 0x11, 0x1D, 0x1B, 0x15, 6, 8, 0xD
.data:0003BDC4 DCB 0x13, 0x17, 0x25, 0x23, 0x1A, 8, 0xC, 0x13, 0x16, 0x1B
.data:0003BDC4 DCB 0x23, 0x26, 0x1F, 0x11, 0x16, 0x1A, 0x1D, 0x23, 0x29
.data:0003BDC4 DCB 0x28, 0x22, 0x18, 0x1F, 0x20, 0x21, 0x26, 0x22, 0x23
.data:0003BDC4 DCB 0x21, 6, 6, 8, 0x10, 0x21, 0x21, 0x21, 0x21, 6, 7
.data:0003BDC4 DCB 9, 0x16, 0x21, 0x21, 0x21, 0x21, 8, 9, 0x13, 0x21
.data:0003BDC4 DCB 0x21, 0x21, 0x21, 0x21, 0x10, 0x16, 0x21, 0x21, 0x21
.data:0003BDC4 DCB 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21
.data:0003BDC4 DCB 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21
.data:0003BDC4 DCB 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21
.data:0003BDC4 DCB 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x5F
.data:0003BDC4 DCB 2, 2, 2, 2, 2, 4, 5, 6, 2, 2, 2, 2, 3, 6, 6, 6, 2
.data:0003BDC4 DCB 2, 2, 2, 4, 6, 7, 6, 2, 2, 2, 3, 5, 9, 8, 6, 2, 2
.data:0003BDC4 DCB 4, 6, 7, 0xB, 0xA, 8, 2, 4, 6, 6, 8, 0xA, 0xB, 9, 5
.data:0003BDC4 DCB 6, 8, 9, 0xA, 0xC, 0xC, 0xA, 7, 9, 0xA, 0xA, 0xB, 0xA
.data:0003BDC4 DCB 0xA, 0xA, 2, 2, 2, 5, 0xA, 0xA, 0xA, 0xA, 2, 2, 3
.data:0003BDC4 DCB 7, 0xA, 0xA, 0xA, 0xA, 2, 3, 6, 0xA, 0xA, 0xA, 0xA
.data:0003BDC4 DCB 0xA, 5, 7, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA
.data:0003BDC4 DCB 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA
.data:0003BDC4 DCB 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA
.data:0003BDC4 DCB 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0x64, 1, 1
.data:0003BDC4 DCB 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
.data:0003BDC4 DCB 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
.data:0003BDC4 DCB 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
.data:0003BDC4 DCB 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
.data:0003BDC4 DCB 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
.data:0003BDC4 DCB 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
.data:0003BDC4 DCB 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
.data:0003BDC4 DCB 1, 1, 1, 1, 1, 1, 1
https://en.wikipedia.org/wiki/JPEG#Syntax_and_structure
Can i have a dump like this from both ics and JB
Code:
http://pastebin.com/7UMWMaqP
set default quality to 99 the above quant is responsible for subsampling 4:2:0:silly:
franky_z said:
If you could do something with the cam would be awesome. CM10 camera quality isn´t really good and you can´t use flash, photos get very milky.
The CM10 camera was one reason that I´m on ICS right now. Camera here takes good photos and work fine with flash.
Unfortunately I can´t upload logcat from CM10, maybe someone else? Or do you mean you need ICS logcat?
Click to expand...
Click to collapse
flash when set to automatic results in milky photos with excess exposure.
I use force flash mode in low light conditions,pictures are awesome and in decent lighting where flash is not needed,I turn it off
Can you make ics cam mode with 1080 30fps(better bitrate if possible),better jpg quality so we can test it and then port that to cm10?Tnx alot
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
So i have been playing around trying to decypt the CSC/OMC files for the note 8
i have de-compiled:
CSC.apk
OMCAgent.apk
i have found something that may be of interest in CSC.apk it looks like it's not encrypted as such, they are using byte shifting.
OMCTextDecoder.class
Code:
package com.sec.omc.decoder;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class OmcTextDecoder
{
private final int SALT_LENGTH = 256;
private final String XML_HEADER = "<?xml";
private final byte[] salts;
private final byte[] shifts;
public OmcTextDecoder()
{
byte[] arrayOfByte = new byte['?'];
arrayOfByte[0] = 65;
arrayOfByte[n] = -59;
arrayOfByte[m] = 33;
arrayOfByte[i] = -34;
arrayOfByte[4] = 107;
arrayOfByte[j] = 28;
arrayOfByte[k] = -107;
arrayOfByte[7] = 55;
arrayOfByte[8] = 78;
arrayOfByte[9] = 17;
arrayOfByte[10] = -81;
arrayOfByte[11] = k;
arrayOfByte[12] = -80;
arrayOfByte[13] = -121;
arrayOfByte[14] = -35;
arrayOfByte[15] = -23;
arrayOfByte[16] = 72;
arrayOfByte[17] = 122;
arrayOfByte[18] = -63;
arrayOfByte[19] = -43;
arrayOfByte[20] = 68;
arrayOfByte[21] = 119;
arrayOfByte[22] = -78;
arrayOfByte[23] = -111;
arrayOfByte[24] = -60;
arrayOfByte[25] = 31;
arrayOfByte[26] = 60;
arrayOfByte[27] = 57;
arrayOfByte[28] = 92;
arrayOfByte[29] = -88;
arrayOfByte[30] = -100;
arrayOfByte[31] = -69;
arrayOfByte[32] = -106;
arrayOfByte[33] = 91;
arrayOfByte[34] = 69;
arrayOfByte[35] = 93;
arrayOfByte[36] = 110;
arrayOfByte[37] = 23;
arrayOfByte[38] = 93;
arrayOfByte[39] = 53;
arrayOfByte[40] = -44;
arrayOfByte[41] = -51;
arrayOfByte[42] = 64;
arrayOfByte[43] = -80;
arrayOfByte[44] = 46;
arrayOfByte[45] = m;
arrayOfByte[46] = -4;
arrayOfByte[47] = 12;
arrayOfByte[48] = -45;
arrayOfByte[49] = 80;
arrayOfByte[50] = -44;
arrayOfByte[51] = -35;
arrayOfByte[52] = -111;
arrayOfByte[53] = -28;
arrayOfByte[54] = -66;
arrayOfByte[55] = -116;
arrayOfByte[56] = 39;
arrayOfByte[57] = m;
arrayOfByte[58] = -27;
arrayOfByte[59] = -45;
arrayOfByte[60] = -52;
arrayOfByte[61] = 125;
arrayOfByte[62] = 39;
arrayOfByte[63] = 66;
arrayOfByte[64] = -90;
arrayOfByte[65] = 63;
arrayOfByte[66] = -105;
arrayOfByte[67] = -67;
arrayOfByte[68] = 84;
arrayOfByte[69] = -57;
arrayOfByte[70] = -4;
arrayOfByte[71] = -4;
arrayOfByte[72] = 101;
arrayOfByte[73] = -90;
arrayOfByte[74] = 81;
arrayOfByte[75] = 10;
arrayOfByte[76] = -33;
arrayOfByte[77] = n;
arrayOfByte[78] = 67;
arrayOfByte[79] = -57;
arrayOfByte[80] = -71;
arrayOfByte[81] = 18;
arrayOfByte[82] = -74;
arrayOfByte[83] = 102;
arrayOfByte[84] = 96;
arrayOfByte[85] = -89;
arrayOfByte[86] = 64;
arrayOfByte[87] = -17;
arrayOfByte[88] = 54;
arrayOfByte[89] = -94;
arrayOfByte[90] = -84;
arrayOfByte[91] = -66;
arrayOfByte[92] = 14;
arrayOfByte[93] = 119;
arrayOfByte[94] = 121;
arrayOfByte[95] = m;
arrayOfByte[96] = -78;
arrayOfByte[97] = -79;
arrayOfByte[98] = 89;
arrayOfByte[99] = 63;
arrayOfByte[100] = 93;
arrayOfByte[101] = 109;
arrayOfByte[102] = -78;
arrayOfByte[103] = -51;
arrayOfByte[104] = 66;
arrayOfByte[105] = -36;
arrayOfByte[106] = 32;
arrayOfByte[107] = 86;
arrayOfByte[108] = i;
arrayOfByte[109] = -58;
arrayOfByte[110] = -15;
arrayOfByte[111] = 92;
arrayOfByte[112] = 58;
arrayOfByte[113] = m;
arrayOfByte[114] = -89;
arrayOfByte[115] = -80;
arrayOfByte[116] = -13;
arrayOfByte[117] = -1;
arrayOfByte[118] = 122;
arrayOfByte[119] = -4;
arrayOfByte[120] = 48;
arrayOfByte[121] = 63;
arrayOfByte[122] = -44;
arrayOfByte[123] = 59;
arrayOfByte[124] = 100;
arrayOfByte[125] = -42;
arrayOfByte[126] = -45;
arrayOfByte[127] = 59;
arrayOfByte['?'] = -7;
arrayOfByte['?'] = -17;
arrayOfByte['?'] = -54;
arrayOfByte['?'] = 34;
arrayOfByte['?'] = -54;
arrayOfByte['?'] = 71;
arrayOfByte['?'] = -64;
arrayOfByte['?'] = -26;
arrayOfByte['?'] = -87;
arrayOfByte['?'] = -80;
arrayOfByte['?'] = -17;
arrayOfByte['?'] = -44;
arrayOfByte['?'] = -38;
arrayOfByte['?'] = -112;
arrayOfByte['?'] = 70;
arrayOfByte['?'] = 10;
arrayOfByte['?'] = -106;
arrayOfByte['?'] = 95;
arrayOfByte['?'] = -24;
arrayOfByte['?'] = -4;
arrayOfByte['?'] = -118;
arrayOfByte['?'] = 45;
arrayOfByte['?'] = -85;
arrayOfByte['?'] = -13;
arrayOfByte['?'] = 85;
arrayOfByte['?'] = 25;
arrayOfByte['?'] = -102;
arrayOfByte['?'] = -119;
arrayOfByte['?'] = 13;
arrayOfByte['?'] = -37;
arrayOfByte['?'] = 116;
arrayOfByte['?'] = 46;
arrayOfByte['*'] = -69;
arrayOfByte['¡'] = 59;
arrayOfByte['¢'] = 42;
arrayOfByte['£'] = -90;
arrayOfByte['¤'] = -38;
arrayOfByte['¥'] = -105;
arrayOfByte['¦'] = 101;
arrayOfByte['§'] = -119;
arrayOfByte['¨'] = -36;
arrayOfByte['©'] = 97;
arrayOfByte['ª'] = -3;
arrayOfByte['«'] = -62;
arrayOfByte['¬'] = -91;
arrayOfByte['*'] = -97;
arrayOfByte['®'] = -125;
arrayOfByte['¯'] = 17;
arrayOfByte['°'] = 14;
arrayOfByte['±'] = 106;
arrayOfByte['²'] = -72;
arrayOfByte['³'] = -119;
arrayOfByte['´'] = 99;
arrayOfByte['µ'] = 111;
arrayOfByte['¶'] = 20;
arrayOfByte['·'] = 18;
arrayOfByte['¸'] = -27;
arrayOfByte['¹'] = 113;
arrayOfByte['º'] = 64;
arrayOfByte['»'] = -24;
arrayOfByte['¼'] = 74;
arrayOfByte['½'] = -60;
arrayOfByte['¾'] = -100;
arrayOfByte['¿'] = 26;
arrayOfByte['À'] = 56;
arrayOfByte['Á'] = -44;
arrayOfByte['Â'] = -70;
arrayOfByte['Ã'] = 12;
arrayOfByte['Ä'] = -51;
arrayOfByte['Å'] = -100;
arrayOfByte['Æ'] = -32;
arrayOfByte['Ç'] = -11;
arrayOfByte['È'] = 26;
arrayOfByte['É'] = 48;
arrayOfByte['Ê'] = -117;
arrayOfByte['Ë'] = 98;
arrayOfByte['Ì'] = -93;
arrayOfByte['Í'] = 51;
arrayOfByte['Î'] = -25;
arrayOfByte['Ï'] = -79;
arrayOfByte['Ð'] = -31;
arrayOfByte['Ñ'] = 97;
arrayOfByte['Ò'] = 87;
arrayOfByte['Ó'] = -105;
arrayOfByte['Ô'] = -64;
arrayOfByte['Õ'] = 7;
arrayOfByte['Ö'] = -13;
arrayOfByte['×'] = -101;
arrayOfByte['Ø'] = 33;
arrayOfByte['Ù'] = -122;
arrayOfByte['Ú'] = j;
arrayOfByte['Û'] = -104;
arrayOfByte['Ü'] = 89;
arrayOfByte['Ý'] = -44;
arrayOfByte['Þ'] = -117;
arrayOfByte['ß'] = 63;
arrayOfByte['à'] = -80;
arrayOfByte['á'] = -6;
arrayOfByte['â'] = -71;
arrayOfByte['ã'] = -110;
arrayOfByte['ä'] = -29;
arrayOfByte['å'] = -105;
arrayOfByte['æ'] = 116;
arrayOfByte['ç'] = 107;
arrayOfByte['è'] = -93;
arrayOfByte['é'] = 91;
arrayOfByte['ê'] = -41;
arrayOfByte['ë'] = -13;
arrayOfByte['ì'] = 20;
arrayOfByte['í'] = -115;
arrayOfByte['î'] = -78;
arrayOfByte['ï'] = 43;
arrayOfByte['ð'] = 79;
arrayOfByte['ñ'] = -122;
arrayOfByte['ò'] = k;
arrayOfByte['ó'] = 102;
arrayOfByte['ô'] = -32;
arrayOfByte['õ'] = 52;
arrayOfByte['ö'] = -118;
arrayOfByte['÷'] = -51;
arrayOfByte['ø'] = 72;
arrayOfByte['ù'] = -104;
arrayOfByte['ú'] = 41;
arrayOfByte['û'] = -38;
arrayOfByte['ü'] = 124;
arrayOfByte['ý'] = 72;
arrayOfByte['þ'] = -126;
arrayOfByte['ÿ'] = -35;
this.salts = arrayOfByte;
arrayOfByte = new byte['?'];
arrayOfByte[0] = n;
arrayOfByte[n] = n;
arrayOfByte[i] = m;
arrayOfByte[4] = m;
arrayOfByte[j] = 4;
arrayOfByte[k] = j;
arrayOfByte[8] = 4;
arrayOfByte[9] = 7;
arrayOfByte[10] = n;
arrayOfByte[11] = k;
arrayOfByte[12] = j;
arrayOfByte[13] = i;
arrayOfByte[14] = i;
arrayOfByte[15] = n;
arrayOfByte[16] = m;
arrayOfByte[17] = j;
arrayOfByte[19] = k;
arrayOfByte[20] = m;
arrayOfByte[21] = m;
arrayOfByte[22] = 4;
arrayOfByte[23] = m;
arrayOfByte[24] = m;
arrayOfByte[25] = i;
arrayOfByte[27] = m;
arrayOfByte[28] = n;
arrayOfByte[29] = m;
arrayOfByte[30] = 4;
arrayOfByte[31] = i;
arrayOfByte[32] = 4;
arrayOfByte[36] = i;
arrayOfByte[37] = j;
arrayOfByte[38] = i;
arrayOfByte[39] = n;
arrayOfByte[40] = k;
arrayOfByte[41] = j;
arrayOfByte[42] = k;
arrayOfByte[43] = n;
arrayOfByte[44] = n;
arrayOfByte[45] = n;
arrayOfByte[48] = i;
arrayOfByte[49] = m;
arrayOfByte[50] = 7;
arrayOfByte[51] = 7;
arrayOfByte[52] = j;
arrayOfByte[53] = k;
arrayOfByte[54] = 7;
arrayOfByte[55] = i;
arrayOfByte[56] = j;
arrayOfByte[57] = n;
arrayOfByte[59] = 7;
arrayOfByte[60] = k;
arrayOfByte[61] = i;
arrayOfByte[62] = k;
arrayOfByte[63] = j;
arrayOfByte[64] = 4;
arrayOfByte[65] = j;
arrayOfByte[66] = i;
arrayOfByte[67] = j;
arrayOfByte[68] = n;
arrayOfByte[69] = i;
arrayOfByte[70] = i;
arrayOfByte[71] = n;
arrayOfByte[72] = j;
arrayOfByte[73] = 4;
arrayOfByte[74] = n;
arrayOfByte[77] = m;
arrayOfByte[78] = k;
arrayOfByte[79] = k;
arrayOfByte[80] = k;
arrayOfByte[81] = k;
arrayOfByte[82] = 4;
arrayOfByte[84] = n;
arrayOfByte[85] = n;
arrayOfByte[87] = j;
arrayOfByte[88] = j;
arrayOfByte[89] = 4;
arrayOfByte[90] = m;
arrayOfByte[91] = 4;
arrayOfByte[92] = k;
arrayOfByte[93] = n;
arrayOfByte[94] = 7;
arrayOfByte[95] = n;
arrayOfByte[96] = m;
arrayOfByte[97] = n;
arrayOfByte[98] = n;
arrayOfByte[99] = k;
arrayOfByte[100] = j;
arrayOfByte[101] = 4;
arrayOfByte[102] = 7;
arrayOfByte[103] = k;
arrayOfByte[104] = j;
arrayOfByte[105] = n;
arrayOfByte[106] = k;
arrayOfByte[107] = 7;
arrayOfByte[109] = m;
arrayOfByte[110] = k;
arrayOfByte[111] = i;
arrayOfByte[112] = n;
arrayOfByte[113] = 7;
arrayOfByte[114] = n;
arrayOfByte[115] = n;
arrayOfByte[116] = 7;
arrayOfByte[117] = 4;
arrayOfByte[119] = 4;
arrayOfByte[120] = m;
arrayOfByte[121] = j;
arrayOfByte[122] = i;
arrayOfByte[123] = n;
arrayOfByte[124] = n;
arrayOfByte[125] = j;
arrayOfByte[126] = k;
arrayOfByte['?'] = i;
arrayOfByte['?'] = j;
arrayOfByte['?'] = i;
arrayOfByte['?'] = k;
arrayOfByte['?'] = j;
arrayOfByte['?'] = 7;
arrayOfByte['?'] = m;
arrayOfByte['?'] = j;
arrayOfByte['?'] = k;
arrayOfByte['?'] = k;
arrayOfByte['?'] = m;
arrayOfByte['?'] = m;
arrayOfByte['?'] = i;
arrayOfByte['?'] = k;
arrayOfByte['?'] = 4;
arrayOfByte['?'] = i;
arrayOfByte['?'] = m;
arrayOfByte['?'] = m;
arrayOfByte['?'] = m;
arrayOfByte['?'] = i;
arrayOfByte['?'] = j;
arrayOfByte['?'] = i;
arrayOfByte['?'] = i;
arrayOfByte['?'] = m;
arrayOfByte['?'] = j;
arrayOfByte['?'] = j;
arrayOfByte['?'] = j;
arrayOfByte['?'] = n;
arrayOfByte['?'] = i;
arrayOfByte['?'] = n;
arrayOfByte['*'] = n;
arrayOfByte['¡'] = n;
arrayOfByte['¢'] = 4;
arrayOfByte['£'] = j;
arrayOfByte['¤'] = n;
arrayOfByte['¥'] = k;
arrayOfByte['¦'] = m;
arrayOfByte['§'] = 4;
arrayOfByte['¨'] = 7;
arrayOfByte['©'] = n;
arrayOfByte['ª'] = 4;
arrayOfByte['«'] = k;
arrayOfByte['*'] = k;
arrayOfByte['®'] = 4;
arrayOfByte['¯'] = i;
arrayOfByte['°'] = m;
arrayOfByte['±'] = k;
arrayOfByte['²'] = n;
arrayOfByte['³'] = k;
arrayOfByte['´'] = i;
arrayOfByte['µ'] = m;
arrayOfByte['¶'] = n;
arrayOfByte['·'] = k;
arrayOfByte['¸'] = 7;
arrayOfByte['¹'] = i;
arrayOfByte['º'] = m;
arrayOfByte['»'] = n;
arrayOfByte['¼'] = n;
arrayOfByte['½'] = j;
arrayOfByte['¾'] = k;
arrayOfByte['¿'] = 7;
arrayOfByte['À'] = m;
arrayOfByte['Á'] = m;
arrayOfByte['Â'] = m;
arrayOfByte['Ã'] = 7;
arrayOfByte['Ä'] = 4;
arrayOfByte['Å'] = k;
arrayOfByte['Æ'] = 7;
arrayOfByte['Ç'] = j;
arrayOfByte['È'] = i;
arrayOfByte['É'] = n;
arrayOfByte['Ê'] = 4;
arrayOfByte['Ë'] = m;
arrayOfByte['Ì'] = 7;
arrayOfByte['Í'] = n;
arrayOfByte['Î'] = k;
arrayOfByte['Ï'] = m;
arrayOfByte['Ð'] = 4;
arrayOfByte['Ñ'] = n;
arrayOfByte['Ò'] = j;
arrayOfByte['Ó'] = k;
arrayOfByte['Ô'] = j;
arrayOfByte['Õ'] = 4;
arrayOfByte['Ö'] = j;
arrayOfByte['Ø'] = n;
arrayOfByte['Ù'] = n;
arrayOfByte['Ú'] = k;
arrayOfByte['Û'] = i;
arrayOfByte['Ü'] = 7;
arrayOfByte['Ý'] = m;
arrayOfByte['ß'] = m;
arrayOfByte['à'] = j;
arrayOfByte['â'] = n;
arrayOfByte['ã'] = i;
arrayOfByte['ä'] = i;
arrayOfByte['å'] = m;
arrayOfByte['æ'] = k;
arrayOfByte['ç'] = 7;
arrayOfByte['è'] = 7;
arrayOfByte['é'] = m;
arrayOfByte['ê'] = j;
arrayOfByte['ë'] = k;
arrayOfByte['í'] = 4;
arrayOfByte['î'] = n;
arrayOfByte['ï'] = m;
arrayOfByte['ð'] = j;
arrayOfByte['ñ'] = i;
arrayOfByte['ò'] = 7;
arrayOfByte['ó'] = k;
arrayOfByte['ô'] = j;
arrayOfByte['õ'] = m;
arrayOfByte['ö'] = j;
arrayOfByte['÷'] = m;
arrayOfByte['ù'] = n;
arrayOfByte['ú'] = i;
arrayOfByte['û'] = n;
arrayOfByte['ü'] = 4;
arrayOfByte['ý'] = i;
arrayOfByte['þ'] = 4;
arrayOfByte['ÿ'] = m;
this.shifts = arrayOfByte;
}
private byte[] _decode(byte[] paramArrayOfByte)
{
int i = paramArrayOfByte.length;
byte[] arrayOfByte1 = new byte[i];
int j = 0;
for (;;)
{
i = paramArrayOfByte.length;
if (j >= i) {
break;
}
i = paramArrayOfByte[j] & 0xFF;
byte[] arrayOfByte2 = this.shifts;
int k = j % 256;
int m = arrayOfByte2[k];
i <<= m;
m = paramArrayOfByte[j] & 0xFF;
byte[] arrayOfByte3 = this.shifts;
int n = j % 256;
k = arrayOfByte3[n];
k = 8 - k;
m >>>= k;
i = (byte)(byte)(i | m);
arrayOfByte1[j] = i;
i = arrayOfByte1[j];
arrayOfByte2 = this.salts;
k = j % 256;
m = arrayOfByte2[k];
i = (byte)(byte)(i ^ m);
arrayOfByte1[j] = i;
j += 1;
}
return arrayOfByte1;
}
/* Error */
private byte[] _decompressGzip(byte[] paramArrayOfByte)
{
// Byte code:
// 0: aconst_null
// 1: astore_2
// 2: aconst_null
// 3: astore_3
// 4: aconst_null
// 5: astore 4
// 7: aconst_null
// 8: astore 5
// 10: sipush 1024
// 13: istore 6
// 15: iload 6
// 17: newarray <illegal type>
// 19: astore 7
// 21: new 34 java/io/BufferedInputStream
// 24: astore 8
// 26: new 36 java/io/ByteArrayInputStream
// 29: astore 9
// 31: aload 9
// 33: aload_1
// 34: invokespecial 39 java/io/ByteArrayInputStream:<init> ([B)V
// 37: aload 8
// 39: aload 9
// 41: invokespecial 42 java/io/BufferedInputStream:<init> (Ljava/io/InputStream;)V
// 44: new 44 java/util/zip/GZIPInputStream
// 47: astore 10
// 49: aload 10
// 51: aload 8
// 53: invokespecial 45 java/util/zip/GZIPInputStream:<init> (Ljava/io/InputStream;)V
// 56: new 47 java/io/ByteArrayOutputStream
// 59: astore 11
// 61: aload 11
// 63: invokespecial 48 java/io/ByteArrayOutputStream:<init> ()V
// 66: aload 10
// 68: invokevirtual 52 java/util/zip/GZIPInputStream:available ()I
// 71: istore 6
// 73: iload 6
// 75: ifle +123 -> 198
// 78: new 54 java/io/BufferedOutputStream
// 81: astore 12
// 83: aload 12
// 85: aload 11
// 87: invokespecial 57 java/io/BufferedOutputStream:<init> (Ljava/io/OutputStream;)V
// 90: iconst_0
// 91: istore 13
// 93: aload 10
// 95: aload 7
// 97: invokevirtual 61 java/util/zip/GZIPInputStream:read ([B)I
// 100: istore 13
// 102: iconst_m1
// 103: istore 6
// 105: iload 13
// 107: iload 6
// 109: if_icmpeq +51 -> 160
// 112: iconst_0
// 113: istore 6
// 115: aconst_null
// 116: astore 9
// 118: aload 12
// 120: aload 7
// 122: iconst_0
// 123: iload 13
// 125: invokevirtual 65 java/io/BufferedOutputStream:write ([BII)V
// 128: goto -35 -> 93
// 131: astore 9
// 133: aload 11
// 135: astore 5
// 137: aload 10
// 139: astore 4
// 141: aload 8
// 143: astore_3
// 144: aload 5
// 146: invokevirtual 68 java/io/ByteArrayOutputStream:close ()V
// 149: aload 4
// 151: invokevirtual 69 java/util/zip/GZIPInputStream:close ()V
// 154: aload_3
// 155: invokevirtual 70 java/io/BufferedInputStream:close ()V
// 158: aload_2
// 159: areturn
// 160: aload 12
// 162: invokevirtual 71 java/io/BufferedOutputStream:close ()V
// 165: goto -99 -> 66
// 168: astore 9
// 170: aload 11
// 172: astore 5
// 174: aload 10
// 176: astore 4
// 178: aload 8
// 180: astore_3
// 181: aload 5
// 183: invokevirtual 68 java/io/ByteArrayOutputStream:close ()V
// 186: aload 4
// 188: invokevirtual 69 java/util/zip/GZIPInputStream:close ()V
// 191: aload_3
// 192: invokevirtual 70 java/io/BufferedInputStream:close ()V
// 195: aload 9
// 197: athrow
// 198: aload 11
// 200: invokevirtual 75 java/io/ByteArrayOutputStream:toByteArray ()[B
// 203: astore_2
// 204: aload 11
// 206: invokevirtual 68 java/io/ByteArrayOutputStream:close ()V
// 209: aload 10
// 211: invokevirtual 69 java/util/zip/GZIPInputStream:close ()V
// 214: aload 8
// 216: invokevirtual 70 java/io/BufferedInputStream:close ()V
// 219: aload 11
// 221: astore 5
// 223: aload 10
// 225: astore 4
// 227: aload 8
// 229: astore_3
// 230: goto -72 -> 158
// 233: astore 9
// 235: goto -16 -> 219
// 238: pop
// 239: goto -44 -> 195
// 242: astore 9
// 244: goto -63 -> 181
// 247: astore 9
// 249: aload 8
// 251: astore_3
// 252: goto -71 -> 181
// 255: astore 9
// 257: aload 8
// 259: astore_3
// 260: goto -79 -> 181
// 263: astore 9
// 265: aload 10
// 267: astore 4
// 269: aload 8
// 271: astore_3
// 272: goto -91 -> 181
// 275: astore 9
// 277: aload 11
// 279: astore 5
// 281: aload 10
// 283: astore 4
// 285: aload 8
// 287: astore_3
// 288: goto -107 -> 181
// 291: astore 9
// 293: goto -135 -> 158
// 296: astore 9
// 298: goto -154 -> 144
// 301: astore 9
// 303: aload 8
// 305: astore_3
// 306: goto -162 -> 144
// 309: astore 9
// 311: aload 8
// 313: astore_3
// 314: goto -170 -> 144
// 317: astore 9
// 319: aload 10
// 321: astore 4
// 323: aload 8
// 325: astore_3
// 326: goto -182 -> 144
// 329: astore 9
// 331: aload 11
// 333: astore 5
// 335: aload 10
// 337: astore 4
// 339: aload 8
// 341: astore_3
// 342: goto -198 -> 144
// Local variable table:
// start length slot name signature
// 0 345 0 this OmcTextDecoder
// 0 345 1 paramArrayOfByte byte[]
// 1 203 2 arrayOfByte1 byte[]
// 3 339 3 localObject1 Object
// 5 333 4 localObject2 Object
// 8 326 5 localObject3 Object
// 13 101 6 i int
// 19 102 7 arrayOfByte2 byte[]
// 24 316 8 localBufferedInputStream java.io.BufferedInputStream
// 29 88 9 localByteArrayInputStream java.io.ByteArrayInputStream
// 131 1 9 localIOException1 IOException
// 168 28 9 localObject4 Object
// 233 1 9 localException1 Exception
// 242 1 9 localObject5 Object
// 247 1 9 localObject6 Object
// 255 1 9 localObject7 Object
// 263 1 9 localObject8 Object
// 275 1 9 localObject9 Object
// 291 1 9 localException2 Exception
// 296 1 9 localIOException2 IOException
// 301 1 9 localIOException3 IOException
// 309 1 9 localIOException4 IOException
// 317 1 9 localIOException5 IOException
// 329 1 9 localIOException6 IOException
// 47 289 10 localGZIPInputStream java.util.zip.GZIPInputStream
// 59 273 11 localByteArrayOutputStream java.io.ByteArrayOutputStream
// 81 80 12 localBufferedOutputStream java.io.BufferedOutputStream
// 91 33 13 j int
// 238 1 28 localException3 Exception
// Exception table:
// from to target type
// 85 90 131 java/io/IOException
// 95 100 131 java/io/IOException
// 123 128 131 java/io/IOException
// 160 165 131 java/io/IOException
// 85 90 168 finally
// 95 100 168 finally
// 123 128 168 finally
// 160 165 168 finally
// 204 209 233 java/lang/Exception
// 209 214 233 java/lang/Exception
// 214 219 233 java/lang/Exception
// 181 186 238 java/lang/Exception
// 186 191 238 java/lang/Exception
// 191 195 238 java/lang/Exception
// 15 19 242 finally
// 21 24 242 finally
// 26 29 242 finally
// 33 37 242 finally
// 39 44 242 finally
// 44 47 247 finally
// 51 56 255 finally
// 56 59 263 finally
// 61 66 263 finally
// 66 71 275 finally
// 78 81 275 finally
// 198 203 275 finally
// 144 149 291 java/lang/Exception
// 149 154 291 java/lang/Exception
// 154 158 291 java/lang/Exception
// 15 19 296 java/io/IOException
// 21 24 296 java/io/IOException
// 26 29 296 java/io/IOException
// 33 37 296 java/io/IOException
// 39 44 296 java/io/IOException
// 44 47 301 java/io/IOException
// 51 56 309 java/io/IOException
// 56 59 317 java/io/IOException
// 61 66 317 java/io/IOException
// 66 71 329 java/io/IOException
// 78 81 329 java/io/IOException
// 198 203 329 java/io/IOException
}
private byte[] fileToByteArray(File paramFile)
{
try
{
FileInputStream localFileInputStream = new java/io/FileInputStream;
localFileInputStream.<init>(paramFile);
int i = localFileInputStream.available();
byte[] arrayOfByte = new byte[i];
localFileInputStream.read(arrayOfByte);
localFileInputStream.close();
return arrayOfByte;
}
catch (FileNotFoundException localFileNotFoundException)
{
localFileNotFoundException.printStackTrace();
return null;
}
catch (IOException localIOException)
{
for (;;)
{
localIOException.printStackTrace();
}
}
}
public byte[] decode(File paramFile)
{
byte[] arrayOfByte1 = fileToByteArray(paramFile);
byte[] arrayOfByte2 = _decode(arrayOfByte1);
return _decompressGzip(arrayOfByte2);
}
public boolean isXmlEncoded(File paramFile)
{
try
{
BufferedReader localBufferedReader = new java/io/BufferedReader;
Object localObject = new java/io/FileReader;
((FileReader)localObject).<init>(paramFile);
localBufferedReader.<init>((Reader)localObject);
String str = localBufferedReader.readLine();
if (localBufferedReader == null) {}
for (;;)
{
localObject = "<?xml";
boolean bool = str.contains((CharSequence)localObject);
if (bool) {
break;
}
return true;
localBufferedReader.close();
}
return false;
}
catch (Exception localException)
{
return false;
}
}
}
I don't know enough about Java to do anything with this though so i thought i would post it here where some other people that have a bit more knowledge than me might be able to make some use of it. and i can't find where it's being called from so i think there is still a piece of the puzzle missing, i am going to keep working on it though
as a little side note, when i de-complied OMCAgent.apk i found a list of all CSC Feature Codes.
http://paste.physk.co.uk/view/36613aee
I hope this can help some people, there is no mention of what the values should be though
Your PasteBin link is down.
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