maximum117

Lenovo P700i - Фэйк или правда

В этой теме 120 сообщений

Рыл носом сеть и случайно наткнулся на интересный сайт.На нем p700i и в разделе поддержки в скачках есть странный архив с надписью: 

Open Source Code - Lenovo P700i Smartphone

 

Кто-нибудь может проанализировать и сказать фэйк это или нет?

 

Сам сайт: http://mobilesupport.lenovo.com/

 

Страница, на которой можно скачать исходники для P700i (снизу вкладка Downloads): http://mobilesupport.lenovo.com/us/en/products/p700i_smartphone

 

ЗЫ. Единственное, что смущает, это модель процессора

ЗЗЫ. Скачал "сурсы", в них присутствует ядро, библиотеки и даже папочка с именем mt6577

 

UPD1: инструкция по сборке http://lenovo-forums.ru/topic/5549-%D1%84%D1%8D%D0%B9%D0%BA-%D0%B8%D0%BB%D0%B8-%D0%BF%D1%80%D0%B0%D0%B2%D0%B4%D0%B0/page-2#entry159772

Отредактировал maximum117

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

kernel_lenovo77_cu_ics2.bin как раз появляется в результате сборки исходников. И это как раз и есть kernel_no_header. Вот что у меня получилось собрать.

Тогда удалите его и соберите заново. Оно не появится.

Как, кстати, правильно запаковать update.zip чтобы прошить то, что выложил?

берем, скажем, мою прошивку, уничтожаем папку system, идем в META-INF/google/android/updater-script (или где он там лежит, помню точно что метаинф), убиваем все строки, кроме последних про boot.img, кладем свой boot.img заместо представленного в прошивке и запаковываем в зип.

И да, тут рулит флештул :P

2 пользователям понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот пример zip-а для обновления\прошивки нового бута:

 

http://yadi.sk/d/eMlNSMJaNckqK

 

В архив закидываем бут с именем boot (расширение img) с подменой того, что уже лежит в архиве.

1 пользователю понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так, бут луп на лого я тоже получил. :) Теперь нужно придумать способ диагностики и понять почему так происходит.

1 пользователю понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нужно адб завести... если оно уже работает, то снять лог.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

так, бут луп на лого я тоже получил

разобрать полученный бут пробовали?

Если там нет kernel_no_header, то конечно ничего не получится..

1 пользователю понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

 

так, бут луп на лого я тоже получил

разобрать полученный бут пробовали?

Если там нет kernel_no_header, то конечно ничего не получится..

 

Новости такие. Есть в папке я ядром (kernel) скрипт для сборки. Если его запускать следующим образом

TARGET_PRODUCT=lenovo77_cu_ics2 ./build.sh 

То после него появляется новый kernel_lenovo77_cu_ics2.bin который я и использовал как kernel_no_header.

1 пользователю понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нужно адб завести... если оно уже работает, то снять лог.

Насколько я понимаю adb работает уже когда телефон загрузился. И тут именно что интересно посмотреть почему он в бут луп уходит.

1 пользователю понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скиньте новый бут. Попробую адб лог прочесть....

1 пользователю понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Если его запускать следующим образом

TARGET_PRODUCT=lenovo77_cu_ics2 ./build.sh

То после него появляется новый kernel_lenovo77_cu_ics2.bin который я и использовал как kernel_no_header.

а вот это уже интересно.. а он точно перезаписывается? а то китайцы любят писать кучу всего, а на деле нифига..

зы: я кажется припоминаю по окончании сборки надпись про этот файлик, типа "generated", но файла так и не появилось. Самому чтоли опять на лайве ядро компилить..

 

Насколько я понимаю adb работает уже когда телефон загрузился.

не совсем, адб появляется после старта некоторых пунктиков в рамдиске практически сразу после запуска ядра.

 

И тут именно что интересно посмотреть почему он в бут луп уходит.

вопрос с разбором собранного бута остается открытым..

1 пользователю понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

uname -a говорит все тоже что и в настройках - о телефоне

зы. про старое ядро

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скиньте новый бут. Попробую адб лог прочесть....

Вот этот попробуйте.

boot.img

1 пользователю понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Также получил бут луп.

Даже до инициализации адб не доходит (лог пустой). Попробую заставить его работать....

 

UPD1: Да, кстати, структура бута после распаковки:

post-770-0-36048500-1398937021_thumb.jpg

 

UPD2: Не получается адб запустить. Попробовал default.prop поправить и заменить содержимое папки sbin в буте содержимым данной папки из оригинального бута (т.к. в оригинальном буте адб работает, лог снимается).

Отредактировал maximum117
1 пользователю понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, кстати, структура бута после распаковки:

Нет kernel_no_header - нет и загрузки..
1 пользователю понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А это точно из-за этого? При разборе ядра, к примеру, из semiAOSP точно такие же файлы =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тоже собрал.. в общем таки да, все файлы на месте, просто такой кернель собирается.

Нужно чем-то сократить объем ядра, скорее всего дело в этом.

UPD:

lzma даже применил, на выходе 2.7 метров ядрышко - не сработало. Надо по-другому оригинальные сорсы модифицировать.

Отредактировал Lens_flare
2 пользователям понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Надо по-другому оригинальные сорсы модифицировать.

Только для этого нужно хоть какой-нибудь лог получить, чтобы понять почему он не загружается..
1 пользователю понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Лог можно получить, если хотя бы будет зависон на лого (если не прав, то поправьте).

 

UPD1:

Did you build the kernel by yourself? If so then did you built that as root?? I had a same kind of problem on JB while I was building the kernel as root. ..

