1 (19.02.2017 05:03:59 отредактировано hxka)

Тема: Замена загрузочного логотипа


Оригинал поста

RaANdOoM пишет:

Наконец-то доделал smile Черепашьими шагами, по капельке, но доделал GUI для замены загрузочного логотипа.
Да - много времени прошло и возможно уже поздно, но мне в опыт, а кому-то на радость smile

Теперь нет необходимости мудрить с расчетами и терминалом. Все что теперь требуется для замены логотипов:

[size=3]1. Выбор цвета фона[/size]
Есть возможность выбора цвета 4-мя способами (на всякий случай smile ):
а) написать 24-битный цвет в 10-чном формате (например: [180] [180] [180])
б) написать 24-битный цвет в 16-чном формате (например: 0xAABBCC)
в) написать 16-битный цвет в 16-чном формате (например: 0xABCD)
г) воспользоваться стандартным ColorDialog'ом из Qt

[size=3]2. Выбрать изображения[/size]
Изображения должны быть в формате BMP и иметь 16- или 24-битную глубину цвета.
Если выбранное изображение не соответствует данному условию, то приложение сразу же даст об этом знать smile

[size=3]3. Предпросмотр[/size]
Есть возможность увидеть как будет выглядеть экран загрузки. Для этого необходимо нажать кнопку "Preview".

[size=4]4. Применение изменений[/size]
Для применения изменений необходимо нажать "Apply". Откроется окно с полем лога.
Перед тем как пропатчить загрузчик необходимо убедиться в том, что изображения могут быть удачно записаны (ограничения на размер сжатого изображения никуда не делись). Чтобы это сделать, нужно нажать кнопку "Check", после чего в лог будет выведена информация о выбранных элементах для патчинга. В случае ошибки приложение не даст пропатчить загрузчик, пока не будут устранены причины ошибки.
Если все проверки были удачно пройдены, то можно залить все изменения в загрузчик, нажав "Patch".


Далее дожидаемся сообщения о том, что все операции были успешно закончены, и выдыхаем smile


Кстати, нет необходимости патчить сразу все. Можно изменить только фон и\или одну иконку, для этого просто ставим или убираем галочки в левом верхнем углу.


p.s. Иконка немного убога, но зато есть smile

UPD: вернул пакет назад.И все таки в загрузчике что то есть, что может некорректно рисовать картинки некоторых размеров. Особой закономерности не выявил.
На всякий случай добавил ограничение минимального размера (высота/ширина) изображения: если высота или ширина изображение меньше стандартной, то приложение не даст его выбрать.
Данное ограничение отключаемо для любителей экспериментов smile


Текущая версия пакета: 1.0.1
Небольшие изменения:
 - убрано дергание GUI при переходе между меню
 - состояние кнопок слева изменено с активна/неактивна на нажата/не нажата
 - самое важное: кнопка отключения ограничения размеров изображения


p.s.: прикладываю файл с размерами логотипа, которые я успел попробовать с результатами. Возможно кто то найдет закономерность smile Также осмелюсь попросить 'экспериментаторов' писать в теме размеры успешно прошитых изображений, если высота или ширина этих изображений была меньше стандартной.
Спасибо.

n900-bootlogo-changer_1_0_1_armel.deb

+ Мой скрипт (устарело)

Скрипт лежит здесь.
Использование:
logo.run [ -h ] [ -l image ] [ -r image ] [ -u image ] [ -c color ] [ -b color ]
     -h: помощь.
     -l: установить логотип.
     -r: установить иконку режима R&D.
     -u: установить иконку USB.
Все изображения должны быть 16-битным BMP.
     -c: установить фоновый цвет.
Цвет должен быть в 16-битном формате фреймбуфера.
Он состоит из 2-х байт: RRRR RGGG GGGB BBBB, где RRRRR, GGGGGG, и BBBBB — значения красного, зелёного и синего цветов.
Эти два байта нужно поменять из-за обратного порядка байтов (little-endian).
Так, например, красный цвет: 1111100000000000 = 00F8.
     -b: установить фоновый цвет для иконки USB.
Он ограничен одним байтом. Так, если вы укажете AB, цвет будет ABAB.
Если есть желание сделать всё вручную, см. оригинальную инструкцию от raandoom.

A mammal should be able to hunt mice, hibernate, fly, chew its cud, echolocate, invent tools, lay eggs, burrow. Speciation is for insects.

Поделиться

2

Re: Замена загрузочного логотипа

не вижу никаких трудностей в подмене оригинального файла-картинки "рукопожатия"

+ открыть спойлер

Я ничeму нe рaд в мoлчaньи cвeтлыx днeй. Я - Мазандар! И грoм и дoждь друзья мoи тeпepь. В лaдoни гopсть пpичудливыx кaмнeй… Бeзвoдный край… Прoрoкoв слaвить грех тут. Нe лгу сeбe : нe ждeт тaких уcпeх. И я нe стaну никoгдa тaким, кaким хoчу. Тaк умирaeт сaмoмнeньe, нo пуcть живeт сoмнeньe. Oнo и ecть пoкopнocть и пeчaль для днeй людcких. И вce прoйдeт лeгкo, бeз лишнeй бoли. Нa сaмoм дeлe этo хoрoшo, и я дoвoлeн…

Поделиться

3

Re: Замена загрузочного логотипа

Видео не смотри @ комментируй!
При чём тут рукопожатие?

A mammal should be able to hunt mice, hibernate, fly, chew its cud, echolocate, invent tools, lay eggs, burrow. Speciation is for insects.

Поделиться

4

Re: Замена загрузочного логотипа

надо же, ещё осталось что можно изменить smile класс))) интересно будет попробовать smile

Поделиться

5

Re: Замена загрузочного логотипа

Я смог повторить smile
Сейчас сделаю скрипт, который бы прошивал картинку прямо на устройстве.

A mammal should be able to hunt mice, hibernate, fly, chew its cud, echolocate, invent tools, lay eggs, burrow. Speciation is for insects.

Поделиться

6

Re: Замена загрузочного логотипа

Ура, наконец-то, значит и картинку выключения можно будет заменить!

Поделиться

7

Re: Замена загрузочного логотипа

Какая ещё картинка выключения? =/

A mammal should be able to hunt mice, hibernate, fly, chew its cud, echolocate, invent tools, lay eggs, burrow. Speciation is for insects.

Поделиться

8

Re: Замена загрузочного логотипа

hxka пишет:

Какая ещё картинка выключения? =/

Чёрный фон [s]квадрат[/s](Малевича?)

N900³ - Forever
+ Jolla

Поделиться

9

Re: Замена загрузочного логотипа

Угу, эта картинка называется «выключенный экран».

A mammal should be able to hunt mice, hibernate, fly, chew its cud, echolocate, invent tools, lay eggs, burrow. Speciation is for insects.

Поделиться

10 (13.02.2012 01:28:40 отредактировано Scevola)

Re: Замена загрузочного логотипа

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

Писал уже, вроде в теме про модификацию, что хочу заменить стартовое лого и лого перед выключением, но простая замена картинки не дает полного эффекта, замененное лого появляется, только если делать ребут через терминал, а при полном выключении/включении аппарата все равно вылезает NOKIA

Поделиться

11

Re: Замена загрузочного логотипа

В общем, скрипт откладывается. Я думал, secondary записывается в mtd0 в «чистом» виде, но в нём есть какие-то странные вставки. Так что не всё так просто.

A mammal should be able to hunt mice, hibernate, fly, chew its cud, echolocate, invent tools, lay eggs, burrow. Speciation is for insects.

Поделиться

12

Re: Замена загрузочного логотипа

И Raandoom умолк...

Поделиться

13 (16.02.2012 07:01:48 отредактировано RaANdOoM)

Re: Замена загрузочного логотипа

Я тут smile Сильно извиняюсь. Уезжал в другой город по неотложным делам. Вот только возвращаюсь.
FAQ постараюсь сделать к концу дня или на крайний случай завтра точно будет.
Могу подбодрить тем, что цвет фона всего экрана тоже можно будет менять smile

