Authtor:
Posted at:
A. Semenov
10 Nov 2014
NAME

Прошивка телефона Nokia N9 на сток в Docker

Description

Сам по себе процес прошивки телефона на родную систему весьма тривиален, но в связи с тем, что больше не существует команды разработчиков ОС Meego, многие ресурсы, содержащие прошивки и программы, были заброшены. Я хочу восстановить справедливость и создать русскоязычный гайд по полному сбросу прошивки hartmattan на дефолтное состояние со всеми необходимыми ресурсами.

Во-первых, нам потребуется скачать саму прошивку. Я нашел её на сайте mrcrab. В скобках указан ID вашего устройства, и для того, чтобы найти вашу модель, нужно вытащить крышку с сим-картой. На обратной стороне вы найдёте заветные буквы и цифры. В моём случае это модель RM-696 NDT RUSSIA BLACK 16GB (059J208).

Чтобы прошить телефон используется утилита flasher (В ссылке указан DEB пакет, позже я покажу, как его распокавать и запустить бинарник).

Собирать и прошивать мы будем в контейнере docker, хостовая ОС ArchLinux, в качестве гостя я использовал CentOS (на данный момент ветка el7). В конце статьи я приведу пример готового Dockerfile, а пока, чтобы сохранить историю моих действий, буду производить их непосредственно в гостевой системе последовательно.

Все необходимые пакеты на момент запуска контейнера у нас есть, приступим:

Предположим, что прошивка и flasher будут лежать у нас в родительской системе в папке /tmp/flasher и запускаем контейнер

docker run -i -t --name flasher --privileged -v /dev/bus/usb:/dev/bus/usb -v /tmp/flasher/:/mnt/flasher centos /bin/bash

Теперь нужно установить все необходимые пакеты

yum install -y libusb glibc tar kmod usbutils

Распаковываем DEB пакет

cd /mnt/flasher
ar vx flasher_3.12.1_amd64.deb
tar xzvf data.tar.gz

После чего будет доступен бинарный файл ./usr/bin/flasher

# ./usr/bin/flasher  -V
flasher 3.12.1 (Oct  5 2011) Harmattan
WARNING: This tool is intended for professional use only. Using it may result
in permanently damaging your device or losing the warranty.

На этом установка flasher закончена и можно приступать к прошивке.

Подключите ваш телефон или кирпич, если вас постигла неудача, как меня, к порту USB. В консоли докера запустите следующую команду

./usr/bin/flasher -i

И принудительно выключаем телефон по питанию (удержанием кнопки, если кто не знал)

В результате должны увидеть похожую картину

./usr/bin/flasher  -i 
flasher 3.12.1 (Oct  5 2011) Harmattan
WARNING: This tool is intended for professional use only. Using it may result
in permanently damaging your device or losing the warranty.

Suitable USB interface (bootloader/phonet) not found, waiting...
USB device found at bus 002, device address 033.
Device identifier: 357923045331966 (SN: N/A)
Found device RM-696, hardware revision 1603
NOLO version 2.3.6
Version of 'sw-release': DFL61_HARMATTAN_40.2012.21-3_PR_001
Success

Настоятельно рекомендую не приступать к следующему шагу, пока не добьётесь результата с командой выше. Это будет показателем того, что устройство корректно определилось и готово принять свежий дамп прошивки.

Как и с командой выше, аналогично запускаем прошивку телефона

FIRMWARE="DFL61_HARMATTAN_40.2012.21-3_PR_LEGACY_001-OEM1-958_ARM.bin" #тут укажите вашу прошивку
./usr/bin/flasher -F $FIRMWARE -f

Через некоторое время, если в консоли не будет каких-либо ошибок, телефон отключится, и его можно будет изъять из порта. После включения вы увидите свежую инсталяцию Meego.

Возможные ошибки:

Error claiming USB interface: Device or resource busy

Ядро некорректно определило и подключило наш кирпичик. Решение простое: отключить нафиг модули ядра

rmmmod cdc_phonet phonet

Или отключить их загрузку в modprobe.d

#cat /etc/modprobe.d/50-blacklist.conf 
blacklist cdc_phonet
blacklist phonet