https://groups.google.com/forum/#!topic/android-building/nNJfOvipLp0

 

UPD2: А может ли быть бутлуп из-за того, что ядро рассчитано под "свои" драйвера, библиотеки и т.п. или в данном случае был бы зависон на лого?

http://grokbase.com/p/gg/android-building/13c7bnmpbp/boot-loop-on-4-4-on-mako

 

UPD3: Ради эксперимента закинул рамдиск из стокового ядра в "новое", тоже бутлуп :(

Отредактировал maximum117
1 пользователю понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А может ли быть бутлуп из-за того, что ядро рассчитано под "свои" драйвера, библиотеки и т.п. или в данном случае был бы зависон на лого?

да ну. В таком случае бы индустрии кастомных прошивок не существовало в принципе..

 

моя ставка на вот эту штуку:

unsigned int (*set_cabcmode)(unsigned int mode);

Учитывая, что она нигде не встречается в природе, каждый ее вызов это нульпоинтер (ну проще говоря пук в пустоту), а поскольку это драйвер дисплея, вызовов там таких дочерта. Пойду искать что-нибудь подобное у других китаез..

2 пользователям понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это случайно не то:

http://stackoverflow...represent-a-set

нее, set тут во-первых в значении "выставить значение" а не "множество". Та строчка, что я привел, это указатель на функцию (эдакое значение, которое при вызове направляет в определенный участок кода; гугль наверно лучше объяснит :P), так вот, на момент вызова того, что должно располагаться по этому указателю (соотв. функции), там ничего нет. А раз там ничего нет, то, что должна была выполнить та функция не выполнится; а поскольку кернель штука запутанная, то от результата той функции может зависеть жизнь всего ядра, ну или для нас, пользователей, загружаемость прошивки.

Короче как в том изречении про подкову, из-за которой проиграли войну.

Пример строчки вызова с нулем:

if(lcm_drv->set_cabcmode != NULL)    lcm_drv->set_cabcmode(CABC_ON);
"lcm_drv->set_cabcmode" равно NULL (а проверка идет на неравенство) -> функция не выполнилась->краш Отредактировал Lens_flare
1 пользователю понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Это случайно не то:

http://stackoverflow...represent-a-set

нее, set тут во-первых в значении "выставить значение" а не "множество". Та строчка, что я привел, это указатель на функцию (эдакое значение, которое при вызове направляет в определенный участок кода; гугль наверно лучше объяснит :P), так вот, на момент вызова того, что должно располагаться по этому указателю (соотв. функции), там ничего нет. А раз там ничего нет, то, что должна была выполнить та функция не выполнится; а поскольку кернель штука запутанная, то от результата той функции может зависеть жизнь всего ядра, ну или для нас, пользователей, загружаемость прошивки.

Короче как в том изречении про подкову, из-за которой проиграли войну.

Пример строчки вызова с нулем:

if(lcm_drv->set_cabcmode != NULL)    lcm_drv->set_cabcmode(CABC_ON);
"lcm_drv->set_cabcmode" равно NULL (а проверка идет на неравенство) -> функция не выполнилась->краш

 

Тут немного по другому. Так как set_cabcmode нигде не определена, то она не обязательно NULL и может быть всем, чем угодно. Можно было бы конечно её сразу объявить NULL, но есть места, где она вызывается без проверки на NULL. Можно это тоже попробовать исправить, но думаю вряд ли поможет.

1 пользователю понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Так как set_cabcmode нигде не определена, то она не обязательно NULL и может быть всем, чем угодно

точно, сиплюсплюс жэ :D

 

но есть места, где она вызывается без проверки на NULL

по моим данным там только 2 вызова, в одном методе, и оба с проверкой.

 

В общем не суть, модуль кто-то тщательно вынес (причем "повезло" не только нам: в 720-м и 890-м тоже нет этого определения) и восстанавливать его бесполезно, ибо он проприетарный (контент-адаптивная подсветка вийти ли.. кто-нибудь ее замечал вообще?).

Остается только спрашивать у суппорта, ну или забить.

1 пользователю понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Т.е. все бесполезно? Снова фэйл? =)

Отредактировал maximum117

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В общем не суть, модуль кто-то тщательно вынес (причем "повезло" не только нам: в 720-м и 890-м тоже нет этого определения) и восстанавливать его бесполезно, ибо он проприетарный (контент-адаптивная подсветка вийти ли.. кто-нибудь ее замечал вообще?). Остается только спрашивать у суппорта, ну или забить.

 

Если этот драйвер действительно отвечает только за эту фичу, то может быть можно без него попробовать прожить? Есть ли положительный опыт с 720 и 890?

 

p.s.: знать бы точно, почему оно валиться. У меня тоже больше всего подозрений на этот драйвер, я ещё когда хаки для сборки писал об этом говорил.

Отредактировал wywnaH4uK
1 пользователю понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если этот драйвер действительно отвечает только за эту фичу, то может быть можно без него попробовать прожить?

Если найдутся силы - отрубите.. у меня их уже нет. Еще можно попробовать заменить это определение на mtkfb_set_cabcmode, но и тут нужно лишь добраться.

Есть ли положительный опыт с 720 и 890?

там кернели примерно те же, в частности, хаки и к ним применимы :P

Перед тем как начать, есть 2 предложения по существующим:

1) не убирать тот "дебаг" в reboot-reason, можно просто добавить элементик в структуру, как во всех других ядрах мтк.

2) в ramconsole ничего не удалять, а просто добавить что есть в вико,

исключение мб только этот метод:

static ssize_t ram_console_read_reboot_reason
1 пользователю понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу