Garmin — как создать русифицированную прошивку на примере Garmin GPSMap76C

навигатор garmin gpsmap 76c

Для плаванья на байдарках по морю и рекам присматривал давно навигатор.

Основных требований к нему было три:

  • Не боятся воды (пресная\солёная)
  • Не тонуть если выпал в воду
  • Отличное состояние т.к. б\у

Вот выбор пал на цветные модельки Garmin GPSMap76C, есть конечно и более современные аппараты, но не хотелось тратиться, на прибор который будет использоваться несколько раз в году, а так же, чтоб сильно переживать если будет утерян или разбит.

Garmin GPSMap 76C

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

Первым делом заливаю в него карты родного региона и когда смотрю на них, то там всё плохо, вместо названий вопросики (????? ??? ????? или иные символы), ну т.е. нет поддержки кириллицы в шрифтах.

Я сразу пошёл искать русификацию для Garmin GPSMap 76C, нашёл патч к прошивке 4.10, но в приборе стояла прошивка 4.20, на официальном сайте Garmin доступна, только эта же самая версия 4.20. Может я плохо искал, но старых версий прошивки именно под Garmin GPSMap76C(без других букв) я не нашёл. Но нашёл несколько статей как можно создать свою русифицированную прошивку для навигаторов Garmin. Например на сайте: http://e-trex.narod.ru/index_en.htm

Файл прошивки и инструменты

Скачиваем с сайта Garmin официальную прошивку. Распаковываем её в отдельную папку. Далее скачиваем инструменты которые нам понадобятся дальше:

  • GUNP или GUNP2 — программа распаковщик, она позволяет более просто и быстро разобрать прошивку. В теории можно и без них, но это будет долгий путь, который прошли разработчики утилиты GUNP, чтоб автоматизировать процесс. Принцип работы следующий, программа распаковщик находит в файле прошивки области заголовка, часть с основной логикой и то, что нас интересует нас больше всего, а именно файлы русификации и шрифты затем делает из данных этих областей данных файлы, с которыми можно работать для русификации. Скачать GUNP и GUNP2

  • FE (font editor) — редактор шрифтов, он позволяет редактировать шрифты или создавать новые. Общий принцип работы следующий: рисуется на поле из пикселей символ, далее он линкуется с кодом символа необходимого нам для отображения, для кириллицы используем шрифты размером в 255 кодов. Скачать FE

  • HEX-редактор — можно использовать любой, который отображает и позволяет выделять, а затем заменять, заполнять нулями данные. Мне понравился HxD.

Распаковка официальной прошивки и описание содержимого

  • В одной папке собираем распакованный файл пошивки RGN и GUNP (или GUNP2)
  • В консоли (CMD) переходим в папку с прошлого шага и выполняем команду:
gunp.exe файл_прошивки.RGN

В идеальном случае gunp или gunp2 отработает без ошибок и успешно завершиться. В результате в этой же папке появятся bin файлы:

  • font0XX.bin — Шрифты. Можно открывать их в FE и просматривать\редактировать
  • lang_0XX.bin — Языки. Просматривать содержимое можно в любом редакторе
  • extract.log — лог файл с адресами и размером найденных «сегментов» (очень полезный файл)
  • header.bin — Заголовки
  • bootseg.bin — Загрузчик
  • fw_all.bin — Основная часть прошивки с логикой работы навигатора и взаимодействие с «железной частью».

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

Пример файла extract.log

Вытаскиваем языковой файл для модификации, пробуем переводить

Для русификации наиболее удобен английский язык, т.к. многие с ним знакомы. Если у кого другой язык второй родной, то конечно лучше брать его :).

Для того, чтобы получить файл для модификации, нам необходимо понять, какой из распакованных языков английский, обычно это lang_001.txt, но вдруг у вас не так, в общем откройте и посмотрите

Файл английского языка lang_001.txt в моём случае.

Далее открываем файл extract.log и ищем адрес, с которого начинается lang_001.txt

extract.log

Как видим, начало «файла» находится по адресу 00009F5F и его длинна 00007F6C. Если на на 16-ричном калькуляторе сложить 9F5F + 7F6C = 11ECB, то 11ECB — крайний байт английского файла. Теперь просто копируете содержимое начиная с 9F5F и до 11ECB, создаёте новый пустой файл в своём HEX редакторе и вставляете туда содержимое, далее сохраняете это всё как файл и в обычном текстовом редакторе открываете этот новый файл в на редактирование в кодировке Win1251. Можно приступать к перевод.

Пару правил\рекомендаций:

  • Кроме самих слов, нельзя больше ничего удалять\редактировать, т.е. любые символы, переносы мы не трогаем.
  • Стараться придерживаться того же кол-ва букв, которое было в английском слове, т.е. используем сокращение. Короче можно всегда, а вот если слово на русском сильно длиннее, то надо подумать про сокращение, допустимо, чтобы оно может быть длиннее на 2-3 ну может 5 символов, но оно потом может не влезть на экране в отведённое место — это раз и второе, у вас «файл» с русским может не влезть в место самого большого языка. (У меня не получилось, без ошибок заменить несколько языков на один русский). У меня самым большим\длинным оказался испанский, он и встал под замену на русский.

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

Когда перевод готов, то находите самый длинный языковой файл по адресам в файле extract.log, в моём случае это был испанский, затем выделяете его в HEX-редакторе и заменяете его содержимое 00 (нулями).

Испанский заменён нулями

Затем от его начального адреса вставляете свой переведённый файл.

Начальный адрес и размер испанского

Переведённый файл не должен быть длиннее, чем заменяемый!!! Т.е. в конце должны остаться 00 ну или прям в размер должен быть. Поэтому я и писал выше про сокращения.

Заменён на русский

Нули заменили на файл с русским. Теперь можно переходить к шрифтам, без кириллических шрифтов, вместо русских букв будут ???-ки.

Шрифты, как делать и где поискать готовые

Я сразу скажу, что я шрифты не сам не делал, я просто взял их из русифицированной прошивки навигатора Garmin, который близок к моей модели интерфейсом. Была найдена русифицированная прошивка от другой модели Garmin GPSMap, далее также расcпакованна gunp-ом. Затем с помощью редактора шрифтов fe я заглянул в каждый и выяснил список шрифтов у которых 255 символов, кириллические шрифты имеют такое кол-во в шрифтах.

Окно редактора шрифтов FE

Далее таким образом я определил какие файлы font0XX.bin относятся к кириллице и этими файлами в HEX-редакторе надо заменять шрифты, аналогично тому как мы делали с файлом переводом. Т.е. находим адрес начала шрифта идущего под замену и его длину и прикидываем влезет новый шрифт на его место, у меня всё чётко влезло и даже остались области с 00-ми.

Я заменял так font007.bin(с чужой прошивки) -> font007.bin (свою прошивку) и до font012.bin и всё нормально поместилось. Причём я не использовал файлы bin для вставки, я копировал код прямо из открытой в HEX-редакторе прошивки другого устройства используя адреса, хотя пробовал и с файлами, тоже было норм в отличии от файла с переводом.

В общей сложности заменил я все шрифты в которых была длина 255 символов. В моём случае это были font007.bin….font012.bin. При заменах пользуемся тем же правилом, вставляемый в свою прошивку код должен быть меньше либо равен размеру заменяемого шрифта, чтоб не вылезать за его границы. И первым шагом заменяем код существующего шрифта 00-ми, а потом уже заменяем их на новый шрифт.

Пару слов о том как самостоятельно редактировать шрифты

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

Далее необходимо вы выпадающем списке Link связать наш символ с кодом, в случае с «е», это 229

Пример редактирования шрифта по шагам.

Когда будет закончена русификация прошивки для Garmin GPSMap 76C (4.20) будет также выложена здесь.

Полезные ссылки:

Скачать GUNP и GUNP2

Скачать FE

Для тех, кто прочитал и не понял, что-то прикладываю видео :).

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

  1. Приветствую! Такая же ситуация. Приобрёл на авито 76CS. Прошивка 4.2. Ни одна прошивка из сети не заливается. Только может залиться родная с оффсайта гармина. Вот хотел бы попросить у Вас русифицированный файл. Естественно за оплату и с гарантией дальнейшего нераспространения.
    Инструкция очень подробна, но сам я вряд ли разберусь, не мой профиль.
    Только есть одно НО. У Вас 76C, а у меня 76CS. S-как я понял означает наличие магнитного компаса. Подойдёт ли? Моя почта [email protected]

    1. Прошивку не закончил до конца, переведена только основная часть. По Garmin 76CS думаю надо отдельно, её собственную прошивку русифицировать. У Garmin 76С вот такой код прошивки 029101000420.rgn
      Если такой пишите, скину.

  2. Здравствуйте ! Подскажите пожалуйста как обстоят дела с русской прошивкой 4.2. и какие обновленные карты можно загрузить на устройство?

Добавить комментарий для Руслан Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *