Просто ради справедливости хочу
сразу оговориться: я совершенно не претендую на абсолютную верность своих
суждений, даже напротив: призываю всех Вас не верить мне! Дело в том, что я
сознательно не копирую шаблонные инструкции к программам и программаторам;
подобные вещи вы легко найдёте и самостоятельно при помощи Яндекса. Я же, приступая
к работе над этой серией статей, изначально основывался только на своём опыте,
наблюдениях и измерениях. В «актив» подобной манеры изложения можно записать
более чем двенадцатилетний (и заметьте: относительно успешный!) опыт ремонта
сотовых телефонов; в «пассив» - ну, не всегда моё мнение совпадает с мнением
авторов программ и рекламных статей. В любом случае, решать вам. Если есть, о
чём поспорить – буду рад; есть вопросы – задавайте. Надеюсь, мой труд будет
кому-то полезен.
Итак – к барьеру!
Прежде всего – хотелось бы
привести немного скучной теории. Так как статьи рассчитаны на самый разный круг
читателей, то среди них найдутся и те, кто только что решился прошить первый в
жизни телефон, и ещё сам не очень понимает, с чего начать и зачем вообще это
нужно. Вот их я и приглашаю прочитать эту часть статьи. Впрочем, остальным,
думаю, тоже будет не вредно освежить знания.
Итак: а что это вообще такое – прошивка? Попробую объяснить. Сотовый
телефон – это не только «ценная шерсть и три килограмма диетического мяса»; в
состав абсолютно любого телефона входят, как минимум, следующие узлы: модуль
радиотракта, микропроцессор, аудиотракт, дисплейный модуль (и сам дисплей), батарея,
ну и клавиатура. Всё это должно согласованно работать над одной задачей: когда
вы нажимаете кнопочку «666» - в трубке непременно должен зазвучать голос горячо
любимой тёщи! Немного подробнее это происходит так: при нажатии определённых
клавиш процессор переходит из «сонного» режима в режим работы, активизирует
радиотракт, связывается с базой и получает временныйй ключ кодировки, далее
база соединяется с такой же трубкой любимой тёщи; сигнал с микрофона
усиливается, цифруется, кодируется… Ну и так далее. А как вы полагаете, кто,
или что – является руководителем такого слаженного действия всех узлов?
Человек? Не-а, он только кнопочки нажимает! Микропроцессор? Ну, отчасти. Ещё со
школьного курса информатики многие усвоили, что процессор – это всего лишь
устройство, которое умеет очень быстро считать и уже в зависимости от
результатов вычислений выдавать на определённых выходах тот или иной сигнал. А
кто, или что – поставляет данные для процессора, чтобы тот мог их посчитать?
Где прячется алгоритм работы, по которому процессор, при длительном нажатии
клавиши "#” должен активизироваться? Так вот: прошивка – это и есть всего лишь
файл, в котором и закодирован полный алгоритм работы телефона! Повинуясь этому
алгоритму микропроцессор в телефоне должен в абсолютно любой ситуации
совершенно точно и однозначно реагировать на те или иные действия пользователя
или сети. В прошивку входятдрайвера
всех устройств, установленных в Вашем аппарате (камеры, табло, клавиатура…),
там закодирован и весь алфавит, чтобы СМСки печатались именно на русском языке;
игры, мелодии, настройки передатчика, уровень напряжения батареи, при котором
телефон пишет, что батарейку нужно зарядить… Короче, как я уже сказал, прошивка
– это файл, который частями или полностью выполняется в процессоре. Можно
провести некоторую параллель с обыкновенным компьютером: есть «железная» часть:
материнская плата, винчестер, блок питания; есть необходимая минимальная программная
часть: операционная система, драйвера всех устройств, BIOS материнской платы; а уже на самом
верхнем уровне – программы, ради которых всё это и задумывалось: наши любимые
игрушки, ICQ,
видеоплееры… Попробуйте, сотрите память в микросхеме БИОСа и попытайтесь
включить комп. Или – «убейте» операционную систему. На что станет похож Ваш
ноутбук? Правильно, на груду железа. И, несмотря на то, что все детали
компьютера исправны – он просто не включится! Так вот: то, что записано в этой
самой микросхеме BIOS
вместе с операционной системой и драйверами – это и есть прошивка! Вот всё
точно так и в телефоне: всё будет исправно, тестером, анализатором и любыми
пробниками можно хоть всю жизнь искать неисправность – и в конце концов
выяснится, что всё абсолютно исправно; но пока мы не объясним каждому узлу,
когда и что он должен делать – ничего просто не заработает!
А где же хранится эта самая
прошивка? Сообщаю по секрету: в любом, даже в самом древнем телефоне есть
флеш-память, или – флешка. Но – не радуйтесь: это не та флешка, на которой все
хранят музыку и порнушку. Есть в телефоне микросхема, которая выполняет функции
сразу и микросхемы БИОСа, и винчестера в компьютере, и которая всегда работает
в паре с процессором. Вот в неё-то и записывается файл прошивки; причём, что
важно – записывается строго в определённое место; каждому нолику и каждой
единичке файла прошивки соответствует только одно, единственное и уникальное
место в ячейке флеш-памяти! Если в компьютере мы можем записать новую песенку
на диск «С» или «D»,
или вообще – на CD-болванку,
то в телефоне такое не получится: процессор просто не будет знать, где и что
лежит! А при включении телефона процессор всего лишь читает из определённых
ячеек памяти программу-прошивку и выполняет её.
В связи с этим при прошивке
необходимо очень точно контролировать, куда и что заливается, адреса начальной
и конечной ячеек и всего, что между началом и концом. Это трудность номер раз.
Разумеется, есть и ещё (чтобы не скучали!). Подумав немного, наиболее дотошные
товарищи зададутся вопросом: но раз прошивка управляет работой всего, значит,
она же должна хоть и косвенно, через поцессор, но всё же должна - управлять и самим
процессом прошивки телефона! Замкнутый круг получается, однако! Правильно вы
думаете, верно. Это трудность номер два. И решение уже давно придумали. Для
начала прошивки в процессор прежде всего загружают программу – лоадер (загрузчик),
которая работает всего один раз и единственной её задачей является правильное
«раскладывание» по ячейкам памяти файла прошивки. Как только последний бит
файла ляжет в отведённую для него ячейку программа-лоадер выгружается из
процессора, а при последующем включении в процессор уже загружается файл
прошивки и начинается штатная работа. Есть телефоны, в которых используется
внешний лоадер, т.е. в сам телефон он не загружается, а работает на компьютере;
в этом случае должна быть аппаратно реализована возможность помещать
определённую информацию в определённые ячейки памяти телефона. Трудность номер
три (я же говорил, что скучно не будет!): а как до этой самой флешки добраться,
как к ней подключиться? Ведь чтобы куда-то записать файл с компьютера нужно
сначала это «что-то» к компьютеру подсоединить! А в отличие от традиционных
флеш-карточек или USB-флешек
микросхему к компьютеру не подключишь?! Так что же делать? Ну… прежде всего,
справедливости ради, замечу, что микросхему действительно можно выпаять и подключить
напрямую к компьютеру через специальное устройство (программатором называется!),
записать туда программу и припаять флешку обратно; правда, процедура эта очень
дорогая, сложная и никогда в жизни не окупится, так что не стоит её и
упоминать. А более цивилизованный способ основан на том, что сами
производители, желая максимально упростить и удешевить процесс сборки,
подключают некоторые, важные для прошивки выводы внутренней флеш-памяти прямо к
разъёму телефона. Соответственно, для прошивки достаточно просто найти эти
контакты и подключиться к ним! И не бейте меня ногами за такое объяснение:
знаю, это не совсем правильно. К разъёму подключаются не выводы флешки как
таковые, а ещё целая куча всего: фильтры, процессор, преобразователь уровней…
Сейчас я не собираюсь разжёвывать архитектуру построения телефонов, я просто
хочу, чтобы читатели немного поняли, о чём речь. Кстати, если есть желание –
могу и про архитектуру, напишите, если интересно.
А теперь вопрос: прочтя всё
вышесказанное – как думаете: можно ли при помощи прошивки заставить телефон
работать в десять раз быстрее? Или прошивкой сделать так, чтобы в телефоне
появился GPS-приёмник?
А может, при помощи прошивки можно сделать, чтобы батарейки хватало на пол
года?! А ведь приходят товарищи ко мне в мастерскую и с умным видом требуют,
чтобы я прошил их телефон, потому как «динамик хрипит!».
Ну да ладно, мы отвлеклись. Весь
файл прошивки можно условно разделить на три части (а можно и не условно:
например, у некоторых Самсунгов или СониЭриков прошивка и состоит из двух или
трёх файлов).
Первая часть – всегда отвечает за
аппаратную часть телефона: драйвера, настройки, калибровки… всё это заносится в
прошивку. Может, кто ещё помнит, сколько различных регуляторов, подстроечников
и прочих «крутелок» было на платах старых телевизоров? Да не меньше сотни! А в
телефоне-то таких настроек гораздо больше! Более того, как не было двух
телевизоров, у которых все настроечные элементы были выставлены в абсолютно
одинаковое положение, так нет и двух телефонов с одинаковыми настройками! На
заводе-изготовителе при помощи специального оборудования настраивают каждый,
именно КАЖДЫЙ телефон по отдельности. А результаты настроек заносят в
специальную область в файле прошивки. Эта область УНИКАЛЬНА, и даже в другом
точно таком же телефоне из этой же серии настройки будут другими!
Во второй части файла хранятся
чисто уже программные «фишки»: иконки, картинки, мелодии, игры, архитектура
меню… В общем, если первая часть была БИОСом и драйверами, то вторая часть –
это вроде как операционная система.
А в третьей части – самой
маленькой, но не менее важной, хранятся настройки безопасности и региональные
настройки: языки, список разрешённых или запрещённых операторов, страна, в
которой тел может работать…
Соответственно, нетрудно догадаться,
что первая часть прошивки уникальна и её менять нельзя вообще, иначе телефон
просто не заработает! Вернее, менять-то можно, но настройки очень желательно
сохранить. Залив в телефон настройки от другого, пусть и точно такого же тела,
мы получим… аппарат для проверки своей удачи! Может, и заработает, а может, и
нет. Чаще всего, конечно, работает, но с различными «глюками»: то сигнал
слабый, то связь прерывается, быстро садится батарейка, звук тихий (или
громкий)… ну и так далее. Короче, настройки нужно всегда сохранять и после
прошивки возвращать на место! Вторую часть можно менять безо всяких проблем, ну
картинки будут другого цвета или меню другой формы – ничего важного. А вот
третью – третью можно в случае необходимости смело залить от другого телефона;
главное, чтобы настройки безопасности совпадали; иногда это делать даже не
«можно», а именно «нужно» - это когда телефон привезли из-за границы и он
ругается, мол, «работать не буду, обратитесь к своему оператору».
Запомнили хоть что-нибдь из вышесказанного?
Да? Ну и зря! Забудьте! Потому, что я это всё рассказывал применительно к
обычным, не китайским телефонам, и рассказывал я это только затем, чтобы вы
поняли, как это должно быть «по хорошему». В «китайцах» же обычно всё
совершенно не так.
Особенности китайских телефонов.
«Всё не так, ребята!» - пел
когда-то Высоцкий. Ну, или почти всё. Ничего принципиально нового китайцы не
изобрели: в целом всё вышесказанное относится и к ним; но – это в целом. Дело в
том, что инженеры из поднебесной в деле максимального удешевления своей
продукции пошли ещё дальше. Во первых, в 99% их телефонов все три части
прошивки – те, о которых я говорил выше, соединены в одну и намертво
переплетены так, что просто невозможно их «расплести» обратно. Архитектура
используемых в телефонах процессоров и размер используемой флеш-памяти,
разумеется, налагают некоторые ограничения и унификацию на прошивку, но
помогает это слабо. Постараюсь объяснить: допустим, что в телефоне SonyEricssonXXXязыковой
пакет лежит в ячейках памяти с 1000 по 2000. Соответственно, желая нормально
русифицировать этот телефон, нужно всего лишь заменить содержимое этих ячеек на
аналогичное, но с русским ленг-паком. В китайских же телах всё не так просто!
Ну, во первых – возможно, что ячейки с языковым пакетом лежат не «все в одном
месте», а разбросаны так, как позволяло место… или умственные способности
разработчиков. Для полноты ощущений добавлю: бывает, что текст надписей лежит в
одном месте, а шрифт (или шрифты) – в другом; формат ленгпаков бывает… очень
разным, ну просто неповторимым и уникальным! Соответственно, русификация таких
телефонов практически невозможна или – это будет штучная работа хорошего
программиста, которая и стоит хорошо! По этой же причине в «китайцев» часто
невозможно установить игрушки или приложения дополнительно к уже имеющимся. И
дело часто даже не в отсутствии Ява-машины (может, кто ещё помнит, как меняли
игрушки и мелодии в старых Сименсах, хотя там тоже Явы не было?!). Ведь
теоретически, достаточно просто найти место, где лежит игрушка и положить туда
другую, аналогичную по формату и размеру. Но ни формат, ни размер, ни, уж тем
более, место, в котором игрушка лежит выяснить невозможно. Есть такая хорошая
(и почти бесплатная!) программка, Ruslang называется. Предназначена именно для
русификации китайских телефонов (это если забежать вперёд). 90% телефонов она
более или менее сносно русифицирует, а остальные 10 ну… в лучшем случае –
просто НЕ русифицирует; в худшем – убивает программно. Народ потом возмущается
– дескать, программа плохая! Да нормальная программа! Ну ведь не бывает
человека, который умеет говорить сразу на всех языках мира! Вот и программа
просто не в состоянии распознать ВСЕХ китайцев! Но в этом есть и некий, пусть и
извращённый, но плюс: прошивки от одних телефонов часто чудесным образом
подходят к другим телефонам, имеющим другое название, вид, форму, марку… Просто
ради смеха я даже пытался в слайдеры заливать прошивки от моноблоков (и
наоборот), в телефоны вообще без камеры заливал прошивки от тел с камерами… И
ведь что самое забавное: иногда работают самые неожиданные сочетания! Несколько
раз в телефон без Ява-машины подбирал прошивку с Явой; причём (с месяц назад) в
слайдер с двумя камерами, но без Явы подошла прошивка с Явой, но всего с одной
камерой; т.е. одна камера перестала работать… но несмотря на это клиент был на
седьмом небе от счастья! Когда я предложил вернуть всё как было - последовал
решительный отказ и бутылка пива в добавок к стоимости работы! К вопросу о
замене прошивок я ещё вернусь, но – чуть позже.
Однако программная часть – не
единственная проблема, которую приходится решать, желая самостоятельно
научиться прошивать телефоны. Дело в том, что на те самые выводы, которые при
прошивке подключаются к флешке телефона, нужно подавать только сигналы
определённой формы и напряжения. Для особо любознательных назову даже цифры: сигнал
логической единицы соответствует напряжению от 0 до +0,7 вольта; логический
ноль равен +3…+3,5 вольта. А вот на компьютере таких сигналов нет! В USB-разъёме сигналы равны
соответственно +4…+5В и 0…+0,5В; на COMили LPT портах вообще ноль – это -12В, а единица
равна +12В. Короче, никак. Выход – либо покупать так называемый «Бокс» -
специальный программатор для телефонов, там уровни преобразовываются автоматически,
и думать почти не нужно. Нужно только подумать, где взять 300…1000 американских
рублей. Но есть и более хлопотный, зато и более гуманный способ – самому
сделать прошивочный кабель. Как именно его сделать – чуть позже; сейчас лишь
скажу, что предназначен он для преобразования компьютерных сигналов в сигналы,
понятные телефону. Наверное, людям, впервые возжелавшим прошить своего любимого
китайца, понравится именно этот способ.
Но и после изготовления
прошивочного кабеля проблемы не заканчиваются! Иначе китайцы не были бы
китайцами! Ещё одна проблема заключается в том, что, повинуясь какой-то неведомой
логике, китайские инженеры в 50% случаев просто не выводят сигналы, необходимые
для прошивки, на разъём телефона! Нет, контакты-то, разумеется, есть: иначе как
бы сами изготовители прошивали свои творения?! Только вот контакты эти глубоко
и надёжно спрятаны в недрах аппарата, и чтобы их найти нужно аппарат вскрыть. В
Е-Нете выложены множество картинок с расположением контактов, есть несколько
методик, по которым можно самому найти искомые проводки… Кстати, пора бы их уже
как-то обозвать, контакты эти. И называются они Rx и Tx. Это от английского "Trancieve”
– отправление и "Recieve”, получение; то бишь, по одной шине компьютер передаёт
информацию телефону, а по другой – получает ответ. Ещё нам понадобится вывод Gnd–
это сокращённое "Graund”
– почва, земля, уровень условного нуля, относительно которого и отсчитываются
напряжения Rx и Tx.
Итак, подитожим вводную лекцию.
1)Прошивка – это файл, который нужно записать в телефон.
2)При этом главная проблема – найти этот файл,
3)Правильно подключить компьютер к телефону
4)И разложить файл по строго определённым ячейкам.
А теперь немного остановимся на
том, зачем всё это нужно и нужно ли
вообще.
Разумеется, главной причиной
остаётся нормальная русификация телефона; эта проблема ещё долго будет
волновать умы простых покупателей (вариант, что китайцы выучат русский – это из
разряда фантастики!). Причина номер два – так называемые «мигалки»: это когда
телефон с СИМкой включается, мигает, выключается, затем снова включается… Не
знаю, что там за проблема, но 99% клиентов, приносящих телефоны с таким
диагнозом жалуются, что тел просто повис при попытке что-то передать/получить
через Блютуз. Очень много подобных жалоб… Народ помоложе и попродвинутее желает
«прошивку с Ява-машиной, чтоб Аська работала». После самостоятельного ковыряния
в инженерном меню телефон обычно умирает совсем – это тоже лечится прошивкой.
При помощи прошивки иногда можно добиться более громкого звука или более чётких
снимков: но только иногда. Это делается путём замены штатных кодеков другими.
Иногда (редко) телефон вообще не включается; заливаешь новую прошивку и –
вуаля! всё работает! Гурманы могут просто попробовать залить другую прошивку
ради «а что там интересное?»; тут главное – сохранить бекап прошивки свей,
родной. Если прониклись этой идеей – можете добавить пару-тройку своих причин. Но
если телефон греется и не включается, если его искупали и плохо высушили, если
там нет телевизора но очень хочется, если внезапно динамик перестаёт работать
после того, как в него гвоздиком поковыряли – это прошивкой НЕ ЛЕЧИТСЯ! Я уже
говорил: в телефоне есть не только прошивка; там ещё много деталек всяких, и
они тоже иногда ломаются!
Ну что, убедил? Ну, тогда –
приступаем к первому этапу прошивки. Какому? Правильно: изготовим прошивочный
кабель.
Кабель.
Зачем он нужен – думаю, уже ясно
всем. Через стандартный Mini-USB шнурок телефон прошить
нельзя! Через СОМ-кабель – тоже! Для любителей писать в личку письма типа «а
можно ли прошить по Блютузу?» ещё раз объясняю: смысл прошивки заключается в
прямом подключении к Flash-памяти
телефона и размещении там определённой информации по определённым адресам. Есть
методики, позволяющие менять часть программного кода, не имея прямого доступа к
Flash-памяти. Но это
работает не на всех телефонах и таким способом невозможно заменить всю
информацию, находящуюся в памяти. Так что – либо прошивочный кабель, либо
программатор…
Идём в магазин, торгующий
аксессуарами для сотовых телефонов; по дороге запасаемся БААЛЬШОЙ шоколадкой.
Мило улыбаемся продавцу (лучше – продавщице!) и просим показать несколько
кабелей для старых телефонов, всё равно каких: типа SiemensC55, SamsungC100, Эриксонов каких-нибудь
древних… Не обращая внимания на удивлённые взгляды девушки, из предложенной
кучи выбираем те, у которых на середине кабеля болтается небольшая квадратная
коробочка. Примерно как на фото: