История одного «очень китайского» телефона



Путь от “несвяти с сетей” и “спаритьБлютуф” до человеческого телефона

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

Скупой платит дважды...

Так было и со мной, когда примерно два года назад я увидел на очередном китайском сайте смартфон с gps, usb-host’ом, двумя камерами и прочими плюшками за смешные деньги. В тот момент, само словосочетание “китайский телефон” должно было остановить меня, но я уже вписывал пароль от PayPal и скоро эта “прелесть” попала мне в руки…

Я чувствовал, что я обманул систему, ведь у меня в руках “телефон со всеми наворотами”, пусть немного китайский, но ведь за копейки.

Пластмасса имела запах “жжёной макаки” и общее качество сборки оставляло желать лучшего, но главные “бонусы” таились в другом. В телефон была вставлена карточка, и, наконец, телефон был включен.

Не могли не радовать такие пункты меню, как “Блютуф”, “Уст. Т.ф”, “Непр.к. Со.” и прочие сокращения, истинные значения которых можно было узнать лишь по картинкам. В дополнение, уже в районе меню третьего уровня (а разработчики не побрезговали и вложенностью меню до 9-ого уровня) картинки исчезли (не считая “ценных” номеров пунктов меню красного цвета) и вместе с ними исчезло и понимание процесса (что делает меню “вкл. UI эдиции” можно угадывать довольно долго). Сразу отмечу, что на телефоне была возможность выбрать язык и что английская версия намного лучше русской, что весь перевод хранится в txt файле, который можно было бы подредактировать и избавиться хоть от части этого уродства. При желании, можно было даже перерисовать некоторые картинки (например, те, на которых особенно чётко были видны артефакты JPEG), которые представляли собой кучу файлов (около 200) в папке “\Windows\”. Дело было не в конкретном пункте меню и не какой-то определённой части интерфейса. Дело было в непроходящем ощущении того, что я совершил огромную глупость, заплатив за ЭТО деньги. Приведу ещё несколько примеров, чтобы был лучше понятен мой восторг в тот момент:



В защиту телефона могу добавить то, что даже когда у него что-то не получалось, он делал это так смешно, что было трудно на него злиться. Например, при ошибке подключения к WiFi сети, он выдавал “неудачно содениниять”. Как вообще можно злиться на предмет, который очень старается “удачно посодениниять”?!

Когда я закончил осматривать все прелести дизайна и перевода, с другого телефона был сделан первый звонок для проверки связи… Телефон дозвонился и раздался первый гудок, но чудо инженерной мысли из поднебесной предательски молчало. За первым гудком последовал второй, а за ним и третий… И только тогда китайский телефон осознал, что звонят именно на него и отобразил очередное окно жутковатого вида. Следует отметить, что за всё время моих попыток получить от китайского телефона (а именно от китайской программы) адекватное время отклика, это был один из лучших показателей. Бывали ситуации, когда между первой реакцией китайской продукции и сообщением второго телефона “абонент не отвечает” проходило всего 2-3 секунды.

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

Моим спасением могла стать “более свежая” прошивка для телефона, в которой разработчики могли уже и исправить многие проблемы. К моему удивлению, небезызвестный поисковик сразу выдал сайт и форум производителя. По правде говоря, я не ждал не только того, что у них будет свой сайт, но особенно того, что там будут новые прошивки! Оттуда была удачно получена последняя версия прошивки, но это не изменило ровным счётом ничего. Стало понятно одно: если эта проблема не исправлена, значит либо она только у меня, либо это проблема железа и с ней ничего не сделаешь, либо кривые руки разработчиков не позволяют им нормально среагировать на сообщение от модема. За неимением других вариантов, вся надежда была на последний вариант, и я решил попробовать написать свою версию пользовательского интерфейса для очень китайского телефона…

Сначала, было необходимо отключить тот ужас, на который я любовался с момента включения телефона. Для этого телефон был подключен к компьютеру, и был запущен Windows CE Remote Process Viewer.



