Возникла необходимость обновить прошивку на планшете Cube U30GT2, работающем на известном китайском SoC Rockchip 3188 (RK3188). Это продолжение линейки RK3066, которая была популярна примерно в прошлом году.
Однако приложений для прошивки хоть и два, но они оба для ОС Windows (это RKAndroidTool и Rockchip Batch Tool). Раньше в таких случаях я выполнял обновление firmware из виртуалки — VirtualBox с запущенной WinXP, но это неинтересно).
Все действия выполнялись для прошивки от ImaSoft, для простого обновления системы все действия намного проще. Главная сложность процесса в моей ситуации — требуется увеличенный системный раздел, так как в стандартную область системы эти прошивки не влезают.
Итак, что имеется со стороны автора прошивки:
- Архив, называемый Firmware — суррогат прошивки, главной функцией которого является изменение структуры разделов флеш-памяти (MTD). Содержит основные компоненты: parameter — файл с метаданными о разбивке на разделы, boot.img — загрузчик, recovery.img — образ CWM Recovery, kernel.img — образ ядра linux.
- Архив с собственно прошивкой — образ загрузчика, образ ядра и набор системных файлов (приложения Android).
Дополнительные приложения, которые сначала нагуглились, а потом понадобились:
- rkflashkit: https://github.com/linuxerwang/rkflashkit. Графическое приложение для заливки образов во флеш-память устройства.
- rkflashtool: https://github.com/Galland/rkflashtool_rk3066. Консольная утилита для ручной заливки образов во флеш-память. Отличается от пункта 1 тем, что мы сами можем задавать смещения, по которым нужно произвести запись.
- rksp: https://github.com/ttz642t/rksp. Полезная утилита для генерации PARM-образа (метаданные о разбивке памяти) из файла parameter. Перед запуском любого из этих приложений его надо скомпилировать ^_^ Градус красноглазия повышен. Также нужен установленный adb (Android Debug Bridge). У кого нет — марш на developer.android.com.
Что же нужно сделать для обновления прошивки.
Внимание: делайте бэкапы, всё выполняется на свой страх и риск. При получении кирпича я не виноват :)
Заходим в bootloader-режим на устройстве одним из двух способов:
adb reboot-bootloader
или просто выключаем планшет, зажимаем “громкость вверх” и вставляем usb-кабель. На экране ничего не будет, но проверить наличие подключенного планшета можно командой lsusb
. В положительном случае должна появиться строчка, содержащая id устройства. Для Cube U30GT2 это 2207:0010
.
Сначала ставим Firmware.
Генерируем parm.img, используя rksp, следующим образом:
./rkcrc.pl -p -i parameter -o parm.img
Заливаем его на устройство следующей последовательностью команд:
./rkflashtool w 0x0 1 < parm.img ./rkflashtool w 0x20 1 < parm.img ./rkflashtool w 0x40 1 < parm.img ./rkflashtool w 0x60 1 < parm.img ./rkflashtool w 0x80 1 < parm.img
Говорят, что нужно записывать parm.img сразу по пяти оффсетам (см., например, тут), но мне кажется, что хватит только первой строчки. В любом случае, можно попробовать и так и так :)
Запускаем rkflashkit и отправляем на устройство образы boot.img, kernel.img, misc.img и recovery.img из архива Firmware. Для этого нужный образ, соответствующий ему раздел и нажимаем кнопку “Flash Image”. Можно, в принципе, сделать это и руками, используя rkflashtool.
У recovery.img отдельная миссия. ClockworkMod Recovery — это специальная мини-ос, позволяющая загружать основную ОС, производить над ней какие-либо действия (обновлять, удалять, стирать данные, etc.). Стоит посмотреть внизу статьи на подводные камни, чтобы понять, к чему может привести неправильный выбор этого образа.
На этом красноглазые танцы заканчиваются.
Затем ставим саму прошивку
Выключаем девайс, включаем его заново, зажав одновременно Vol+ и Power, попадаем в CWM Recovery. Выбираем пункт “Install zip from sideload”. И вводим команду типа такой:
adb sideload update.zip
где update.zip - файл с прошивкой. Ждём. Дожидаемся, выбираем reboot и получаем рабочий андроид :)
Получается всё не сложнее, чем в windows.
Подводные камни:
- На странице на форуме 4pda, посвящённой прошивке U30GT2, предлагается к установке одна из сборок CWM Recovery. Тут: http://4pda.ru/forum/index.php?showtopic=458533&st=160#entry22000603
Этот вариант использовать не надо. Почему? Потому что при заливке этого рекавери в устройство не удастся установить прошивку. Оно будет думать, что девайс — rk3066 (а не rk3188) — и отказываться принимать прошивки. Достаточен CWMR из Firmware. - Если что-то сделать не так, можно получить кирпич. Хотя, насколько я понял, убить его окончательно, если не ударить о стол/молоток/асфальт, не получится.
Использованная литература: