Это LG Phenom 1998года выпуска, уникальный HPC на процессоре Hitachi SH3 и с Windows CE 2.1 на борту. Он отличается от Jornada, Casio и Compaq наличием значительно большего цветного дисплея, кучей слотов расширения в т.ч встроенным dialup-модемом, а также VGA и LPT без необхоидмости ставить в док-станцию! А ещё он официально ввозился в Россию и стоил около 1.000 баксов. Сколько это было в 1998 году? Будем ждать статью?
Софт-тач покрытие "устало" из-за чего красавец выглядит грязным
Но после оттирания софт-тача он выглядит как свежий огурчик!
Название статьи вдохновлено недавним материалом Сергея Долина об улучшении ретро-компьютера, что называется, паяльником. Недавно мне поступил заказ от читателя на апгрейд ОЗУ в легендарном карманном компьютере Dell Axim X51v, за выполнение которого я получу крутейший ноутбук 1998 года. Конечно же я не смог отказаться от такого предложения и подготовил для вас подробную статью с предысторией апгрейда памяти на КПК, описанием процесса снятия и у
становки BGA-чипов, замене концевого переключателя на перемычку, а также ремонта рычажка Hold, из-за которого некоторые Axim'ы теряли работоспособность при общей исправности железа девайса. Жду вас под катом!
❯ Введение
Апгрейд девайсов своими руками — это всегда круто и интересно. Недавно хабровчанин @dliny jвыпустил две отличные статьи об апгрейде 386'ой материнки с установкой 486'ого процессора на неиспользуемую площадку для заводского апгрейда материнской платы и даже заставил работать всю систему относительно стабильно!
Однако апгрейд мобильных компьютеров тема немного иная, поскольку из-за повсеместного использования BGA-чипов и относительно тесной компоновке, далеко не каждый гик берется за аппаратный апгрейд своего девайса, боясь его случайно повредить. Цель этой статьи наглядно показать, что перепаивание чипов памяти и апгрейд ретро-КПК — не сложнее, чем заменить плашку памяти в стареньком ноутбуке и с этим справится любой человек при наличии паяльной станции и небольшой практики!
Сегодняшним героем у нас выступит легендарный КПК Dell Axim X51v, с которым наверняка знакомы многие мои читатели. Девайс, вышедший в 2005 году, привлекал очень шустрым чипсетом Intel PXA270, работающим на частоте 624МГц, наличием дискретного GPU Intel 2700G в отдельном чипе (!) с графическим ядром PowerVR MBX и набором видеодекодеров Intel для просмотра несжатого видео, а также... всего 64Мб ОЗУ! Многие владельцы устройства жаловались на малый объём памяти, но со временем некоторые сервисные центры (один из самых известных в свое время — pdacenter) даже приловчились оказывать услугу по её апгрейду в коммуникаторах и КПК до тех самых 128Мб!
Полгода назад я уже писал статью об апгрейде легендарного коммуникатора HTC Magician (который, к слову, участвовал ещё в моих статьях о написании 3D-игры под Windows Mobile с нуля!). После этой статьи ко мне несколько раз обращались люди с просьбой проапгрейдить им девайсы за деньги, даже при условии того что они сами закажут чипы памяти. Обычно я не берусь за заказы, поскольку это всё равно довольно рискованный процес (на некоторых девайсах нужно искать страп для активации всей ОЗУ), но в этот раз меня переубедили очень весомым аргументом. Когда я отказался от работы за деньги, мне предложили тяжелую артиллерию, а именно — топовый ноутбук Compaq Armada 7800 на Pentium II с дискретным GPU S3 ViRGE (о котором я тоже писал статью)!!! Тут я просто не смог не согласится: ноутбук из 90-х, да еще и с 3D-видеочипом, который стоил 5.000$ и который можно считать игровым? Я решил рискнуть...
В свое время эта процедура стоила около 2-3 тысяч рублей. В 2005-2007 году это были большие деньги, а сейчас апгрейд КПК можно провести за 400 рублей: чипы памяти продаются и сейчас и стоят по 200 рублей за штучку. Давайте же попробуем проапгрейдить наш девайс!
❯ Апгрейдим
Начинаем с разборки устройства. Сделать это несложно: откручиваем 4 винта с обратной стороны устройства и пластиковой картой (или ногтями) поддеваем фронтальную часть корпуса. Затем выдавливаем плату с дисплеем из задней части корпуса, снимаем дисплейный модуль и перед нами оказывается разобранный девайс:
Необходимые нам чипы памяти находятся под защитным экраном вместе с процессором и флэш-памятью. Сам металлический экран съёмный, однако перекладина под ним помешает установке чипов памяти: поэтому аккуратно срезаем её хирургическими ножницами. Полностью выпаивать защитный экран не нужно.
Я срезал перекладину ещё до фото :)
Теперь нам необходимо выпаять старые чипы памяти. Для этого наливаем немного флюса под «пузо» чипов, включаем фен на ~330 попугаев (у меня бюджетный фен, который я ещё не откалибровал — так что термопрофиль сомнительный), и принимаемся греть банки на протяжении около полутора минут. Текстолит хоть и толстый, но теплоемкость не очень высокая, так что банки можно снять и без нижнего подогрева. Как только чип стал свободно покачиваться — ждём ещё немного времени и снимаем его пинцетом. Учтите что BGA-чипы крепятся за счёт поверхностного натяжения, поэтому старый чип будет пытаться "уехать" на своё место обратно при попытке снятия, так что придется приложить небольшое усилие, однако очень важно догреть чип, иначе можно посрывать пятаки и потом под микроскопом лепить «улитки» :)
Не забудьте сделать фотографию обвязки (мелочухи), дабы иметь возможность её восстановить если случайно посдуваете.
Затем нам необходимо очистить площадки под чипы от остатков старых шаров. Для этого добавляем чуть флюса, берём паяльник и медную оплётку и проходимся по пинам оплёткой, собирая излишки припоя и выравнивая посадочную площадку. Шары здесь большие, так что можно обойтись без оплётки и просто пособирать припой паяльником, но технологию лучше соблюдать.
Новые чипы с завода уже имеют накатанные шары и их можно ставить «как есть», хотя некоторые мастера всё равно перекатывают чипы, поскольку на шарах могут образоваться окислы. Процесс установки новых чипов до безобразия прост: наливаем немного флюса на посадочную площадку, примерно центруем банку памяти на этой самой площадке и греем её феном на протяжении всё тех же полутора минут. При этом чип сам встанет куда нужно благодаря поверхностному натяжению, хотя его можно чуточку подровнять пинцетом, если стоит криво. Обратите внимание на флюс: если налить его слишком много, то чип может «уехать», если флюс кипящий, то чип будет «прыгать» при установке и соединение может оказаться некачественным. Я лично ставлю BGA «бодягой» под видом NC559 с Озона, вроде норм.
Установленные чипы памяти. В процессе работы пришлось один чип перекатать — случайно поставил не по ключу :)
Наконец-то чипы памяти установлены. Теперь смываем флюс с помощью FluxOff'а, устанавливаем обратно защитный экран и подсобираем девайс, дабы посмотреть что у нас получилось. И да, КПК запустился нормально и увидел все 128 мегабайт оперативной памяти! В случае с коммуникатором HTC, о котором я писал в первой статье, необходимо было установить ещё специальный страп — резистор 0.33Ом на линию CS1, иначе девайс не видел всей ОЗУ, так что если кто-то будет проделывать такой же апгрейд, имейте это ввиду.
Но это ещё не всё! Я ж обещал, что апгрейдить девайс будем и паяльником :) У многих КПК есть болячка в виде концевого выключателя на крышке отсека аккумулятора. К сожалению, со временем он ломается, а в случае X51v — ещё и служит кнопкой включения для устройства, поэтому его необходимо поменять на перемычку. Мой подписчик уже заменил концевой выключатель на соплю припоя, которую я заменил на более симпатичную и надежную перемычку:
А также перемычку имеет смысл установить вместо переключателя Hold — конкретно на Axim X51v он иногда выходит из строя, из-за чего девайсом становится невозможно пользоватся.
На этом наш апгрейд завершён. Собираем девайс и смотрим, что же он умеет!
❯ Смотрим на девайс
Windows Mobile славилась своей оптимизацией, система очень бодро бегала даже на 32Мб ОЗУ. Большинство приложений легко помещалось в памяти благодаря тому, что потребляли пару сотен или десятков килобайт, и в отличии от современных мобильных систем, WinMobile никогда не управляла жизненным циклом приложения сама, поэтому в системе была настоящая многозадачность. Приложения закрывались только тогда, когда этого захотел пользователь, благодаря чему была необходимость иногда следить за диспетчером задач.
Но если 64Мб было достаточно для всего, то зачем нужен был апгрейд до 128Мб? Все дело, конечно же, в играх! Зачастую владельцам КПК хотелось запустить несколько тяжелых приложений и иметь возможность одновременно играть музыку в фоне, сидеть в аське и играть в Pocket F.A.L.L.O.U.T. Тут и пригождался апгрейд по памяти, ведь игра влегкую могла скушать и 20 и 30 мегабайт!
Особенно это актуально в случае с Axim X51v, ведь у устройства был дискретный GPU, для которого отдельно разрабатывались 3D-игры, которые по уровню графики были не хуже чем у SEGA Dreamcast! А секрет прост, ведь PowerVR MBX, который используется в качестве GPU в Intel 2700G — это прямой потомок GPU из Dreamcast!
Графика не сильно хуже PSP!
Кроме того, в Axim X51v использовался здоровенный дисплей с разрешением VGA (640x480), из-за чего девайс потреблял несколько больше ОЗУ на графические ресурсы системы. На таком смотреть кино или сериал одно удовольствие!
Ну и в целом девайс работал значительно резвее с 128 мегабайтами оперативной памяти. А для чего я использую свой личный Axim X51v? Конечно же для разработки 3D-игры под его GPU с нуля! Именно за это я просто обожаю этот девайс!
❯ Заключение
Вот такой ретро-материал об апгрейде крутейшего КПК 2005 года у нас с вами сегодня получился. Надеюсь, вам было интересно! Моддинг ретро-девайсов это всегда занимательно и интересно не только из-за самого факта апгрейда, но и из-за некоторой неизведанности: как @dlinyjне знал, что будет, если впаять в материнскую плату второй процессор, так и я не знал, что будет, если установить банки памяти без поиска страпов на неизвестный мне КПК :)
Подписывайтесь на мой Telegram-канал, если вам интересна тематика программирования, моддинга и подручного ремонта различных девайсов, а если вам интересны мои видео о ретро-девайсах, то подписывайтесь на мой YouTube и паблик ВК.
Значит ли для вас что-то Axim X51v?
Понравился материал с апгрейдом «паяльником»?
Кстати, если у кого-то из читателей есть ненужные устройства (в том числе с косяками) или дешевые китайские подделки на айфоны/айпады/макбуки и другие брендовые девайсы будучи нерабочими, тормозящими, или окирпиченными и вам не хотелось бы выкидывать их на свалку, а наоборот, отдать их в хорошие руки и увидеть про них статью — пишите мне в Telegram или в комментах! Готов в том числе и купить их. Особенно ищу донора дисплея на китайскую реплику iPhone 11 Pro Max: мой ударник, контроллер дисплея калится и изображения нет :( Было бы интересно поколупать и КПК самого начала нулевых годов (PPC2002, а то и WinCE или PalmOS) — пишите, если таковые есть.
Примеры девайсов
А ещё я держу все свои мобилы в одной корзине при себе (в смысле, все проекты у одного облачного провайдера) — Timeweb. Потому нагло рекомендую то, чем пользуюсь сам — вэлкам:
Друзья, для подготовки следующей статьи о моддинге и программировании для необычных девайсов (можете посмотреть примеры у меня в профиле), я ищу китайские ARM-нетбуки конца нулевых-начала десятых годов. Стоили такие девайсы очень дешево (около 50 баксов за новый нетбук), имели 7 или 9 дюймовый дисплей и работали на базе процессоров WonderMedia WM8650/WM8505, а также Ingenic JZ4720. Готов приобрести такой девайс для подготовки крутого контента с ним! Также ищу Ben NanoNote - миниатюрный ARM-нетбук с OpenWRT на борту из 2010 года. Связь мейл - bodyawm@gmail.com или тг @monobogdan
Для тех, кто пока не в теме, я писал статью и выпустил видео о том, как я портировал эмулятор Денди и Wolfenstein3D на терминал сбора данных M3 Green, который купил всего за 500 рублей. Ещё в статье я обещал розыгрыш двух ТСДшек - и вы, пикабушники, если вам интересны необычные девайсы можете принять участие в розыгрыше! Условия простые: быть резидентом РФ (доставка с меня, я не смогу отправить в другие страны т.к СДЭК три шкуры дерет, а я не очень богатый), подписаться на мой YouTube-канал (альтернатива - RuTube) и Telegram-канал (не забыв прожать кнопку участия в конкурсе) и участвовать не просто из желания получить что-то на халяву, а если вам действительно интересно поколупать девайс :) На момент запила поста всего 232 участника - шансы весьма высокие!
Железо девайса просто отличное по меркам КПК:
1. Процессор ARMv5 PXA272 на частоте 624МГц.
2. 128 мегабайт SDRAM-памяти.
3. Большой дисплей с разрешением 240x320 и резистивным тачскрином
4. Wi-Fi, Bluetooth, аппаратный USB-хост!
5. Аппаратная клавиатура!
Девайсы полностью рабочие. Полный комплект - и док-станция с кабелем, и блок питания, и диск, и родная коробка!
А вернее - ТСД Motorola Symbol MC65, который по совместистельству ещё и умеет звонить! После статьи о том, как я превратил переводчик на винде в мини-нетбук, мне очень захотелось портировать эмуляторы на что-то помощнее и я решил взять вот такого красавца - всего за 1200 рублей! Продавец еще и Pidion BIP-6000 подарил. Я большой фанат подобных промышленных девайсов!
Я всегда любил находить новые применения стареньким девайсам, даже если обход защиты и разработка для них чего-то полезного занимала у меня некоторое время. И если с прошлыми моими статьями, где я привносил новую жизнь смартфонам на Android 2.3, а затем и на Android 1.5 всё понятно — девайсы получили возможность не только быть звонилками, но и вполне полноценными смартфонами, то в случае таких необычных девайсов, как электронные переводчики — всё гораздо интереснее, ведь по сути, это дешёвые альтернативы таким легендарным устройствам, как HP Jornada! Недавно я купил переводчик Ectaco за 1.500 рублей на Windows CE, обошел встроенную оболочку, написал программу, которая твикает реестр и даже портировал туда эмулятор NES. Интересно узнать об этом процессе во всех подробностях? Тогда добро пожаловать под кат!
❯ Предисловие
Есть на свете такой интересный класс устройств, как портативные клавиатурные минипк — HPC. Основные особенности таких девайсов перед обычными органайзерами — полноценная QWERTY-клавиатура, возможность запускать кастомный софт и порой интересные процессоры на очень необычных архитектурах. Совсем недавно, я писал статью о том, как купил целых два таких HPC — HP 620LX и HP Jornada 680, причём 620LX я отреставрировал — девайс теперь полностью работает!
Но буду предельно честен: оба девайса были куплены по низу рынка и не полностью рабочими. Каждый обошёлся в 3.000 рублей, в сумме 6.000 рублей — весьма немалая для меня сумма. Ценники на рабочие экземпляры, причём не всегда с доком и дата-кабелем начинаются от 5-6 тысяч рублей. Кто-то из читателей скажет мол это копейки, но для меня сейчас это прям ощутимые деньги, плюс в моём чате после выхода статьи многие писали что тоже хотели бы заполучить подобные девайсы, но не имеют возможности выложить такую сумму. И тут я подумал, что надо-бы поискать альтернативы джорнаде, которые были бы гораздо дешевле.
Однако с чего начать поиски? Ведь хочется девайс именно компактный и на необычном процессоре, понятное дело что EEEPC (которые, к слову, на вторичке стоят по 500 рублей) тут не подходят. Коммуникаторы на Windows Mobile тоже вполне недорогие — можно найти некоторые модели HTC или Glofiish по 500-1.000 рублей, но всё же это сайд-слайдеры, а хотелось бы форм-фактор ноутбука (к слову, из «ноутбучных» есть Toshiba Portege G910, который я давно хочу заполучить). И тут подписчик из Казахстана заслал мне целую коробку с подогоном ништяков, где среди девайсов оказался электронный органайзер Citizen!
Девайс меня жутко заинтересовал, даже несмотря на монохромный простенький ЖК-дисплей, мне хотелось под него что-нибудь написать самому. Да хоть понг или стрелялку, где кораблик — один пиксель слева, а астероиды — пиксели справа. Но я понимал, что конкретно в этой модели вся прошивка лежит в ROM (масочной, которая физически прошивается на заводе один раз) и под эту модель ничего написать самому не получится. Поэтому я полез на барахолки с тегами «органайзер» искать девайсы с возможностью подключения к ПК по USB: мало ли, хоть какая-то модель будет поддерживать кастомные программы на манер инженерных калькуляторов.
Но нет, поиски не увенчались успехом. Зато в какой-то момент, онлайн-барахолка подсунула мне объявления о продаже электронного переводчика Ectaco, которые тоже были в разделе «для офиса», как и органайзеры. И всё бы ничего — ну да, цветной дисплей, ну да, выглядит замечательно, но я даже не представлял что за процессор и ОС в таком девайсе стоят. Пока не полистал фото, не присмотрелся к крайне знакомому интерфейсу и не увидел вот это...
Да! Вы все правильно поняли, некоторые переводчики работают на базе WIndows CE. А если там стоит WinCE, то как минимум есть солидный объем оперативной памяти (хотя бы 64 мегабайта), дисплей с разрешением 240x320 и довольно бодрый процессор, как минимум 150-200МГц. Далее я хотел узнать, с чем же мне предстоит столкнуться и начал гуглить мануал, дабы узнать о доступных пунктах в меню и можно ли выйти через них в оболочку WinCE (как на навигаторах). Чтения мана дало понять что нет, но я узнал что для работы устройства обязательно нужна SD-флэшка из комплекта устройства, иначе девайс стопорится на белом экране.
А это тоже наводит на определенные мысли. Либо девайс полностью загружается с SD-карты, либо запускает оттуда программы, через которые потенциально можно запустить explorer.exe и выгрузить стандартный софт из памяти. И я начал искать в сети образ родной флэшки. Я нашел на ютубе гайд по восстановлению такого переводчика, где автор видео выложил архив в облако, скачал и начал колупать — да здесь же целая папка System, где лежат отдельные exe'шники каждой программы, представленной на устройстве!
в облако, скачал и начал колупать — да здесь же целая папка System, где лежат отдельные exe'шники каждой программы, представленной на устройстве!
На этом моменте я понял, что девайс надо брать! Также на онлайн-барахолках попадаются переводичики и других брендов, которые потенциально работают на других системах. Их тоже было бы интересно поколупать (авось на Linux!), попытаться что-то с ними сделать, но я пока не могу себе позволить их купить.
Когда девайс приехал ко мне, я понял что отдал деньги не зря: он настолько компактный (даже меньше iPhone 14 Pro Max), что помещается в карман летних шорт, у него есть QWERTY-клавиатура и DPAD (что пригодится для игр), а также резистивный тачскрин и реально классный корпус с металлической рамкой дисплея. Придя домой, я сразу же начал его колупать: такие красавчики точно не должны отправляться в утиль, я был уверен что смогу найти для них новое применение!
Тут важно отметить, что устройства от Ectaco были топовыми в свое время и стоили кучу денег. 15 тысяч рублей в 2009 году — очень серьезные деньги, это цена новенького коммуникатора Rover, Xperia X10 вышедшего годом позже, или, например, Mio/Glofiish. Неудивительно, что девайсы построены на базе неплохого железа и полноценной WinCE!
❯ Что под капотом?
Конечно же перед тем, как смотреть софт, нужно посмотреть на каком железе работает наш переводчик. Разбирается девайс несложно, но конструкция весьма замудренная, нужно быть аккуратным. Вытаскиваем флэшку, откручиваем винтики на крышке отсека АКБ и отключаем аккумулятор. В моём девайсе, он уже был кем-то заменен на свежий (родные уже «все»):
Далее выкручиваем 4 винта из задней крышки и расщелкиваем клипсы — сама крышка снимается легко. Затем нужно открутить винты, крепящие динамик и отложить заднюю крышку в сторону. Перед нами открывается внешний вид материнской платы (вернее, целых двух):
Сорян за качество фото на этапе разборки, мой S8, купленный по низу рынка и используемый в качестве камеры уже «подустал» и модуль автофокуса у него поврежден.
Сверху расположена материнская плата с процессором, ОЗУ и флэш-памятью. То есть, по сути, это SoM (система на модуле), но не общего назначения, а разработанная Ectaco для своих нужд. Моделей переводчиков было много и возможно компания меняла конфигурацию ОЗУ/процессора и т. п., оставляя одну и ту же нижнюю плату. Для дальнейшей разборки, стоит отклеить черную наклейку, дабы не повредить шлейф дисплея, открутить три винта, крепящие верхнюю плату и снять крепежи грузиков, впаянные в пластик корпуса. Теперь нужно аккуратно вставить плоскую отвертку так, как показано ниже и упереть её в пластиковую прокладку между коннекторами верхней и нижней платы:
Не тяните пальцами за другие части платы. Она достаточно тонкая и погнуть/надломить её не составит труда!
Теперь верхнюю плату можно снять. Осторожнее с шлейфом дисплея — он весьма хрупкий и его можно случайно порвать:
Теперь мы можем разглядеть основную плату нашего девайса подробнее. В качестве процессора используется чипсет NXP LH7A404-N0F000B3. Это ARM922T (ARM9TDMI, ARMv4) ядро, работающее на частоте до 200МГц. Уже вполне неплохо, на уровне ранних Intel StrongARM (XScale)! В качестве оперативной памяти, используются две банки Samsung K4M56163LG по 32Мб каждая. Теоретически, объем ОЗУ можно расширить до 128Мб, как я это делал в статье про апгрейд коммуникатора QTek! Тест-поинты дисплея подписаны, скорее всего используется стандартная TTL-RGB матрица (но найти такую на замену будет сложно).
С обратной стороны платы расположился чип флэш-памяти типа NAND в корпусе TSOP Legacy. Это стандартная самсунговская флэшка небольшого объема, но на ней находится скорее всего только загрузчик — сама система грузится в ОЗУ с SD-карты. Приятно радует, что подписаны тест-поинты на плате и среди них мы видим как минимум UART. Это значительно повышает возможности девайса для моддинга в будущем, единственный нюанс — лишь бы на этом UART не висела консоль ядра Windows CE, потому что иначе открыть COM-порт не выйдет и «выпнуть» логи из определенного терминала как в Linux не получится! Именно с такой проблемой я и столкнулся на навигаторах с WinCE на борту (UART'ов в SiRF Atlas IV только два, один на GPS-модуль, т. е. чип придется снимать и напрямую к шару паяться, а второй на логи системы).
На основной плате расположился чарджер/КП, кодек AC97, разъемы и другие необходимые модули для функционирования девайса!
❯ Обходим оболочку
Итак, сейчас при включении девайс нам показывает главное меню и встроенный софт для перевода, а также мультимедийные приложения и игры. Неплохо, но явно маловато, при этом какой-либо отдельной кнопки или последовательности нажатия на тачскрин для выхода в explorer.exe как в случае с многими моделями навигаторов здесь нет.
Поскольку я уже знал, что вся система грузится с SD-карты в рамдиск, я сразу же понял, что нужно копать именно флэшку. Вытаскиваем SD-карточку, вставляем в кард-ридер и видим следующую картину:
Ага, мы видим два потенциальных вектора для атаки: первый это system.bin, собственно «сырой» образ для загрузки в ОЗУ и папка System/App с системными приложениями. Изучение system.bin я отложил на потом, решив подобраться с самого простого метода — попытка подменить exe'шники программ в System/App. Я открыл в IDA Pro программу-лаунчер, которая представляет из себя меню устройства и проверил на манер наличия проверки каких-либо подписей перед запуском программ. Их, к счастью, не оказалось: правда и реверсил я как оказалось не лаунчер, а стартовую анимацию как потом узнал. Сам лаунчер находится в system.bin, но в прошивке для другого девайса, Launcher находится именно на флэшке.
Помимо этого, в папке лаунчера лежит файл с описанием пунктов меню и соответствующими программами. Я добавил туда пункт, который запускает \Windows\explorer.exe — и это сработало — девайс попал на рабочий стол! Но нужен был способ автоматизации всего этого дела и самое главное — закрытие родной оболочки (она кушает ОЗУ и на нее можно случайно переключиться в панели задач).
Мы уже вышли на рабочий стол!
Итак: если стартовая анимация запускается лаунчером и нет никаких проверок подписей, то всё просто, нужно лишь написать небольшую программу, которая будет запускать explorer.exe и прибивать родное меню. За минут 30 был написан следующий говнокод (помимо этого, я писал итератор по виндовым окнам дабы найти название класса окна лаунчера):
int WinMain(HINSTANCE inst, HINSTANCE prevInst, LPWSTR cmdLine, int nShowCmd) { // Launch explorer PROCESS_INFORMATION info; CreateProcess(L"\\Windows\\explorer.exe", 0, 0, 0, 0, 0, 0, 0, 0, &info);
Этого кода было достаточно для полноценного запуска системы и полного «выпинывания» стандартной оболочки из памяти :) Но есть важный нюанс: несмотря на то, что здесь используется WinCE 5.0 — довольно свежая система, нормально работают бинарники собранные только для PocketPC 2003 в VS2005/VS2008, иначе система ругается на отсутствие библиотек. Учтите это, если захотите себе такого же красавца!
Но, поскольку система загружается в рамдиск каждый старт устройства, то и реестр системы сбрасывается после отключения. Поэтому я добавил в программу патчинг реестра сразу при старте устройства и копирование нужных для работы других программ dll-файлов в Windows/
Второй вектор для атак — образ system.bin, я исследовал чуть позже. Открыл образ системы в hex-редакторе и обнаружил, что первый мегабайт просто забит нулями, без каких-либо данных. Возможно это своеобразная защита от любителей распаковывать ROM'ы. Воспользовался поиском текста по сигнатуре CE (часть заголовка образа) и сразу же нашел начало файла: сигнатуру образов CE можно определить по 4-м байтам, где два первых байта произвольные (их значение я не знаю), а вторые два (00 EA) — постоянные. Также сигнатурой можно считать последовательность символов ECE.
Вырезаем лишний мегабайт и используем программу dumpromx для распаковки образа устройства. Получаем набор готовых файлов. Чуть позже это помогло мне разобраться, как работают драйвера в Windows CE. При желании, можно напрямую редактировать ветки реестра (файлы .hv) и подменить программы/библиотеки на свои!
dumpromx -d nk1/ nk0.bin
В копирайтах программ я нашёл имя Вячеслава Боярышникова, который работал над устройством в 2008-2009 году. Отдельное спасибо ему и компании Ectaco за то, что не стали вставлять палки в колеса и сделали процесс моддинга максимально простым и приятным: я обошел стандартную оболочку в первый же день. Серьезно, это проблема современных устройств с заблокированными загрузчиками. Хабр ресурс большой, может кто-то знает его и кастанет в статью? :) Авось ему интересно будет посмотреть, что стало с девайсом его разработки спустя столько лет.
После этого, у нас есть полноценный доступ к винде и сразу же максимально удобный — панель задач не скрывается, системные файлы тоже видны в проводнике. Теперь я скопировал много самых разных программ на флэшку, но как они работают мы узнаем позже.
❯ Так что с ним можно сделать теперь?
Несмотря на то, что девайс работает на винде (пусть и CE), софта под него не очень много. Многие программы с HP Jornada и других HPC начала нулевых собраны под устройства с процессорами SH3 или банально не оптимизированы под разрешение дисплея нашего переводчика, а ещё в отличии от десктопной винды, у CE есть большие проблемы с совместимостью.
И казалось бы — да и ладно, вон есть Windows Mobile на базе всё той же CE, софт для неё должен хорошо работать на переводчике, но всё, конечно же, не так просто. Особенно когда вопрос касается игр! Большинство эмуляторов здесь не работают т. к. требуют библиотеку GX, которой нет в CE. Поэтому я решил портировать эмулятор сам, который будет рисовать картинку используя GDI.
В качестве основы я взял Wave's NES с китайской реплики телефона Nokia TV E71, выбросил платформо-зависимый код и реализовал рендер с обработкой кнопок для CE. Но вот незадача — производительность совсем не ахти.
Затем я искал возможность выводить картинку напрямую на дисплей — и через DirectrDraw (который почему-то был в дистрибутиве Windows, но для него не было драйвера), и через ExtEscape, и пытался реверсить драйвер дисплея но увы... Остаётся только медленный GDI - и именно в него идёт упор по скорости эмуляции из-за преобразования пиксельформатов (5551 винды в 565 нативный) каждый кадр. Максимум я добился вот такой производительности. Не густо.
При том, что QTek S110 с даунклокнутым до 208МГц PXA272 тащил эмулятор вообще без каких либо проблем, потому что в нём есть прямой доступ к фреймбуферу через GX!
Основной проблемой я считаю отсутствие сете вого стека в системе. К сожалению, сеть сюда никак не получится прокинуть, а жаль, была бы неплохая машинка для проверки почты и работы в терминале, благо порт Putty на нее есть!
Но всё же под девайс есть некоторое количество полезного софта. Например пресловутые текстовые редакторы.
Есть и плееры. Причём в качестве плеера девайс показывает себя вполне неплохо. Кроме того, есть TCPMP — можно попробовать посмотреть киношку, если есть цель смотреть видеоконтент на ретро-девайсах.
Ну и есть конечно же разные нативные игры с HPC 2000х годов! Такие раньше на отдельных дисках продавали!
Сейчас я активно портирую KVM (JVM для J2ME) и MIDP-профиль на Windows CE. Если у меня получится — то на WinCE появится поддержка Java-игр!
❯ Заключение
Вот такой интересный материал с моддингом электронного переводчика у нас с вами сегодня получился. Весьма перспективный девайс, и если бы был прямой доступ к фреймбуфферу — потенциально очень неплохая машинка для ретро-гейминга. А как вам такая идея превращения профильного устройства во что-то совершенно иное? Пишите своё мнение в комментариях!
Также я сейчас ищу несколько девайсов для будущего контента, с которым вы, мои читатели, могли бы помочь. В первую очередь, я активно ищу дата-кабель для HP Jornada. У меня есть всё для того, чтобы запилить под него свою игру и рассказывать вам о таком опыте в отдельной статье и видео, но нет самого главного — дата-кабеля, с помощью которого можно было бы устанавливать и отлаживать нашу демку! Так что если у кого-то есть, будет здорово, если сможете поделится.
Также я сейчас ищу телефон Motorola на платформе MAGX или EZX (Linux). Среди таких, например, RAZR V8 и RAZR V9, EM30 и некоторые другие девайсы. Они отлично поддаются моддингу и с ними можно запилить крутой контент!
У меня есть Telegram-канал «клуб фанатов балдежа», куда я выкладываю мысли о ремонте, моддинге и программировании под девайсы прошлых лет. Подписывайтесь, дабы не пропускать всякое интересное каждую неделю!
Статья подготовлена при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, чтобы не пропускать новые статьи каждую неделю!