Поделиться

14 (16.02.2012 20:14:49 отредактировано RaANdOoM)

Re: Замена загрузочного логотипа

Итак...
[size=4]FAQ: Замена логотипа загрузки[/size]
* Все описанное ниже тестировалось на N900 с hw-revision = 2101. Все адреса действительны и для других ревизий.
Узнать ревизию можно с помощью flasher'а, введя в терминале "flasher-3.5 -i" и подключив телефон.


[size=3]0. Подготовка[/size]
Нам понадобится:
- RX-51_2009SE_20.2010.36-2_PR_COMBINED_MR0_ARM.bin
- flasher-3.5
- logo_compress.elf (в прикрепленном архиве)
- Ваш логотип размером 416х72


Необходимо распаковать RX-51_2009SE_20.2010.36-2_PR_COMBINED_MR0_ARM.bin. Файлов после распаковки будет много, поэтому советую сделать это в отдельной папке. Распаковываем:

flasher-3.5 -F RX-51_2009SE_20.2010.36-2_PR_COMBINED_MR0_ARM.bin -u

Находим файлы "secondary..." и "xloader...", соответствующие Вашей hw-revision, переименовываем их во что-нибудь более удобное, например: "secondary.bin" и "xloader.bin". И стараемся не забыть про них, так как они понадобятся нам позднее.


[size=3]1. Подготовка логотипа[/size]
Будет лучше если Вы переконвертируете Ваш логотип в формат BMP с 16-битной глубиной цвета, т.к. какой картинка у Вас получится - такой она и будет выглядеть на экране телефона.
Как вариант, для конвертирования можно использовать:
Windows: PixelFormer
Linux: ImageMagick


На данном этапе Ваш логотип в формате 16bpp BMP должен получиться размером ~59970 байт. Проверьте себя, если у Вас не так, то Вы где то ошиблись.


Далее нам необходимо удалить заголовок из BMP файла. Это можно сделать любым hex-редактором (при этом надо быть уверенным что порядок строк идет с верхней строки к нижней, т.н. "top-down row order", а НЕ т.н. "bottom-up row order") или просто получить raw из BMP, введя следующее в терминале Вашего компьютера (для Linux):

ffmpeg -vcodec bmp -i mylogo.bmp -vcodec rawvideo -f rawvideo -pix_fmt rgb565 rawbmp.bin

* Вы изначально могли сделать это с Вашим логотипом в любом формате, но нам необходимо видеть как картинка выглядит в BMP и возможно придется ее еще редактировать для уменьшения размера сжатого логотипа.


Снова проверяем себя. В результате у нас должен быть файл "rawbmp.bin" размером 59904 байта. Если не так, то возможно Вы, те кто решили использовать hex-редактор, неверно отрезали заголовок smile


[size=3]2. Сжимаем логотип[/size]
Создадим на телефоне папку, например "/home/user/logo" и положим туда "rawbmp.bin" и "logo_compress.elf".Открываем терминал и вводим:

cd /home/user/logo
./logo_compress.elf

Если в результате Вы увидели:

Size of 'rawbmp.bin' is 59904 bytes
fread: 59904 bytes succesfully readed
fopen: 'logo.bin' created

...значит все в порядке и Ваш логотип успешно сжат в файл "logo.bin".


[size=3]3. Проверяем "logo.bin"[/size]
Это важно! Есть ограниченя для размера файла сжатого логотипа (т.е. "logo.bin") - его размер должен быть не больше 6646 байт.
Смотрим размер "logo.bin". Тут возможны два варианта:
а) Размер "logo.bin" более чем 6646 байт. Переходим назад к шагу 1. Подготовка логотипа и редактируем логотип. Ваше редактирование должно свестись к уменьшению количества груп неповторяющихся пикселей в одной строке, а точнее это значит избавиться от плавных переходов цветов, сделать их более резкими.
б) Размер "logo.bin" менее чем или равен 6646 байт. Замечательно, переходим к следующему шагу.