Процесс имел гордое название “PhoneUI.exe”, работал в 18 потоков и подгружал небольшую армию библиотек. В тот момент меня интересовала только одна вещь — в чём причина такой разницы между дозвоном и нотификацией, а для этого нужно было попробовать “пообщаться” с модемом. Позже выяснилось, что в телефоне модем был “блуждающим” и даже родной PhoneUI.exe пробовал подключиться к модему по принципу “может ты модем?” в следующем порядке: “GSM1:”, “VCP1:”, “VCP2:”, “VCP3:”, “COM1:”, “COM3:”.

На скорую руку набросал небольшую программку, которая подключалась к модему, посылала команду и ожидала ответа. Программа была запущена на телефоне, но модем не ответил — программа встала на этапе чтения ответа от модема. Не буду вас утомлять описанием того, как я искал кто-же модем в системе, как перерыл реестр с помощью Windows CE Remote Registry Editor (что имело хоть небольшой КПД, т.к. я убрал с автозагрузки PhoneUI.exe). Когда искать надоело, я взялся за дизассемблер и стал ковырять PhoneUI.exe с целью быстренько убедиться в том, что используется стандартная связка Windows API функций: CreateFile / WriteFile / ReadFile / CloseHandle. То, что программа содержала отладочную информацию, меня не слишком удивило и оказалось очень даже кстати:



Чтобы убедиться, что китайцы не выдумали особого способа общения с модемом, я запустил поиск по “AT+”. Первым совпадением было “%xAT+CGATT=1\r”. Передача данных модему происходила вызовом Windows API функции WriteFile, что было предсказуемо, но я немного удивился тому, что моя программа не сработала.



Позже выяснилось, что это была ветка программы, которая выполняется только в “особом случае” и что такой метод отправки команд модему слишком казуальный для креативных разработчиков данного устройства. Я снова упускаю несколько дней “безрезультатного потыка” в разные места телефона и перебор всех возможных параметров и комбинаций настроек. Дойдя до очередного исступления от того, что PhoneUI.exe удачно общается с модемом, а моя программа не может получить ответа и на одну команду, я решил взяться за дизассемблирование серьёзнее и не ограничиваться поиском первой попавшейся AT команды.

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

Повторный поиск показал, что AT команды шлются двумя способами — первый уже был описан выше, второй — через вызов функции DeviceIoControl. Т.е. для передачи данных модему вместо WriteFile используется DeviceIoControl. На её вызов и был поставлен breakpoint, и вскоре стала понятна схема передачи команд модему.



Также стало известно, что необходим дополнительный вызов DeviceIoControl после CreateFile, чтобы активировать модем. После нескольких часов выдирания необходимых значений из PhoneUI.exe стало ясно следующее:
  1. Модем обычно расположен на “GSM1:”. Я использую слово “обычно”, т.к., если телефон на момент включения подключен к компьютеру или ему просто стало скучновато, то модем мигрирует на “VCP1:”, “VCP2:” и далее по цепочке.
  2. После CreateFile необходимо вызвать DeviceIoControl с кодом 0xf00d226c и без дополнительных параметров.
  3. Для отправки данных модему, используется DeviceIoControl с кодом 0xf00d2268, в качестве параметра передаётся строка фиксированной длины (1032 байта) из которой первые 4 байта — HANDLE, полученный после вызова CreateFile, 1024 байта — строка, содержащая AT команду(ы), и последние 4 байта — длинна строки. После пункта (2) можно использовать и WriteFile, но работает он раз через раз, поэтому использовать его я не стал.
  4. Для чтения, как обычно, используется ReadFile.

К моей радости, модем понимал основной набор AT команд и имел свой дополнительный набор команд, которые были удачно “выцеплены” из PhoneUI.exe.

Затем последовала ещё целая эпопея с контролем динамиков, вибрации и прочих элементов телефона, написание своего простенького графического интерфейса, где всё тоже не обошлось без приключений, но это уже другая история “очень китайского” телефона. Для тех, кому интересно, привожу несколько скриншотов того, что было сделано в результате (ничего особенного, просто оболочка для просмотра состояния и управления телефоном и включения / выключения основных устройств):



