Прошиваем RK3188 из Linux

Aug 12, 2013   #android  #linux 

Возникла необходимость обновить прошивку на планшете Cube U30GT2, работающем на известном китайском SoC Rockchip 3188 (RK3188). Это продолжение линейки RK3066, которая была популярна примерно в прошлом году.

Однако приложений для прошивки хоть и два, но они оба для ОС Windows (это RKAndroidTool и Rockchip Batch Tool). Раньше в таких случаях я выполнял обновление firmware из виртуалки — VirtualBox с запущенной WinXP, но это неинтересно).

Все действия выполнялись для прошивки от ImaSoft, для простого обновления системы все действия намного проще. Главная сложность процесса в моей ситуации — требуется увеличенный системный раздел, так как в стандартную область системы эти прошивки не влезают.

Итак, что имеется со стороны автора прошивки:

  1. Архив, называемый Firmware — суррогат прошивки, главной функцией которого является изменение структуры разделов флеш-памяти (MTD). Содержит основные компоненты: parameter — файл с метаданными о разбивке на разделы, boot.img — загрузчик, recovery.img — образ CWM Recovery, kernel.img — образ ядра linux.
  2. Архив с собственно прошивкой — образ загрузчика, образ ядра и набор системных файлов (приложения Android).

Дополнительные приложения, которые сначала нагуглились, а потом понадобились:

  1. rkflashkit: https://github.com/linuxerwang/rkflashkit. Графическое приложение для заливки образов во флеш-память устройства.
  2. rkflashtool: https://github.com/Galland/rkflashtool_rk3066. Консольная утилита для ручной заливки образов во флеш-память. Отличается от пункта 1 тем, что мы сами можем задавать смещения, по которым нужно произвести запись.
  3. 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.

  1. Генерируем parm.img, используя rksp, следующим образом:

    ./rkcrc.pl -p -i parameter -o parm.img
    
  2. Заливаем его на устройство следующей последовательностью команд:

    ./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 сразу по пяти оффсетам (см., например, тут), но мне кажется, что хватит только первой строчки. В любом случае, можно попробовать и так и так :)

  3. Запускаем 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.

Подводные камни:

  1. На странице на форуме 4pda, посвящённой прошивке U30GT2, предлагается к установке одна из сборок CWM Recovery. Тут: http://4pda.ru/forum/index.php?showtopic=458533&st=160#entry22000603
    Этот вариант использовать не надо. Почему? Потому что при заливке этого рекавери в устройство не удастся установить прошивку. Оно будет думать, что девайс — rk3066 (а не rk3188) — и отказываться принимать прошивки. Достаточен CWMR из Firmware.
  2. Если что-то сделать не так, можно получить кирпич. Хотя, насколько я понял, убить его окончательно, если не ударить о стол/молоток/асфальт, не получится.

Использованная литература:

  1. Google
comments powered by Disqus