[size=3]4. Патчим "secondary.bin"[/size]
Вспоминаем о "secondary.bin", полученном в самом начале, кладем его в какую нибудь папку на Вашем компьютере. В эту же папку кладем сжатый логотип "logo.bin". И приступаем к патчингу.
Патчим "secondary.bin" Вашим логотипом:

cd /path/to/your/folder
dd if=logo.bin of=secondary.bin bs=1 seek=75940 conv=notrunc

Далее хорошо бы указать размер логотипа:
* Внимание! В данном примере размер "logo.bin" равен 6646 байт, или 0x19F6 в 16-ричной системе. Укажите в команде размер Вашего "logo.bin". Обратите внимание на то что байты должны быть перевернуты!

echo -ne '\xBF\xF8\x3E\x61' | dd of=secondary.bin bs=1 seek=33240 conv=notrunc
echo -ne '\xF6\x19' | dd of=secondary.bin bs=1 seek=33562 conv=notrunc

И обещанный бонусик smile Меняем цвет фона всего экрана.
В первой команде замените каждую пару байт "\xFF\xFF" на необходимый цвет. Цвет должен быть из 16-битной палитры, и байты опять же должны быть перевернуты.
Небольшая шпаргалка:
0xF800 это КРАСНЫЙ, значит в команде указываем '\x00\xF8\x00\xF8'
0x07E0 это ЗЕЛЕНЫЙ, значит в команде указываем '\xE0\x07\xE0\x07'
0x001F это СИНИЙ, значит в команде указываем '\x1F\x00\x1F\x00'

echo -ne '\xFF\xFF\xFF\xFF' | dd of=secondary.bin bs=1 seek=36836 conv=notrunc
echo -ne '\x17\xE0' | dd of=secondary.bin bs=1 seek=36834 conv=notrunc
echo -ne '\xC0\x46\x40\x4A' | dd of=secondary.bin bs=1 seek=36574 conv=notrunc

[size=3]5. Заливаем новый "secondary.bin" в телефон[/size]
Кладем наш "secondary.bin" и "xloader.bin" где нибудь рядом. Вводим команду, подключаем телефон.

flasher-3.5 -s "secondary.bin" -x "xloader.bin" -f

Ну и, как обычно, перезагружаем телефон:

flasher-3.5 -R

И любуемся на новый экран включения smile

Всегда помним, что если что-то пошло не так, и телефон не включается, то поможет Cold Flashing.

p.s. Критика, указания на ошибки или предложения более простых решений приветствуются smile

Post's attachments

logo_compress.elf 4.39 kb, 6 загрузок с 2012-02-16 

У Вас недостаточно прав для загрузки файлов, прикрепленных к этому сообщению.

Поделиться

15

Re: Замена загрузочного логотипа

RaANdOoM пишет:

На данном этапе Ваш логотип в формате 16bpp BMP должен получиться размером 59970 байт. Проверьте себя, если у Вас не так, то Вы где то ошиблись.

Небольшая поправка, заголовки у бмп могут быть разные, например, гимп сохраняет с 59974 байт. Главное, чтобы совпадал размер сырой части.

Добавлено: 16.02.2012 12:43:47

RaANdOoM пишет:

Далее хорошо бы указать размер логотипа:
* Внимание! В данном примере размер "logo.bin" равен 6646 байт, или 0x19F6 в 16-ричной системе. Укажите в команде размер Вашего "logo.bin". Обратите внимание на то что байты должны быть перевернуты!

echo -ne '\xBF\xF8\x3E\x61' | dd of=secondary.bin bs=1 seek=33240 conv=notrunc
echo -ne '\xF6\x19' | dd of=secondary.bin bs=1 seek=33562 conv=notrunc

Проще забить остаток нулями. Для этого, перед тем, как пропатчить секондари,

dd if=/dev/null of=logo.bin bs=6646 seek=1

Добавлено: 16.02.2012 12:46:20

RaANdOoM пишет:

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

Адреса картинок точно совпадают у всех.

A mammal should be able to hunt mice, hibernate, fly, chew its cud, echolocate, invent tools, lay eggs, burrow. Speciation is for insects.

Поделиться