воскресенье, 14 июня 2009 г.

Как пользоваться boot-usb и gen-blob

Кратко о упоминаемых в заметке терминах:

Flash mode - режим работы телефона, в котором невозможна связь с сетью, так как линейный процессор ждет обновления прошивки.
MBM - загрузчик с красным экраном, через который работают мотороловские утилиты прошивки.
Gen-blob - загрузчик openezx, обладающий большим набором возможностей, чем MBM. Шьется вместо ядра linux, умеет грузить ядро с карты памяти и с usb без перевода в flash mode, умеет шить произвольные адреса флеша.
Boot-usb - утилита для работы с загрузчиками MBM и gen-blob с большой машины.

Последние версии ядра openezx можно запустить только через gen-blob. Сам gen-blob может работать в двух вариантах: прошитым по адресу 0xa0800 вместо ядра или запущенным по usb через mbm. Во втором случае линейный процессор уже переведен в flash mode и работа с сетью будет невозможна после загрузки ядра, но для прошивки этого достаточно.

Gen-blob обрабатывает нажатия на кнопки vol+ и vol- (левая сторона устройства). Если во время его запуска зажата vol+, он переходит в режим USB (как MBM) и ждет управляющих комманд от boot-usb. Если зажата vol-, он показывает boot menu с возможностью выбора разных ядер с карты.

Чтобы прошить файл в память телефона по определенному адресу, нужно сделать три вещи:


  • Каким-то образом запустить gen-blob

  • Во время запуска зажать vol+

  • Послать адрес и данные через boot-usb



Рассматриваем подробнее:

Самый простой способ запустить gen-blob - запусть через MBM. Для этого нужно выполнить такие действия:


  • Полностью выключить телефон

  • Включить с переводом в flash mode - зажатой кнопкой голосового меню (нижняя на правой стороне)

  • Дать от пользователя root команду boot_usb gen-blob на большой машине. При этом boot_usb должен находиться в PATH (или вызваться по полному пути), а файл gen-blob должен быть в текущем каталоге



После того, как на экране появилось сообщение о готовности принимать команды по USB, можно работать из boot_usb с gen-blob.

Простой пример: прошивка файла по адресу 655360. boot_usb flash 655360 mtd.

Небольшое уточнение по поводу прошивки ядра: чтобы прошить ядро или gen-blob по адресу 0xa0800, нужно создать временный файл размером 0x800, заполненный нулями: dd if=/dev/zero of=/tmp/mtd bs=2048 count=1, после чего дописать в его конец нужные данные: cat gen-blob >> /tmp/mtd и после этого, прошить файл по адресу 0xa0000, а не 0xa0800.

ps. пребуются добровольцы для описания этого в вики

upd: не 0xa800 а 0xa0800

3 комментария:

  1. >upd: не 0xa800 а 0xa0800

    это где надо заменить по тексту?

    зы:помоему можна так и преренести в вики статью :)

    ОтветитьУдалить
  2. А как боротся с такими ошибками?

    FAILED: claim usb interface 0 of device: could not claim interface 0: Device or resource busy

    ОтветитьУдалить
  3. >FAILED: claim usb interface 0 of device: could not claim interface 0: Device or resource busy

    найти, кто еще открыл устройство и сказать, чтоб закрыл

    ОтветитьУдалить