Как "оживить" компас в оболочке 1.10.2
Отступление 1. Итак, частенько бывает, что даешь вроде простой совет, а человек в виду отсутствия опыта может только все запортить и потом тебя еще в этом виноватым порой считает
Поэтому я постарался расписать все как мог подробно, в следствие чего данный пост получился достаточно большим
Если, тем не менее, все написанное внизу вам кажется слишком сложным и непонятным, есть риск все запороть
тогда возможно это вам и не надо, поскольку все делается на свой страх и риск…
Тем, кому это интересно и кто решиться это делать, я бы рекомендовал скопировать все содержимое с NAND FLASH и StaticStore куда-нибудь на флешку, потому что по ходу будут вноситься изменения в реестр. Если вы в по каким-то причинам все запорете, то придется перепрошить OS (то есть винду).
Отступление 2. Наша хондовская оболочка 1.10.2 довольно старенькая, где-то рубежа 2009-2010 гг. По моим наблюдениям она писалась под какие-то определенные версии винды (сейчас, разумеется устаревшие и практически потерявшие распротранение в сети), где четко прописывался состав COM-портов и порядок загрузки dll-драйверов на них. В современных версии винды есть COM8 на котором висит драйвер GPS.Dll. Есть еще 2 порта COM1 и COM9, куда грузится один и тот же драйвер virtalSerial.Dll – как я понимаю на них как раз зеркалится вся GPS инфа из COM8. При этом утилита Навитела сканирующая СOM-порты, как порты с GPS данными определяет только COM1 и COM9 (все здесь описывается на версии прошивки EN-PRIMA-ARM-SLC-V1.51), а COM8 не видит. При этом есть другая прогамулина (GPSSpeed), она у меня вроде читает GPS-данные со всех 3х портов – COM1, COM8 и COM9. Короче все это непросто
С COM1 традиционно работает Навител, компас оболочки пытается обращаться к COM9, что правильно и хорошо. Внутри Manager.exe оболочки программно прописано, как поместить на нужный COM-порт драйвер MuxGPS.Dll , который лежит внутри в папке D2280 и каждый раз при запуске оболочки автоматом копируется в папку Windows, чтобы потом быть загруженным на нужный COM-порт через ветку реестра HKEY_LOCAL_MACHINE\Drivers\BuiltIn, откуда собственно и грузятся все встроенные драйвера винды на все порты. К сожалению, по непонятным причинам для последних версий винды оболочке это сделать не получается и на COM9 так и висит родной виндовый драйвер virtalSerial.Dll, поэтому оболочка не получает GPS данных, необходимых ей для работы компаса. Далее описывается как принудительно «помочь» оболочке загружать драйвер MuxGPS.Dll на COM9.
Отступление 3. В процессе решения я столкнулся с проблемой «зеркальности» COM1 и COM9. Изначально я хотел оставить COM1 неизменным с virtalSerial.Dll, поскольку с этим портом работает Навител, и грузить MuxGPS.Dll только на COM9. К сожалению, у меня это так и не получилось. Получается либо virtalSerial.Dll на обоих портах, либо MuxGPS.Dll на обоих портах (причем в дизассемблированном Manager.exe видно, что такова и была задумка разработчиков – грузить драйвер оболочки на оба порта!). Поскольку для работы компаса нужно идти вторым путем, я вынужден был смириться с присутствием MuxGPS.Dll и на COM1. К моему, удивлению, по завершению всего оказалось, это не мешает Навителу загружаться и ловить спутники и нормально в общем-то работать. Правда при закрытии очень редко вылетает какое-то сообщение об ошибке по памяти, но честно у меня такое раньше бывало и на неправленном реестре при классической оболочке без компаса. Поэтому я не уверен, что все это следствие моих махинаций. В общем, я для себя решил оставить все как есть и не париться по этому поводу.
Итак, что нам понадобится.
Во-первых, я использовал, как уже говорил, старую проверенную EN-PRIMA-ARM-SLC-V1.51 (где ее брать в случае чего все знают
, там же и оболочка 1.10.2) На других версиях винды тоже можно попробовать, главное, чтобы все совпадало с тем, что я потом буду показывать дальше на скриншотах. Если не совпадет, то вероятно придется перепрошиваться на V1.51. Все выкладываемые архивы рекомендую предварительно разархивировать дома, а потом нести их содержимое на флешке в машину. Испытуемая оболочка (то есть папка D2280) как полагается, должна лежать в Static Store.
Во-вторых, “джентельменский набор”. Рекомендую все его содержимое выложить в корень Storage Card:
Скачать Utilities.rar
В его составе:
ShimCom – утилита для мониторинга обращений какого-то конкретного приложения к COM-портам.
Notepad.exe – блокнот, чтобы непосредственно на голове просматривать логи от ShimCom
TRE.exe – редактор реестра WinCE
Update.exe – известный файл, чтобы выгрузиться из оболочки в винду (Опции-Система-Обновить) – у каждого уважающего себя китайфонщика он уже должен лежать в корне карточки
В-третьих, опционно, обновленный MuxGPS.Dll. В нашей оболочке есть такой драйвер от 2009 года, в принципе он нормально работает. На братских форумах в их оболочках я нашел такой же дравер 2010 года. Проверил, он тоже работает. Кто хочет – тот копирует его внутрь оболочки, согласившись на замену старого. Я лично, всегда за все новое
.
Скачать MuxGPS.rar
В-четвертых, прямые руки и немного терпения…
Итак, начинаем:
Выгружаемся из оболочки 1.10.2 в винду. Запускаем APPVERIF.exe из папки ShimCom. В появившемся окне нажимаем кнопку “Add shim…” и идем по пути Storage Card\ShimCom\ShimCom.dll. После этого справа в окне станет доступной опция COM Logger. Ставим там галочку. Потом нажимаем кнопку “Add…”. Идем по пути StaticStore\D2280\Manager.exe. Должно все выглядеть так:
Нажимаем кнопку “Run”. Должна запуститься оболочка. Ждем для приличия секунд 5, и выгружаемся опять в винду. Должен появиться файл com_log вот здесь:
Открываем его Notepad.exe и смотрим лог. Видно, как оболочка обращается к МЦУ (COM2) и к родной хондовской голове с климатом (COM5). Нас интересует порт, к которому оболочка обращается в первую очередь. Должен быть COM9, как здесь:
Открываем программу DEVMGMT.exe из папки PHM Tools и смотрим состав COM-портов, должно быть так:
На COM9 должен висеть драйвер virtalSerial.Dll, загружаемый из ветки Drivers\BuiltIn\virtalSerial2:
Аналогично, на COM1 должен висеть драйвер virtalSerial.Dll, загружаемый из ветки Drivers\BuiltIn\virtalSerial1, а на COM8 драйвер GPS.Dll, загружаемый из ветки Drivers\BuiltIn\GPS.
Если все так, то можно продолжать. Если что-то не совпало, то скорее всего ничего не получиться – нужно либо забить, либо прошиться все-таки на винду V1.51 и проделать все сначала.
Итак, если все совпало, то открываем TRE.exe, в нем “File” -> “Import Registry…” импортируем последовательно все 4 файла из этого архива:
Скачать REGISTRY.rar
Перезагружаем полностью весь мафон. Выгружаемся из оболочки в винду и через DEVMGMT.exe смотрим состав COM-портов. Должно быть так:
Запускаем опять ShimCom, генерим с ее помощью лог и опять открываем его Notepad’ом и смотрим. Мы должны увидеть, что оболочка стала активно считывать данные с порта COM9:
Если все получилось, то перезагружаем китайфон. Теперь секунд через 30 или через минуту с начала движения автомобиля компас начнет вращаться согласно GPS данным:
Ну и Навител, как говорил – грузится, спутники находит:
Принесет ли это все сюрпризы с Навителом позже – как говориться посмотрим
…
Для самых ленивых постарался сделать попроще решение проблемы оживления компаса, чтобы миновать проверки и все сделать за пару минут (читаем внутри Read me):
Скачать COMPASS_V1.10.2.rar
У себя на устройстве еще не попробовал, но должно работать. Самый смелый попробует и отпишется