Возвращаясь к мысли из начала статьи — перед тем, как совершать покупку, нужно было хорошенько подумать. Телефон не оправдал необходимых временных (а значит и денежных) затрат, хотя нельзя игнорировать приобретённый опыт и массу позитивных эмоций, когда мы читали перевод стандартного интерфейса. Могу точно сказать, что покупка этого телефона — глупость, но теперь, зная насколько дёшево обошёлся этот цирк, я могу сказать, что я не жалею о покупке.

Телефон умел даже уходить, как “очень китайский телефон”:


Спасибо тем, кто сделал это чудо.

Similar posts

AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 61

    +11
    ну за такие деньги — неплохой опыт))
      0
      >Мы часто сталкиваемся с ситуациями, когда то, что оказывается у нас в руках, является совсем не тем, что мы надеялись получить
      Я на те же грабли наступил. Китайца другого производителя чуть не разбил за «русская языка» и глюки.
      +6
      А что за телефон то? Где модель, цена, сайт производителя?
        0
        Сайт производителя умер примерно 4 месяца назад со свей поддержкой телефона.
        Модель точно не скажу, но если память не изменяет, то «MFU-N62», цена в районе 100$.
          +1
          100 баксов — это вы еще много переплатили.
          Можно было купить и за 33 бакса + 9 баксов за доставку.
          www.sunsky-online.com/list/101413/HiPhone+5.htm
            +3
            Не сказал бы, что я особо переплатил, т.к. покупал я его не вчера и даже не в этом году, к тому же у этого чуда есть GPS приёмник с неплохой скоростью холодного старта и USB-host.
          +1
          Тоже захотелось поковыряться в нем?
          0
          Начало статьи повеселило! Спасибо!
            –19
            Особенно порадовало «Немота» и «Включить». Павлу Воле надо было отправить этот телефон для «презентации» в Камеди Клабе.
              +3
              Мда, лучше бы ZTE Blade купили) а выкладывать свою «прошивку» не планируете?
                0
                Не думал в эту сторону. Тут есть много владельцев этого телефона?
                  +4
                  Ну хоть китайцам помочь )
                    0
                    Обязательно выложите, может кому нибудь пригодится, и тем же китайцам дайте, может обновят свою прошивку
                      +1
                      У китайцев в руках была такая неплохая операционка для того времени — глядите что они с ней сотворили… А вы предлагаете им отдать такую прошивку… Не жалко? :)
                      +4
                      Да, телефон качественный, стоит своих денег.
                        0
                        Неплохой телефон, но у меня умер через 3 месяца без надежды на починку.
                      +11
                      Браво.
                      Вызывает восхищение такой подход к решению проблем.
                      И, кстати, к написанию статей тоже.
                        +52
                        В этот момент, учитывая, что телефон стоил денег и я уже затратил на него немало времени, я понимал, что дешевле было купить новый iPhone, но теперь это уже было дело принципа.

                        Ну какого еще принципа? Очевидно же, что вами движет любопытство. Не надо стесняться своих увлечений. Это была отмазка от рациональных тупиц, которые не имеют ни капли любопытства, но не забудут пнуть за зря потраченные средства? Есть такое понятие — хобби. Да пусть они завидуют, что вы позволяете себе такие нерациональные, с их точки зрения, вещи.
                          0
                          Так а какая там ось стояла? Есть wince, может быть, свою сборку сделать?
                            0
                            Именно WinCE.

                            Сначала тоже была такая мысль, но т.к. ничего лишнего (кроме PhoneUI) в китайской сборке не нашёл, то решил, что нет смысла.
                            +1
                            > за дизассемблирование серьёзнее и не ограничиваться поиском первой попавшейся AT команды.
                            ну можно же было кросслинки проглядеть на "...AT+...", наверняка видно же было что строка используется не только в WriteFile, но и при заполнении буфера DeviceIoControl.
                            А так, прикольно сделано.
                              +4
                              Порадовало, особенно «remember to change idVendor». Ничего не меняется в мире, TANSTAAFL рулит.
                                +8
                                Статья подняла настроение. Хороший слог — весело читать и в тоже время информативно.
                                  +35
                                  Для отправки данных модему, используется DeviceIoControl с кодом 0xf00d2268

                                  Для скармливания данных…
                                    –14
                                    А балда приговаривал с укоризной:
                                    «Не гонялся бы ты, поп, за дешевизной»

                                    От себя добавлю — я не могу понять — зачем экономить на приобретении, а потом столько времени (а время тоже деньги) ковыряться? Надо дать сработать «стоп-лоссу»
                                      +3
                                      Задумки ковыряться не было. А в остальном, всё верно подметил masterbo.
                                        +3
                                        Я обещаю, что внимательно прочитаю все коменты перед написанием своего.
                                        Я обещаю, что внимательно прочитаю все коменты перед написанием своего.
                                        Я обещаю, что внимательно прочитаю все коменты перед написанием своего.

                                        masterbo действительно прокомментировал мудро. я именно завидую вашему упорству.
                                      +3
                                      Подброшу Вам занятий: а теперь попробуйте написать драйверы для девайса, чтобы линуксы там запустить.
                                        0
                                        А потом водрузите на него Android и допишите те дрова, которых не хватало после линукса… ;(
                                          +2
                                          Дело кончится установкой Windows Vista. И Crysis сверху.
                                        +9
                                        Теперь надо купить партию этих телефонов, прошить своей нормальной прошивкой и распродать.
                                          0
                                          Интересный пост!
                                          Не хватает фотографий внешнего вида железяки, хотя не в них суть.
                                          Читал с удовольствием! Получил ещё один ответ, почему не стоит брать китайский смартфон, помимо ненормируемых мощностей излучения.
                                            0
                                            Я не доверяю китайскому железу, изготовленному без контроля крупных брендов.
                                            Именно из-за несоответствия заявленных характеристик реальному положению дел. Очень они любят указать поддержку функции, сделать для неё пункт в меню, а потом забыть реализовать. Либо просто преувеличить аппаратные возможности.
                                            +3
                                            Не обижайтесь, что не работало. Просто не надо покупать дерьмо.
                                            А как опыт — весьма ценно, да.
                                              +5
                                              Статья читаеся легко и с улыбкой ) Спасибо!
                                              Хотелоь бы поподробнее почитать историю создания своего UI…
                                                +1
                                                Что именно интересует?
                                                  +2
                                                  Ну, какими средствами создавалось, в чём рисовалось, как прикручивалось.
                                                    0
                                                    Да а что там особенного, тот же Lazarus, формочки-картиночки и тд. Это если нативно, без NET. А для NET всяких бейсиков тоже хватает, тут выбор большой. Так что ничего сложного. Ну про VS я не упоминаю даже.
                                                      +2
                                                      Для реализации своего UI я не использовал фреймворков или дополнительных библиотек.
                                                      В то время, паралельно, писал одну игру для КПК («эмулятор яйцеловки») и смог ограничиться знанием о Raw Frame Buffer и WinApi, да и просто, было любопытно реализовывать всякие alpha и color blend'ы. Но это уже больше история создания игры, чем история данного телефона, т.к. много заимствовал от неё.

                                                      Знаю, что быстрее было бы используя библиотеки, но это уже было ещё одна порция дел, чтобы потешить любопытство.
                                                +2
                                                А где же вторая часть, о том как туда поселился зелёный робот!? Я так ждал такой развязки…
                                                  0
                                                  А я, признаться, увидев последние скриншоты, ждал как раз в завершении слов о поселившейся на «чуде» мобильной «семерке».

                                                  Автору статьи огромное спасибо — и за рассказ, и за упорство!
                                                  +3
                                                  Браво! Вы один сделали то, что куча народу не всегда в состоянии сделать.
                                                  Интересно сколько китайцев читают это пост?
                                                    +2
                                                    这不是你的事,讨厌的外星人!
                                                      0
                                                      Продолжая тему статьи, перевод этого сообщения звучит так:
                                                        +4
                                                        «Это не ваша вещь, неприятную иностранцев!»
                                                    +3
                                                    А можно хотя бы фотографию, а лучше ссылку на чудо!
                                                      +2
                                                      Предложите свои познания в области китаетелефоностроения «компании» FLY, ибо они имеют весьма скудное понятие о том «софте», который для них пишут в Поднебесной.
                                                        +1
                                                        Акция: «Предложи свою идею и выйграй возможность работать у них за копейки!»?
                                                        0
                                                        чудесная машинка, да. кстати, буквально недавно в ремонте у меня побывал один китайфон, который на поверку оказался не поным дерьмом — как в плане перевода меню, так и в плане функционала. не перешит, таковым к хозяину и попал сновья. но это же такая лотерея…
                                                        самое неприятное — софт. достаточно навороченная труба понимает только яву. весьма печально. ну, как вариант остается одно — носить такой телефон, как резервную трубу (два трансивера все-таки), ну и карманный дуроскоп
                                                          –1
                                                          Непонятен общий тон статьи: «Какие китайцы плохие и какой я хороший.»
                                                          5 за решение проблем, кол за попытку обхитрить всех и минус за последуещее обобщение своего косяка на всех китайцев.
                                                          Я в свое время купил кит T5388+ (клон HTC Diamond2). Предварительно почитал форумы, заказал и ни разу не пожалел.
                                                          Телефон выполнял все, что от него требовалось, прошивка — стандартная wm, сначала 6.1, затем 6.5. Со стандартным же MS MUI. И таких коммуникаторов — десятки.
                                                          Телефон я уже сменил на defy, но старичок до сих пор работает и звонит уже не для меня.

                                                            +4
                                                            Нет, смысла «все гавно, а я принцесса» я не вкладывал. Просто получил не то, чего ожидал и описал историю того, как я вышел из положения. Правых и виноватых не искал.
                                                            +6
                                                            а мой говорил, на неудавшуюся попытку подключения к вай фай
                                                            неудачное сношение
                                                              +4
                                                              А мой после фотографирования спрашивал «Спасать фото?»
                                                              0
                                                              Статья, как вы портировали на него Mango будет? :)
                                                                0
                                                                Я как-то даже и подумать не мог, что китайцы вшивают в эти недотелефоны Windows CE.
                                                                  0
                                                                  … и как результат — унифицированная прошивка android любую китайскую трубку ))))

                                                                  старею, респект )))
                                                                    0
                                                                    Давно этого не писал, но это правда: комменты доставляют не меньше, чем топик :-)
                                                                    Спасибо, ребята.
                                                                      +1
                                                                      китайцам за 101 доллар загони правленую прошивку+ интерфейс
                                                                        0
                                                                        Учитывая, что телефон 2 года назад стоил 100$ — ваше предложение вполне рациональное, да.
                                                                      • UFO just landed and posted this here
                                                                          0
                                                                          Кстати, на данный момент китайцы научились нормально русифицировать телефоны, и никаких лулзов уже не осталось. Даже как то грустно.

                                                                          По качеству стали получше, хотя косяки все же встречаются, так на моем запасном e71i TV вылетел внешний динамик через 3 месяца использования. Впрочем даже менять его не стал, телефон для сервисных SMS.

                                                                          По поводу долгого времени реакции: например, оригинал Nokia N73, коим я имею счастье обладать, с момента начала звонка до момента выдачи уведомления и воспроизведения мелодии звонка проходит 3-5-7 секунд. Ровно так же и при разблокировки клавиатуры и других операций, связанных с выводом оного из «спящего режима». Но тут дело в железе.

                                                                          PS Помню свой первый китайфон, N95 (2 SIM, одна активная) — проработал 3 года, пока я его не продал. При этом и ронял его много раз, и под воду попадал. А вот другой такой же сломался через 2 дня. Не угадаешь :)

                                                                          PPS За статью спасибо!

                                                                          Only users with full accounts can post comments. Log in, please.