Вышел новый видос - экранизация недавней статьи о том, как я превратил электронный переводчик в ARM-ноутбук
Смотрите на ютубчике или читайте в текстовой версии на Пикабу!
О КПК на MIPS-чипсетах из конца 90х я вам уже рассказывал, о программировании под КПК середины нулевых с GPU - тоже, самое время рассмотреть такой крутой класс устройств, как HPC. Однако на юлито они сейчас стоят конских денег: может кто-то продаёт за адекватную цену любой HPC тех лет на мобильной винде (не путайте с органайзером, органайзеры на Windows CE не работают)? Подойдет и HP Jornada, и Compaq, и Ericsson. Можно монохромный, но очень желательно цветной. Можно и нерабочие/полурабочие под ремонт, только не с выпотрошенными ROM/RAM (актуально для Compaq, где ОС и ОЗУ в слотах).
Моддинг девайсов — тема очень широкая и невероятно интересная. При желании, чего только не сделаешь со своим любимым устройством: можно кастомизировать и преобразить интерфейс девайса, портировать свежую версию системы, прошить ядро с разгоном ЦПУ… Однако помимо программного моддинга, существует и аппаратный: умельцы умудряются наращивать объем ОЗУ и постоянной памяти, менять дисплеи на более качественные и даже добавлять поддержку беспроводной зарядки/квикчарджа! Предлагаю вам взглянуть на относительно редкую, дорогую, но такую желаемую в нулевых модификацию: наращивание ОЗУ на КПК аж в два раза! Сегодня мы с вами: узнаем предысторию моддинга телефонов в нулевых, самостоятельно перепаяем чипы ОЗУ на модули большего объёма, а также разберемся в программной стороне этого вопроса. Интересно? Тогда добро пожаловать под кат!
Пожалуй, КПК и коммуникаторы на Windows Mobile можно назвать одними из самых интересных девайсов из середины нулевых годов. Пока подавляющее число пользователей только-только пересело на кнопочные телефоны с цветными дисплеями и поддержкой WAP-интернета, владельцы КПК носили в кармане полноценный компьютер, который мог выполнять многие задачи своего «большого брата». Сёрфинг полноценного Web 2.0 интернета, редактирование и просмотр документов, прослушивание музыки и воспроизведение видео и конечно-же игры — для портативного девайса в середине нулевых это было очень круто!
Характеристики КПК были практически идентичными на всех устройствах: большинство девайсов работало на базе ARMv5 процессоров Intel PXA 27x с частотой 400-600МГц, Samsung S3C6410 ~400МГц, а также TI OMAP 850 на частоте ~200МГц, оснащались ~64Мб встроенной Flash-памяти и 64-128Мб оперативной памяти SDRAM. Самым ценным ресурсом была оперативная память: большинство устройств на базе PocketPC 2003 так или иначе не могли использовать встроенную Flash-памяти для хранения пользовательских данных. Девайсы с 128Мб ОЗУ ценились гораздо выше более доступных устройств с 64Мб ОЗУ.
Происходило это из-за того, что Flash-память в те годы была слишком медленной, что негативно сказывалось бы на производительности всей системы. Поэтому производители устройств пошли на хитрый шаг: они решили использовать некоторый объём ОЗУ в качестве диска для пользовательских данных, а дабы пользователь не потерял важные ему файлы при, например, замене аккумулятора, они реализовали схему отдельного запитывания модуля обновления DRAM от резервной батарейки.
Динамическая RAM устроена так, что требует процедуру регулярного обновления (термин называется RAM refresh) данных во всей банке памяти в определенные промежутки времени. Упрощенно эта процедура выглядит так: контроллер памяти в чипсете вычитывает информацию из каждой банки, а затем записывает обратно, благодаря чему информация в банке памяти не теряется. Именно для этого контроллеру ОЗУ необходимы настройки таймингов, а также для процесса, именуемый «тренировкой памяти».
Поэтому в Windows Mobile был предусмотрен отдельный «бегунок», отвечающий за объём памяти, выделенный для программ и для пользовательских данных. Хочешь запустить одновременно TouchFlo, Скайп, Аську, PocketIE и гонять в фоне музыку? Готовься переносить фотографии любимого кота на SD-флэшку и тянуть бегунок в сторону программной памяти! По умолчанию, система выделяла около 32Мб памяти под пользовательские данные и остальные 32Мб под программы. Пользователь мог выделить до ~48Мб ОЗУ для программ, чего действительно хватало для параллельной работы нескольких относительно тяжелых программ в фоне!
Однако КПК на «винде» — отнюдь не современные устройства на Android и iOS и сами программы без крайней необходимости из памяти не выгружают. В iOS и Android практикуются «скриншоты» программ, когда в диспетчере задач мы видим сохраненное состояние приложения, но по тапу приложение снова запускается и быстренько восстанавливается из ранее сохраненного состояния. Поэтому, если в устройстве заканчивалась память для программ, уже открытые приложения могли крашиться, а новые не запускаться из-за слишком малого объёма свободной ОЗУ.
Устройства на WinMobile замечательно поддавались моддингу: некоторые энтузиасты портировали более свежие версии системы, другие выпускали собственные сборки системы, подчищенные от ненужных, по их мнению, программ, дабы освободить ещё немного ОЗУ под собственные приложения. Программный моддинг был очень развит: вспомнить только «кухни» — специальные наборы программ для модификации прошивок устройств и целые ветки на форуме 4pda, где обсуждалось добавление нового функционала в девайс. Чего-уж говорить, я сам год назад добавлял поддержку Direct3D Mobile в WM2003 и подкидывал софтварный рендерер от Intel в устройство на OMAP850!
Год назад я за пару дней запилил «тридэ» леталку, использующую D3DM — софтварный рендерер в Windows Mobile.
Однако другое дело — это аппаратный моддинг, связанный с физическим вмешательством в плату устройства. Самым частым модом была замена вечно ломающегося концевого выключателя (маленький рычажок, который прижимает задняя крышка устройства. Без него девайс чаще всего не включался) на обычную перемычку, дабы девайс не подвёл в самые ответственные моменты. Другой мод — перепаковка аккумуляторов для увеличения его ёмкости. Были ещё и другие, специфические модификации — насколько я знаю, на некоторых коммуникаторах Rover радиомодуль частенько «отваливался», а девайс уходил в белый экран. Радиомодуль либо выпаивали, либо грели (а то и перекатывали), дабы он ещё поработал какое-то время. Однако самым редким, дорогим и желанным многими модом было увеличение объёма ОЗУ! Данная процедура довольно простая, однако проводилась чаще всего в мастерских: старые чипы памяти выпаивались, а на их замену припаивались новые, большего объёма. На словах все просто, однако на деле далеко не каждый мог провести такую процедуру дома: необходимо было купить чипы памяти (которые стоили около 500 рублей за один), а сами они были в корпусе BGA и для пайки необходим был паяльный фен (на строительный тоже можно было посадить — но рискованнее) и адекватный флюс для BGA (хотя я слышал истории, как мастера в нулевых сажали чипы «на пузо» чуть ли не на таблетке аспирина).
Как видите, цена на работу в СЦ была не менее 3.000 рублей, время работы — полчаса-час. Теперь вспомните, что в некоторых регионах зарплата была около 6-7 тысяч рублей в месяц… вот так вот :)
Недавно я и сам заинтересовался таким видом моддинга и решил повторить опыт умельцев из нулевых: мне удалось найти НОВЫЕ (не реклама, это единственный магазин где можно купить эти чипы в РФ) чипы памяти в блистере по 100 рублей за штучку. Давайте же проапгрейдим легендарный коммуникатор своих лет — QTek S100 aka O2 Xda Mini II aka MDA Compact!
Подобному апгрейду поддаются далеко не все девайсы. К сожалению, фактически проапгрейдить можно устройства только на базе чипсетов Intel PXA, например Asus P525/550, ранние HTC и многие HP iPaq. Устройства на базе Samsung S3C6410 имеют 64Мб ОЗУ прямо на одной подложке с чипом без площадок под дополнительную память на плате, а про устройства на OMAP 850 известно мало: скорее всего, чип не поддерживает возможность использования сразу четырех банок памяти одновременно.
Изначально с завода, на большинстве устройств с чипсетом PXA используется два чипа мобильной SDRAM памяти типа HYB25L256160AC, производства Infineon, в корпусе BGA, по 32Мб каждый. Однако существует 64Мб версия того же чипа с идентичной распиновкой, где в одном чипе расположилось сразу две банки памяти, по 32Мб каждая. По итогу нам остается только сдуть старые чипы с помощью фена, почистить посадочные площадки от остатков старых шаров и установить новые чипы памяти с помощью всё того же фена. Давайте приступим!
Я купил свой QTek S100 два года назад в состоянии «как из помойки», всего за 100 рублей. Без шуток, возможно продавец действительно посещал свалки и потом продавал по дешевке различные интересные девайсы! Лично для меня в этом нет ничего брезгливого: корпус помыть с мылом, плату почистить спиртом и вот — крутейший девайс снова в рабочем состоянии и вполне чистенький :)
Аккумулятора у меня не было вообще и найти донора под перепаковку я даже не надеялся, поэтому запитывал девайс от BL-4C.
Разбираем девайс и видим плату с защитным экраном над процессором и ОЗУ. Сам экран съёмный, выпаивать его не нужно, но дабы аккуратно выпаять чипы памяти и не сдуть обвязку, придётся удалить лезвием «перекладину» на экране.
Выдавливаем под пузо чипов памяти немного флюса для BGA, берём прецизионный пинцет, фен, выставляем небольшой поток воздуха, температуру в 350 попугаев и начинаем выпаивать память по отдельности. Оба чипа сидят на бессвинце, поэтому для того, чтобы чип начал покачиваться, необходимо погреть его некоторое время. Как только чип начал «плавать» при покачиваниях пинцетом, его можно осторожно снимать пинцетом. Если снесли мелочуху, то её можно аккуратно выравнять пинцетом и поставить тем же феном обратно: поверхностное натяжении притянет элемент обратно и он встанет на место ровно, как и должно быть.
Зачищаем площадку от старых шаров с помощью паяльника на 350гр и оплетки. Впрочем, шары достаточно большие — можно просто покатать шарик припоя и собрать излишки на паяльник, идеально ровно зачищать их не нужно.
Наносим флюс на посадочные площадки, примерно центрируем чип на плате и начинаем греть. Если вы не перелили флюса, благодаря поверхностному натяжению чип сам встанет на место!
Почти по заводу!
Но девайс не увидит всей ОЗУ, если не поставить резистор номиналом ~0.33Ом на линию CS1 - именно она отвечает за выбор второй банки в одном чипе памяти. Можно попробовать и просто перемычку поставить, но я не гарантирую результат.
Но это не весь моддинг на сегодня! Чуть позже я кинул нормальную, красивую перемычку вместо концевого выключателя, а также перепаковал аккумулятор, установив банку от BL-4C. Она, конечно, меньшей емкости, но девайс всё равно с ней держит довольно неплохо. Обратите внимание, что BMS (плату защиты) BL-4C необходимо выпаять: коммуникатор при поиске сети потребляет довольно много, из-за чего BMS BL-4C уходит в защиту.
Включаем девайс и… он работает!
Лучше перепрошить девайс официальной прошивкой: я даунгрейдился еще до замены памяти (до этого стояла прошивка WM6.5 от Cotulla), однако после апгрейда «винда» не всегда загружалась нормально, при том что сама ОЗУ инициализировалась правильно, без каких либо проблем и ребутов. После прошивки всё снова стало нормально. Если хотите накатить кастом — то ставить нужно версию с поддержкой 128Мб ОЗУ.
Обратите внимание, что флэшер вполне честно заявляет о времени обновления в 20 реальных минут времени. В этом вина как USB 1.1, так и медленной флэши.
Сейчас мы рассмотрели только физическую часть замены памяти. Но некоторые читатели наверняка спросят, каким же образом коммуникатор определяет всю установленную память, если конфигурация DDR статически слинкована с первичным загрузчиком?
На ПК у нас есть SPD— Serial Presence Detection, специальная небольшая флэш-память, в которой хранится конфигурация чипов и общий объём памяти на планке. В embedded-окружении чаще всего конфигурация контроллера памяти хранится в первичном загрузчике (после BootROM) — известном также как SPL.
Загрузчик HTC на устройствах PXA поддерживает несколько конфигураций ОЗУ — как минимум 64Мб и 128Мб. И судя по всему, на манер BIOS на ранних x86 машинах, загрузчик ещё на этапе тренировки ОЗУ проверяет всё доступное адресное пространство: если доступны «верхние» 64Мб ОЗУ, тогда загрузчик передаёт в Windows CE информацию о том, что установлено 128Мб памяти.
На коммуникаторах Asus, загрузчик патчили для поддержки 128Мб.
Очевидно что без установки второго чипселекта (линии CS1), контроллер DRAM не сможет обратиться ко второй банке памяти в одном чипе, поэтому его установка обязательна. Иначе загрузчик не видит верхние 64Мб ОЗУ и считает, что в устройстве установлено лишь 32Мб.
Давайте глянем, как же девайс работает теперь. Пожалуй, сразу стоит упомянуть то, что у девайса изначально были перспективы к увеличению производительности: помимо возможности увеличения ОЗУ, чипсет легко разгоняется до 624МГц с стоковых 412. Очень даже бодрый результат.
Сначала я решил поиграть в классику. AoE замечательно шла и на устройствах с ~32Мб ОЗУ (т.е ранних КПК), очевидно что и на гораздо более шустром девайсе она будет идти очень хорошо. Хороший способ ознакомиться с классикой RTS, кстати!
Переходим сразу к тяжелой артиллерии. Самыми тяжелыми играми для ранних коммуникаторов считались PocketFallout и Heroes Mobile: они кушали довольно большой объём ОЗУ и что-то запустить параллельно с ними было проблематичным. Не менее тяжелой была Quake 1: игра аллокейтит для себя кучу (динамическая память) в 16Мб. Это был уже серьезный удар по свободной ОЗУ на устройствах с 64Мб памяти, QIP и PocketIE уже придется закрыть:
Но будем честны: ради игр можно было закрыть почти все приложения в диспетчере задач. А как насчет повседневных задач? Давайте откроем кучу приложений и узнаем, какое у нас будет потребление ОЗУ и общая производительность системы:
Не хило, да? Коммуникаторы и сейчас подойдут в качестве звонилок с функционалом смартфона, однако приложения под себя придётся допиливать самому. Благо API очень знакомое: в WinMobile и WinCE у нас самый обычный WinAPI, очень схожий с десктопным, а также есть немного урезанный .NET!
Вот таким был аппаратный моддинг девайсов в нулевых. Столько всего можно было сделать, имея лишь базовое оборудование! А ведь если включить смекалку, то можно заюзать КПК и в качестве одноплатников: на подавляющем числе девайсов UART без проблем можно получить с разъема для док-станции, а сама шина без проблем доступна из юзерспейса. Постараюсь развить эту тему в одной из будущих статей.
Информации по апгрейду памяти на КПК очень мало (ведь когда-то это был хлеб для СЦ) и сейчас её можно найти исключительно в архивах. Однако чем больше я посещаю паблики посвященные ретро девайсам, профильные каналы в Телеге и форумы по ремонту девайсов, я вижу всё больше упоминаний таких любимых нами наладонников! Поэтому я постарался систематизировать и собрать в кучу всю необходимую информацию для того, чтобы любой читатель мог и сам провести такую операцию в домашних условиях.
Сейчас мы привыкли с вами, что в смартфонах объём ОЗУ зачастую больше, чем в некоторых десктопных машинах. 6, 8, 12Гб — куда дальше!? А ведь когда-то и 128Мб уже было за счастье :)
А какие модификации КПК были у вас и как использовали свой девайс вы? Может вы сами апгрейдили КПК? Пишите в комментариях!
P. S.: Друзья! Время от времени я пишу пост о поиске различных китайских девайсов (подделок, реплик, закосов на айфоны, самсунги, сони, HTC и т. п.) для будущих статей. Однако очень часто читатели пишут «где ж ты был месяц назад, мешок таких выбросил!», поэтому я решил в заключение каждой статьи вставлять объявление о поиске девайсов для контента. Есть желание что-то выкинуть или отправить в чермет? Даже нерабочую «невключайку» или полурабочую? А может, у этих девайсов есть шанс на более интересное существование! Смотрите в соответствующем посте, что я делаю с китайскими подделками на айфоны, самсунги, макбуки и айпады!
Понравился материал? У меня есть канал в Телеге, куда я публикую бэкстейдж со статей, всякие мысли и советы касательно ремонта и программирования под различные девайсы, а также вовремя публикую ссылки на свои новые статьи. 1-2 поста в день, никакого мусора!
Материал подготовлен при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, дабы не пропускать новые статьи каждую неделю!
Это все конечно здорово, энтузиазм дело хорошее.
Может с точки зрения разработчика эта система супер-пупер крутая.
Но с точки зрения пользователя - это редкостное говнище. Хуже только, наверное, виста на пк (в целом под нее и подгонялось).
Судя по интерфейсу и дизайну - система делалась как раз для разработчиков, мол как у нас классно, можно вот это написать, это запрограммировать, это сделать». Но для обычных пользователей это все нахер не надо. Человек хочет достать телефон из кармана, позвонить, отправить пару сообщений, посмотреть видосики и всё. И он хочет, что бы его глазам это было приятно. Виндафон этого не давал даже на 1%. В нем было хреново абсолютно всё от интерфейса до реализации структуры.
Это раз.
Второе:
А вы посмотрите на свой Android-смартфон сейчас. Сколько в нём ОЗУ? 4гб? 8гб? 12гб? Смущает ли вас то, что Android умудряется неприятно подтормаживать даже с такими ресурсами? А теперь вспомните Lumia 520: Snapdragon 200, 512 мегабайт оперативной памяти. Вот так она работает из коробки.
С точки зрения разработчика это полнейшая чушь и ложь. И либо ты не понимаешь как работают системы, либо пытаешься обмануть нас. С каждым годом приложения становятся сложнее и им требуется больше ресурсов. Да может где то это не оптимально. Да, может что то можно было бы лучше. Но общая тенденция это увеличение ресурсопотребления приложений из-за улучшения графики, увеличения вычислительных процессов, усложнения логики приложений.
И это все равно что сравнивать первую денди и PS5. На ПСке сколько оперативки? 32? 64? 128? И все равно некоторые игры тормозят. А вот на денди Марио не тормозил! Ну это же полнейшая чушь.
Это же фактический обман.
Плюс сама по себе система wp это максимально сырое тесто. Хочешь хорошо - бери напильник.
А людям надо что бы ты достал из коробки и сразу стало хорошо.
Вот простое объяснение того, что это система говно и к нее нет и никогда не было будущего.
Друг, это мертвая система которая никогда не будет воскрешена. Она убогая и неприятная (имхо).
И яблоки снискали такую популярность всего лишь по одной причине - они дали людям то, что им нужно - красоту и простоту. К счастью они нашли ровно тот ключик который был нужен.
А все вот эти архаизмы типа wp давно уже умерли и никогда не воскреснут.
А ты сейчас занимаешься некрофилией. Без обид, но по фактам.
Windows Phone… услышав название этой мобильной системы, поневоле начинаешь с теплотой вспоминать своего недавнего, такого необычного мобильного друга, как будто прошло всего пару месяцев с момента смены смартфона на iPhone/Android. А ведь с момента фактической смерти Windows Phone прошло уже почти 10 лет! Увы, время вспять уже не повернуть, а мобильное подразделение Nokia не спасти, однако при наличии навыков разработки мобильных приложений, большом энтузиазме и фанатизме, есть шанс вернуть жизнь своему старому другу! Недавно я снова загорелся диким энтузиазмом и смог вернуть жизнь старенькой «люмии», написав собственные клиенты нужных мне сервисов с нуля — и готов поделиться этим с вами во всех подробностях!
Сегодня вы узнаете о моей мотивации привносить жизнь старым смартфонам, о тонкостях разработки мобильных приложений, чем Windiows Phone был на голову выше Android в техническом плане и о том, почему провал Windows Phone — одна из самых больших потерь мобильного рынка. Интересно? Тогда добро пожаловать в статью!
Пожалуй, довольно большой процент моих читателей и подписчиков когда-либо владел и пользовался смартфонами на Windows Phone. Мнение пользователей этой мобильной платформы во многом разнится — кто-то восхваляет по настоящему продуманный и плавный интерфейс, кто-то ругает Microsoft за «кидалово» с обновлениями, но большинство людей сходится во мнении, что Windows Phone — была действительно необычной и имела собственную изюминку.
Конечно же, Windows Phone была далеко не первым опытом Microsoft на мобильном рынке. До этого, Редмондская компания поддерживала очень крутую платформу для коммуникаторов и КПК под названием Windows Mobile. Фактически, это был полноценный компьютер в кармане — большинство кнопочных телефонов могли максимум запускать простенькие J2ME-приложения, в то время как WM позволял запускать множество самых разных программ — как написанных на C++/Pascal, так и написанных на C#/VB.Net. Мобильная платформа во всём пыталась подражать своему старшему брату — API системы было очень похоже на то, что мы видим в обычной Windows — тут и полноценная оконная система, и waveout для вывода звука, и GDI для вывода графики.
Windows Mobile прочно занимал свою нишу на мобильном рынке: HTC постоянно представляла новые модели коммуникаторов, которые довольно хорошо продавались. Но тут пришёл первый iPhone, который перевернул всё с ног на голову. Оказывается смартфоном можно управлять полностью пальцами, нажимая на красивые, анимированные элементы интерфейса! Это перевернуло всю индустрию — даже Nokia с её Symbian было тяжело конкурировать с продуктом от Apple. Microsoft видела, что пользователи хотят не столько свободы и кастомизации в системе, сколько плавности интерфейса, стабильности и простоты использования.
Плеер Zune HD стал дебютом свежего подхода к созданию интерфейсов — Metro UI. И хотя сам девайс не сыскал особой популярности, став в некоторой степени провальным, Microsoft взяла на вооружение концепцию этого интерфейса, дабы реализовать её уже в полноценной мобильной ОС. В октябре 2010 года выходит первая версия новой мобильной платформы Microsoft — Windows Phone 7, заложившая фундамент той самой системы, которую мы с вами до сих пор вспоминаем с теплотой!
На WP7 вышло весьма много устройств: тут и девайсы от HTC, и смартфоны Lumia от Nokia, и даже продолжение линейки Omnia от Samsung! Но были у этой платформы и серьезные минусы: она базировалась на ядре обычной Windows CE (оно же использовалось в Windows Mobile) и из-за желания повысить безопасность системы, Microsoft отключила возможность использовать код на нативных языках в своих приложениях. Кроме того, во многих аспектах WP7 была достаточно сырая — хотя для неё регулярно выходили обновления.
Конечно же параллельно с доработкой WP7, Microsoft разрабатывала новую версию ОС, которая должна была объединить мобильные и десктопные приложения в одну общую концепцию. Кроме того, разработчики решили отказаться от лёгкого ядра Windows CE в пользу более тяжелого и продвинутого ядра Windows NT, которое используется в полноценных версиях Windows.
К сожалению, апгрейда с WP7 на WP8 предусмотрено не было, что многие пользователи считают «кидаловом» со стороны Microsoft. Отчасти это так, но проблема была в том, что даже флагманские устройства на WP7 имели 512мб ОЗУ, чего было недостаточно для первой версии WP8. Думаю, в какой-то степени Microsoft просто не хотели портить имидж максимально плавных смартфонов тормозами обновленной системы, хотя примеры шустрой работы на 512мб ОЗУ есть — например, Lumia 520.
Но вот где WP8 была передовой, так это «под капотом». Microsoft смогли сделать что-то невообразимое для мира ARM-устройств: они реализовали нормальный слой абстракции от «железа» и ввели концепцию ACPI, знакомую нам из обычных десктопных ПК. Вкратце, ACPI — это что-то типа списка железа в устройстве, под которое ОС должна найти и загрузить драйверы, не забыв под это всё выделить ресурсы (devicetree в Linux реализует похожую концепцию). Кроме того, Microsoft реализовала полноценный UEFI в своих смартфонах, что позволяло, например, сделать дуалбут в будущем. На практике это всё означает то, что даже неподдерживаемые No-Name смартфоны можно было обновить до Windows 10, банально поменяв пару ключей в реестре: на Android-устройствах такое невообразимо. Фактически, это стандартизация ARM-железа.
На этом технические фишки Windows Phone не заканчиваются. Переходя к пользовательской части, стоит упомянуть фреймворк для построения интерфейса (WPF/Silverlight), который из коробки работает очень шустро, отлично масштабируется под разные размер экрана и предлагает мощные возможности по анимации и кастомизации интерфейса под стиль приложения. Да и само SDK навязывало изначально правильную концепцию программирования, заставляя выделять все задачи в отдельные потоки, не только задействуя дополнительные ядра процессора, но и улучшая пользовательский опыт от приложения (неправильно написанные Android-приложения легко могут подвисать при выполнении какой-то работы).
И третья классная фишка, про которую почему-то все забыли — это поддержка DirectX 11. Конечно в WP7 уже была поддержка Xna (именно на его базе написана Terraria), что позволяло писать игры одновременно для Windows, Xbox 360 и собственно мобилок, но он имел некоторые ограничения и был прослойкой между графическим API (как Direct3D или OpenGL) и самой игрой. Windows Phone 8 же давал настоящий, полноценный DirectX 11 — хотя и поддерживал максимум вторые шейдеры, но при этом умел те фишки, которые не умел Android — инстансинг для оптимальной отрисовки геометрии, установка стейтов «пачками» и эффективное «bindless» управление ресурсами шейдеров. Теоретически, это давало возможность портировать полноценные игры с ПК/Xbox на Windows Phone, хотя на практике не так много кто этим пользовался.
Ну и вспоминая аргумент про кидалово Microsoft с обновлениями, нужно помнить, что обратная совместимость с приложениями для более ранних версий системы была: на Windows Phone 8 можно было играть в годноту с Windows Phone 7 (NFS Undercover, NFS Hot Pursuit, Mirrors Edge и ещё некоторые классные мобильные игры), а на Windows 10 Mobile можно было запускать почти любое приложение для Windows Phone 8.
Так в чём же потеря WP — трагедия для мобильного рынка? А вы посмотрите на свой Android-смартфон сейчас. Сколько в нём ОЗУ? 4гб? 8гб? 12гб? Смущает ли вас то, что Android умудряется неприятно подтормаживать даже с такими ресурсами? А теперь вспомните Lumia 520: Snapdragon 200, 512 мегабайт оперативной памяти. Вот так она работает из коробки:
Думаю, это всё красноречиво объясняет то, что без WP случилась дуополия на рынке — Android продолжает жиреть, впустую жрать ресурсы и при этом практически не получать новых фишек из года в год, а iPhone хоть и остаётся всё такой же плавной и шустрой, ребята из Apple явно не чувствуют конкуренции и их смартфоны стагнируют в плане дизайна и в некоторой степени интерфейса…
Мои давние читатели знают мою любовь к смартфонам прошлых лет. Для меня нет понятия запланированного устаревания: если под устройство есть комплект разработки и документация, то при большом желании я могу дописать нужные мне приложения сам.
Мой проект SelfEco (сам себе экосистема) как раз об этом — почти полгода назад я написал клиент YouTube и ВК для Android 2.2+. Фактически это означает, что мои приложения работали на ВСЕХ Android смартфонах от 2010 года и новее.
Исходным кодом своих приложений я свободно делюсь — как в качестве примера читателям, так и для возможности каких-то фиксов в будущем или даже модов. В 2021-2022 году я ходил с Lumia 640XL с Win10 Mobile на борту, как с основным смартфоном. И в целом, меня все устраивало и всё нравилось: там и годный клиент ВК был (LunaVK), и клиент телеги нормальный, и браузер кое-какие страницы всё ещё нормально переваривал. Но больше всего мне нравится Windows Phone 8 — она работает ещё шустрее и несколько более строгая в плане дизайна. Да и «люмии» сейчас стоят сущие копейки — моя 640XL обошлась мне в100 российских рублей(~1.5$ по тому курсу), я не шучу. А на онлайн-барахолках можно найтиживые, целыеаппараты с нормальными аккумуляторами по 200-500 рублей, иногда даже в родных коробочках!
Lumia 1320 и Lumia 640XL — подарки читателя Kotenilla!
Дак почему бы не применить всю эту круть и мощь во благо, учитывая дешевизну смартфонов? Решено: Качаем SDK и пишем собственный клиент ВК и YouTube — это минимально-необходимые для меня приложения!
Для того, чтобы отлаживать и устанавливать сторонние приложения на смартфоны с Windows Phone, их нужно предварительно разблокировать и сделать «Interop Unlock». Процедура несложная и занимает немного времени на большинстве люмий. Дабы сильно не затягивать статью, я не буду описывать процесс разлочки здесь — его можно найти на 4pda для разных поколений устройств.
Начинаем с клиента ютуба. Собственно, концепция отнюдь не поменялась с прошлой статьи — мы всё так же используем API Invidous для получения информации о видео. Нативное API YouTube — полная дичь, да ещё и с ограничениями на один токен, в то время как Invidous сам распоряжается токенами и распределяет их как нужно. Нам лишь остаётся написать «морду», которая будет отображать полученные с сервера данные и передавать ссылку на видео в встроенный плеер.
В отличии от Android, никаких проблем с TLS не возникло: смартфон смог без проблем связаться с инстансом Invidous и получить данные о видео в трендах. Сам по себе, формат ответов очень простой и возвращается в виде JSON, который можно описать такой иерархией:
Практически сразу система нам навязывает распараллелленую парадигму написания кода — часть API банально не имеет синхронных аналогов! Например, из WebRequest убрали GetResponse, дабы неопытные разработчики не делали ошибок и не пытались вызывать долгие I/O операции в главном потоке (что вызывает подвисания приложения). .NET сам по себе имеет крутой механизм тасков (многопоточных задач) и реализацию концепции async/await, которая позволяет подождать выполнение операции, не блокируя остальное приложение.
Я решил придержаться более привычной мне концепции на коллбэках, которая позволяет более четко обрабатывать ошибки в подобных кейсах, да и в целом я не очень люблю подобный синтаксический сахар (а async/await и есть «сахар», поскольку разворачивается в стейт-машину). В качестве десериализатора (механизма парсинга JSON напрямую в экземпляры классов, используя рефлексию) я использовал классический Newtonsoft.Json.
После того, как механизм получения и обработки данных с сервера был готов, я начал реализовывать интерфейс приложения. И вот тут WP показал себя во всей красе. ListView? RecycleView? Нафиг эти костыли, винфон умеет нормально рисовать элементы интерфейса, которые вы выделили в ScrollView. И что забавно: в Android даже реализация с ScrollView при активной подгрузке данных вызывала лаги — на WP такого нет вообще! Тут всё просто работает из коробки!
Механизм анимаций здесь тоже декларативный и реализован в концепции т.н «сторибордов» — наборов действий, которые позволяют создавать достаточно сложные анимации вручную.
Буквально через пару часов после создания проекта, у меня уже была готова загрузка и отображение списка трендов:
А затем и логика воспроизведения видео, которая запускает встроенный плеер и передаёт в него ссылку на видео — которая выбирается относительно кодека (только mp4), разрешения устройства и предпочтений пользователя:
Кроме того, в приложение нужно было добавить настройки — для этого WP8 не предоставляет встроенных средств, нужно реализовывать логику самому. Впрочем, ничего сложного в этом нет — глобальный синглтон с полями настроек и логикой сохранения/загрузки (сюда код не поместился, нет нормальной подсветки кода).
WP предоставляет специальное изолированное хранилище для пользовательских программ — IsolatedStorage, в которое нельзя добраться из остальной системы (без разблокированного загрузчика и режима Mass Storage). Там же можно хранить и конфиги — правда с некоторым API для файлов сильно перемудрили — навязывать распараллеливание чтения обычно маленьких файлов — это совсем уже.
Итак, буквально за сутки разработки у меня получилось реализовать приложение, которое может выводить списки ютуба по региону (тренды/популярное), может искать видео и воспроизводить ролики с различными разрешениями. Кроме того, приложение умеет подгружать превьюшки и имеет собственный раздел истории. Неплохо за 24 часа для программиста, который фактически не имел опыта с платформой UWP/WinRT в прошлом, да? :)
Теперь пришло время реализовать клиент ВК! Фактически, ничего сложного в реализации клиента с базовым функционалом нет — это всё такая же «морда» к данным с сервера, к которым добавляется необходимость получать уведомления и реализовывать логику обновления данных.
На этот раз, я решил выбрать API WP8.1: оно гораздо более богатое на возможности и ближе к современному UWP, чем Silverlight из WP8. Так уж сложилось, что API обычного WP8 ближе к WP7 и совместимо с WP8.1 только с помощью специальной прослойки.
Я не ставил целью написать полноценную замену ныне не рабочему официальному клиенту, но я хотел чтобы моё приложение поддерживало базовый функционал:
Мессенджер: Конечно же, самое важное в нашем клиенте — это мессенджер.
Музыка: Куда ж без удобной ВК музыки? Её реализация в кастомных клиентах отнюдь несложная, но достаточно костыльная из-за политики ВК в отношении лицензирования аудио. Снова будем идти на хаки, дабы получить работающее приложение!
Новости: Помимо общения и прослушивания музыки, бывает потребность полистать ленту — дабы узнать новости, или посмотреть свежие мемчики.
Начал я с реализации окна с диалогами и продумывания навигации приложения. WP8.1 всё ещё не имел концепции боковых менюшек, поэтому реализовывать панель навигации пришлось самому. Вместе с ней была реализована верхняя часть, которая содержит в себе заголовок со статусом и анимацию загрузки:
Класс-менеджер для общения с API ВК я решил реализовать по тому же принципу, что и для клиента YouTube: у нас есть два метода на всё-про всё, один сразу десериализовывает ответ в виде объекта Root (для каждого типа ответа — он свой, все они описаны в Data.Packet.Root):
До async/await я не дозрел и здесь :)
Спустя достаточно короткое время, у меня уже была готова подгрузка диалогов:
Реализация обновления во всех разделах одинаковая: есть метод RequestUpdate, который начинает процедуру обновления и получает данные с сервера, а затем ставит в очередь задачу на обновление UI из основного потока с помощью UpdateUI:
И механизма загрузки/отправки сообщений.
В целом, с этим ничего сложного нет, однако теперь самое время разобраться с нотификациями. Пуши я пока-что поднять не смог, вместо них пока что лонгполлинг — достаточно для нотификаций пока приложение находится в фоне, но система со временем «прибивает» неактивные задачи, а сделать «бесконечный» фоновый таск как в Android не выйдет — система очень строго относится к любой фоновой работе.
Пришло время заняться музыкой — вот это действительно важный функционал! Для работы с аудио, я использовал довольно старый, но известный способ, который ВК пока что не пофиксил. Не то чтобы это из вредности, просто сами ВК особо не идут на контакт для интеграции аудио в своё приложение — исключением стали лишь очень крупные клиенты, как Kate Mobile — а значит можно реализовать действительно важные штуки: например, скачивание треков напрямую в музыкальную библиотеку, дабы их можно было послушать оффлайн! Вся работа с музыкой производится через прокси-сервер, поэтому аудио должно быть открыто.
Реализация фонового прослушивания музыки достаточно похожа на другие платформы, но в то же время заметно отличается. Само приложение может воспроизводить звуки с помощью MediaElement или BackgroundMediaPlayer, однако при сворачивании звук будет приостановлен (в отличии от MediaPlayer на Android). Для фонового прослушивания музыки, Microsoft решили сделать отдельный сервис BackgroundMusicPlayer, который запускается при попытке получить доступ к плееру из программы. Общаться с этим сервисом можно через межпроцессные вызовы — RPC и система предоставляет для него API. Вкратце: нам нужно создать фоновую задачу в виде отдельного модуля WinRT, который будет получать RPC-посылки от Foreground приложения и если нужно — отсылать ответы обратно. Ничего сложного!
Отдельного внимания заслуживает механизм скачивания музыки в библиотеку. В WP, программы не могут просто так «вторгнуться» в личное пространство пользователя — им обязательно нужны разрешения. Но это ладно, запросить разрешение — совсем не проблема. Зато настоящая проблема — ПОЛНОСТЬЮ асинхронный API. Захотел найти дескриптор файла в ФС — асинхронно, захотел его открыть — снова асинхронно. Поскольку у меня вся работа по скачиванию ведется в отдельном воркере и я не боюсь за дедлоки, пришлось лепить костыли с Task.Wait() :)
А ещё ВК возвращает mp3 без ID3-тегов, поэтому мне пришлось вручную их дописывать, дабы музыка в плеере удобно сортировалась:
Кроме того, дабы иметь возможность управлять музыкой из других приложений и экрана блокировки, Microsoft предоставляет т.н интерфейс SMTC — общий оверлей окна регулировки громкости, который позволяет управлять воспроизведением музыки. Его реализация простая до жути — просто включаем нужные кнопки (IsPlayEnabled, IsPauseEnabled и.т.п), добавляем обработчик события нажатия кнопки и обновляем информацию и обложку с помощью DisplayUpdater.
Вот таким образом, буквально за несколько дней мы реализовали клиенты нужных нам приложений с базовым функционалом. Разработка клиента YT заняла ровно сутки, разработка клиента ВК — двое суток. Но можно ли всем этим добром по настоящему пользоваться и как оно работает на настоящем устройстве? Смотрите ниже:
Весьма достойно, да? Ещё до публикации статьи, я выложил клиент YT на 4pda и в профильный Telegram-чатик — люди благодарны и действительно довольны. Только в англоязычном чате о WP8.1 (не вклюая WM10 и WP7/WP8) более 2х тысяч человек! Так что да, девайсы прошлых лет действительно нужны достаточно большому числу пользователей.
Ну а разработка клиентов для меня была эдаким челленджом — пилить что-то полезное под новым API всегда интересно, дак ещё и сами девайсы очень крутые с точки зрения UX и скорости работы. А вы как считаете? Жду ваше мнение в комментариях!
Статья подготовлена при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, чтобы не пропустить новые статьи каждую неделю!
В нулевых, ноутбуки обычно были слабыми рабочими машинками. Большинство лэптопов были предназначены для работы в офисе, серфинга в интернете, мультимедийных возможностей, однако ни о каких играх или тяжелой работе обычно речь и не шла. Типичный ноутбук тех лет работал на базе слабеньких процессоров VIA/Celeron-M/Pentium-M, обладал встроенной чипсетной графикой и 256-512мб ОЗУ и даже сейчас их можно купить за копейки на вторичке. Но сегодняшний девайс оказался крайне необычным: это флагманский брендовый ноутбук Acer Ferrari 2005 года выпуска, который обошелся он мне всего в 600 рублей и он оказался полностью рабочим! Предлагаю посмотреть подробнее на этот, безусловно, интереснейший коллекционный девайс поближе!
Что за ноутбук?
Ещё в двухтысячных, многие люди так или иначе с уважением относились к известным брендам и пользовались продукцией с их символикой. Вспомнить только все эти куртки с логотипами известных автомобильных брендов, всякие брелки, ботинки — своеобразный неофициальный «мерч» можно было увидеть почти во всех городах СНГ. Чуть позже появились даже телефоны в виде машинок, на которых гордо красовались надписи «Luxury» и логотипы известных премиум-автоконцернов.
Очевидно, что известные автоконцерны так или иначе выпускали официальный мерч со своим брендом, но большинство людей даже не слышали, что среди такого мерча были даже ноутбуки и смартфоны. Ещё в 2003 году, Acer стала спонсором гоночной команды Scuderia Ferrari и подписала контракт, разрешающий производителю ноутбуков использовать фирменную символику и бренды в своих продуктах. Таким образом, Acer сделали отдельную линейку ноутбуков премиум-класса, которые отличались не только флагманскими характеристиками, но и характерным дизайном в стиле Ferrari!
Однако, один из главных конкурентов Acer — компания Asus, тоже не оставались в сторонке и заключили похожее соглашение уже с… Lamborghini! Таким образом, одни из самых крупных производителей ноутбуков выпускали собственные «автомобильные» линейки премиального класса, где каждый лэптоп был крайне необычным и отличалось от остальной линейки устройств. Некоторые модели Asus Lamborghini, например, при включении ревели двигателем! Остается вопрос: почему у iRu не было линейки LADA в дизайне жигулей!?
Конечно за такой классный дизайн, мощное железо и бренд приходилось платить. Например, Ferrari 4000, который мы сегодня рассматриваем, стоил 2.199$ в августе 2005 года. Это действительно большая цена для тех лет, в глубинке РФ люди получали ~200$ в месяц в среднем. Немудрено, что за прошедшие годы, ноутбук получил статус коллекционного. И достался он мне за… 600 рублей (~7$) на вторичке, в неизвестном состоянии!
Как только я получил устройство, я сразу нашёл для него БП и попытался включил. И он оказался живым! Он включился и показал фирменную заставку с Ferrari! Моей радости не было предела и я уже был готов разобрать и обслужить этот ноутбук полностью. Как оказалось чуть позже — причины для этого конечно же были. Во первых, ноутбук через минуту выключился от перегрева, причём никакого воздуха из радиатора не было вообще. Во вторых, у ноутбука «украли» HDD, а в третьих: у него не работала клавиатура. Совсем. Ну что-ж, предлагаю разобрать его и попытаться привести в нормальный вид!
Обслуживаем и ремонтируем
Несмотря на то, что это устройство премиум-класса, никаких сложностей с его разборкой и обслуживанием нет. Переворачиваем ноутбук и видим, что кто-то украл пластиковые заглушки для слотов ОЗУ и Wi-Fi адаптера (куда их вечно теряют?), пластиковую заглушку DVD-привода и потерял аккумулятор. Не страшно, главное что и ОЗУ, и адаптер на месте! Откручиваем задние винтики:
И переворачиваем ноутбук. Разбирается он через клавиатуру, что можно зачесть как плюс (легкость разборки), так и минус (для чистки охлаждения нужно разбирать весь девайс до винтика). Очевидно, в ноутбук до меня уже лазили и пытались что-то сделать, но это не беда. Опа, а шлейф клавиатуры был отключен. Совсем! Вот и причина того, что клавиатура не работает.
Откладываем клавиатуру в сторону и откручиваем топкейс, который снимается вместе с дисплеем (!). После этого мы увидим саму материнскую плату. И да, как я уже говорил, её тоже нужно снимать для обслуживания охлаждения! В те годы, обычно доступ к охладу и практически всей обслуживаемой части ноутбука был очень простым, но Acer немножко страдали оверинжинирингом. Кроме того, меня привлекла остальная конструкция ноутбука: сначала я не понял, где находится LVDS-шлейф для подключения матрицы, но затем глянул внимательнее и обнаружил, что в топкейсе есть небольшая плата, которая имеет свой коннектор и вставляется «бутербродом» в коннектор на основной плате. Там же разведен коннектор матрицы. Ох уж этот Acer!
После этого, мы снова видим бутерброды из плат и кучу коннекторов, но для опытного технаря это проблем не составит: отключаем коннекторы, откручиваем материнскую плату и переворачиваем на другую сторону. И тут мы видим жемчужину ноутбука: довольно здоровая и мощная система охлаждения! Суть вот в чём: сам по себе, Turion — очень мощный и горячий процессор, к которым в пару идет довольно теплый чипсет и дискретный видеочип Radeon X700.
Обратите внимание на съёмный процессор — для современных ремонтников это уже давно артефакт прошлого. А тут хоб — и проц можно поменять на более мощный! Не уверен насчёт конкретно турионов, но ноутбучный PPGA478 для Pentium M был почти идентичен десктопному PGA478 за исключением пары пинов (были переходники).
Чтобы всё это оставалось достаточно хоолдным, нужна нехилая система охлаждения и даже эта не сказать, что справляется очень хорошо (даже после чистки температуры оставались ощутимыми). А вот и причина нерабочего охлада — кто-то отключил кулер. Причём сам коннектор в норме, ничего не выломано — подключаем обратно, подсобираем ноутбук и всё работает!
Термо-прокладки уже успели слегка рассыпаться за это время, поэтому кое-где я их заменил на дипкуловскую термопасту (хотя прокладки толстые и при следующем обслуживании лучше поставить именно их). Теперь собираем ноутбук в обратном порядке, включаем — и всё работает! Но нужно ещё подобрать новый HDD. Ноутбук поддерживает только IDE 2.5" жёсткие диски, которые нынче, можно сказать, редкость. Но в моей коробке с винтами нашлось парочку — я поставил на 20гб!
Ну и конечно же, нужно накатить систему и поставить драйвера. Тут я остаюсь неизменным себе и ставлю ZverCD, который вызывает у меня приятные ностальгические чувства.
Смотрим на девайс подробнее
Самый трушный опыт от использования ноутбука мы получили бы, если бы использовали оригинальный кастомизированый образ Windows, который тут использовался с завода. Обычно в ноутбуки подобного сегмента, производители предустанавливают различный софт в фирменном стиле и с поиском родных образов Windows частенько возникают проблемы.
В статье про нетбук от Nokia, у меня мелькал слабый Atom Z530, который по производительности наверное как… ну может быть топовый P III, или слабый P4. Turion 64 — уже совсем другой разговор, это действительно довольно шустрый чип, который догоняет десктопные Pentium D своих лет. Однако, если Pentium D обычно не требует серьезного охлаждения, то на турионе за производительность приходится платить жестким нагревом. Да, AMD такой AMD. Ниже результат бенчмарка CPU Queen:
Температура процессора в относительном простое достаточно высокая: 60-70 градусов. Для сравнения, Pentium M гораздо менее горячие, а процессоры VIA вообще редко за 50 выходят.
Иногда возникают проблемы с установкой драйвера на видеочип. Суть вот в чем: на некоторых старых ноутбуках, судя по всему, немного отличается ID чипа, который родной драйвер видеть не хочет — а значит, либо модифицировать inf, либо пытаться подсунуть драйвер вручную. И это не прикол ATI: на NVidia, как минимум серии FX, такое тоже было!
По всем остальным характеристикам, ноутбук в целом и сейчас неплох для не особо сложных задач: сервер для ксочки/халвы, веб-сервер, сервер для файлопомойки и конечно же игры. В последнем нам подсобит дискретка Radeon X800, которую в целом можно назвать неплохим видеочипом. Всяко лучше Intel HD Graphics!
Что касается базового серфинга, то на 1гб ОЗУ в хром даже можно не суватся. Это будут жесткие лаги и боль и слезы, вместо серфинга. Но если Вы большой любитель «классического» легкого интернета без JS, т.е вам хватит полистать opennet/LOR или на двачике покапчевать, то хватит и Dillo. В иных же случаях, серфить с таких ноутбуков сейчас не получится.
Другое дело сервер — тут и процессор весьма бодренький и вероятно получится поднять даже не просто личную страницу, а какой-то +- динамичный сайт с достаточной посещаемостью! Что касается файлового сервера, то варианта два: воткнуть «помоечный» HDD в слот для привода, либо обложится внешними HDD-кейсами. Понятное дело, что сервер лучше поднимать под линухом, под WinXP сейчас безопасно разве что SMB поднять в локалку.
Играем
Однако с чем этот ноутбук действительно очень неплохо справляется и сейчас, так это старые игры. Пройти классику уже в 20 раз? Да не вопрос, при том, что здесь без проблем потянет и достаточно свежая индюшатина.
Я не буду приводить в тест 2D игры- Fallout, Stronghold, HoMM этот ноутбук потянет вообще без каких либо проблем. Другое дело 3D игры, да желательно в HD разрешении — не зря же здесь ставили дисплей 1600 x 1200, когда даже на десктопах у многих оставались мониторы 1280x1024, а то и 1280x720!
NFSU2 с полузнком на средних, HD-разрешение, средний FPS 30-40 без просадок:
GTA Vice City, дальность прорисовки выкручена на максимум, HD разрешение: ~30-40 кадров, лагов не ощущается совсем. Экспиренс точно тот же, как был и у меня в свое время! Однако важно понимать, что установка карпаков очень сильно бьет по этой видяшке и FPS может резко просесть.
COD 4 MW уже не тянет. И хотя десктопная X1800 тянула даже MW3 в 30 фпс на минималках, то мобильная X800 даже первую «колду» уже едва тянет. 800x600, минималки, ватные 20-25 кадров:
Чудеса показывает HL2, которая работает вообще везде: там даже FFP фоллбек для старых «жифорсов» есть! На открытых локациях при средне-высоких настройках графики и HD-разрешении, игра выдает 40-50 кадров. Достойно!
Низкие
Средне-высокие
Заключение
Подобные ноутбуки тех лет уже действительно несколько потеряли актуальность в качестве повседневных машинок для современного человека. И ютубчик уже не посмотреть, и Хабр не полистать — современный веб стал слишком тяжелым для подобных машинок. Однако полезные применения у них все равно есть и в первую очередь для тех, кто с годами не потерял возможность наслаждаться старыми играми! Поэтому, если у вас где-то лежит подобный лэптоп, может не стоит его выбрасывать, а попробовать найти применение!? Старых друзей на свалку выкидывать не хорошо :)
Но если говорить касательно Ferrari, то это настоящая коллекционная штука, иметь которую в коллекции — настоящая гордость и которую нужно беречь!
Прошло уже целых 16 лет с момента выхода первого «Сталкера» — игры, которая получила статус культовой на территории пост-советского пространства. Одним из самых важных геймплейных атрибутов сталкера всегда был карманный персональный компьютер, или кратко — КПК. Этот класс устройств был очень популярен в середине нулевых среди тех, кому было мало функционала обычного кнопочного телефона или даже Symbian-смартфона. Недавно мне подарили целых два таких гаджета, да ещё и с аксессуарами, которыми потенциально могли пользоваться сталкеры — SDIO GPS-модуль и карточка MMC. Давайте посмотрим на эти крутейшие штуки спустя почти 20 лет после выхода!
Сейчас многие школьники и студенты слышать не слышали о таком классе устройств, как КПК. Их функции уже давно выполняет любой дешевый смартфон за пару тысяч рублей, да и сами портативные гаджеты стали в разы мощнее. Однако, так было не всегда: ещё в начале-середине двухтысячных, телефоны уже стали достаточно функциональными для того, чтобы через них можно было чатиться в аське, играть в 3D игры и даже сёрфить в примитивном WAP-интернете.
Однако некоторому проценту пользователей и этого было мало. Кто-то предпочитал иметь почти полноценный компьютер в кармане, с которого можно было и вордовский документ подправить, и в топике на linux.org.ru отписать и почитать книгу на большом экране высокого разрешения — целых 240x320! Кроме того, портативные девайсы сами по себе хранили некоторую часть личности хозяина, что для гиков было очень важно: кто-то делал свои темы на сименс, а кто-то разрабатывал свои виджеты для экрана «Сегодня» на своем КПК.
Именно поэтому в нулевых было не редкостью встретить человека, который имел при себе сразу два устройства — простой кнопочник для связи/СМС и КПК для всех остальных задач, включая развлечения. Со временем, производители объединили два разных устройство в одно, которое называлось коммуникатор.
В ноутбуках тех лет часто можно было встретить слоты расширений — PCMCIA, которые позволяли расширять функционал устройства не только за счёт уже набравшего популярность USB, но и подключая настоящие карты расширений напрямую в шину PCI ноутбука. Не обошла эта тенденция и КПК, которые также поддерживали возможность расширения функционала устройств за счёт карточек SDIO. Эти карты вставляются в слот для SD-флэшек и дополняют функционал устройства, например, GPS-модулями, FM-тюнерами, ТВ-тюнерами и даже цифровыми камерами! У некоторых владельцев КПК было несколько подобных модулей на все случаи жизни, а поскольку Flash-памяти на устройствах было мало, частенько можно было видеть 2-3 карточки в бумажнике + SDIO модули. Одна флешка для музыки, другая для видео, третья для программ.
Строго говоря, КПК далеко не ограничивались известными моделями от HP и Dell. За рубежом также были популярны модели Palm Tungsten на базе собственной операционной системы PalmOS. Кроме того, отчасти КПК (они всё же ближе к коммуникаторам) можно было назвать ранние устройства от BlackBerry, которые отличались наличием физической QWERTY-клавиатуры и бизнес направленностью.
КПК от Palm же отличались тем, что их система была однозадачной, но при этом весьма стабильной, шустрой и под неё было относительно легко программировать. Благодаря этому, под Palm начали появляться программы, в том числе и платные шаровары, а для их распространения служили различные сайты — например, таковым является hpc.ru. В РФ же, вообще частенько на развалах с дисками продавали не только игры/программы, но и различный контент, как для телефонов, так и для КПК!
Но сегодня речь пойдет о КПК на базе ОС Windows Mobile — адаптации встраиваемой системы Windows CE под управление стилусом. В своё время, именно WinCE занимала ту нишу, которую занимает сейчас Android — полностью кастомизируемая, открытая (исходники можно было посмотреть и скомпилировать в Platform Builder, но системане свободная) ОС, на которую можно деплоить любой код и под которую достаточно легко программировать.
Сегодня мы с вами рассмотрим два КПК от компании HP, настоящего мастодонта мира портативных компьютеров тех лет, с которым серьезно конкурировал только Dell с серией Axim и в какой-то степени Samsung с серией SCH. Оба гаджета мне подарили читатели!
Первым станет iPaq rx3715, поступивший в продажу в 2004 году по цене 499$, или около 13.500 рублей по тому курсу. Это было дорогое High-End устройство, которое было нацелено не столько на бизнес-сектор (как это обычно бывает с таким ценовым сегментом), а на мультимедийные возможности и развлечения. И действительно: помимо стандартных фич типа проигрывания музыки и просмотра сконвертированного AVI видео, у устройства появилась камера аж на целых 1.2мп, с соответствующей программной поддержкой в виде фоторедактора.
Характеристики:
Процессор: Samsung S3C2440 на частоте 400мгц. Один из первых ARM-процессоров, сравнившийся по производительности с Intel XScale. Его продолжали использовать вплоть до 2008-2009 года в бюджетных RoverPC.
ОЗУ: 64мб SDRAM — стандартный «джентльменский» набор. Довольно часто, моддеры практиковали операцию замены двух банок по 32мб, на две банки по 64, получая удвоенный объём оперативной памяти! Такую услугу оказывали даже в Москве когда-то.
Память: 128мб Flash памяти. По тем временам это было действительно довольно много.
Дисплей: 3.5" 240x320 матрица, выполненная по технологии TN.
Камера: модуль на 1.2мпкс, плюс «зеркальце» для съёмки селфи.
ОС: Windows Mobile 2003
Внешние интерфейсы: разъём для крэдлом для возможности синхронизации с ПК, 3.5мм джек, SD
Весьма нехило, да?
Вторым устройством станет легендарный КПК iPaq hx2490, вышедший в 2005 году по цене 399$. Несмотря на несколько меньший ценник, чем у rx3715, hx2490 тоже был High-End устройством, в котором заметно улучшили часть аспектов, по сравнению с предшественником! Помимо стандартных возможностей КПК, он выделяется наличием сразу двух слотов под флэшки — CF (CompactFlash) и SD, оба которые можно использовать для подключения внешних аксессуаров. Кроме того, HP поставили свежий процессор XScale, в котором подняли частоту более чем на 100мгц. Для мобильного процессора, это очень достойный результат!
Характеристики:
Процессор: Intel PXA270, работающий на частоте 520мгц. Несмотря на то, что Intel в даташите заявляет о возможности разгона до 624мгц, многие устройства продолжают работать на частоте 400мгц (для меньшего энергопотребления).
ОЗУ: 64 мегабайта SDRAM памяти. Где-то пишут что 128, возможно, в каких-то других ревизиях устройства (у меня hx2490b).
Память: 192мб Flash памяти — это очень хороший объем по тем годам! А учитывая возможность установить CF и SD флэшку одновременно, можно было получить что-то близкое к тому, что мы сейчас ощущаем с айфонами на 1тб. Не зря ведь Стив Джобс в свое время рассказывал про 1.000 песен в кармане!
Дисплей: Всё та же 3.5" TN матрица с разрешением 240x320. Конечно, маловероятно что она взаимозаменяема с матрицей rx3715 (это вообще беда с поиском дисплеев на коммуникаторы), но выполнена по той же технологии.
ОС: Windows Mobile 5
Внешние интерфейсы: док-станция, CF (PCMCIA), SD, ИК-порт, Bluetooth.
Лично у меня, WinMobile в любых его проявлениях до сих пор вызывает умиление и приятные ностальгические чувства. Думаю, многие помнят то ощущение (особенно будучи детьми-подростками), когда ты берешь в руки КПК и видишь, что визуально он очень похож на обычную десктопную винду с классической темой оформления. Подобные попытки перенести интерфейс Windows на мобильные рельсы были даже в начале 10'ых, с всякими Windows Vista Launcher и.т.п
В отличии от большинства кнопочников тех лет, у WM была самая настоящая многозадачность, а с специальным виджетом, который реализовывал подобие панели задач, можно было моментально переключаться между приложениями. При этом, в WM не система управляет, какое приложение когда должно работать, а именно пользователь. Запустил порт «героев» и оставил на недельку в памяти висеть? Развернешь — и ничего абсолютно не изменится, никаких «скриншотов», которые показываются пока приложение перезапускается, как на айфоне пользователь не увидит.
И конечно же, у WM были два самых известных атрибута Windows в СНГ: сборки и зависания. И если зависания заканчивались максимум артефактами на экране и последующим зажатием кнопки RESET, то сборки — это отдельная тема. И если у сборок десктопной «винды» обычно репутация не очень хорошая, то сборки WM наоборот стремились серьезно улучшить аппарат и привнести в него новый функционал. На HTC Kaiser, например, люди вручную ставили драйвер на GPU, который там не был задействован, а на многих устройствах люди портировали новые версии системы, даже на КПК 5-6 летней давности!
Для разработки своих прошивок были т.н «кухни» — наборы программ, позволяющие распаковывать архив с системой (nb0) и модифицировать ядро (nk), менять программы, подменять драйверы — в общем, делать всё что угодно с устройством. Довольно много людей было вовлечено в эту моддерскую кухню, поэтому найти «стоковый» КПК было достаточно сложно.
Какие возможности были доступны людям? Вообще, на самом деле практически такие-же, как и современному пользователю смартфонов. Чего стоит хотя-бы полноценный интернет через Pocket IE, и не менее полноценный, но экономичный через Opera Mini:
Естественно, в любом мультимедийном гаджете должен быть продвинутый аудио и видеоплеер. С первым отлично справляется Windows Media Player, интерфейс которого, даже сейчас наводит приятные флешбеки со времен использования WinXP. Кроме WMP, под WinMobile был порт WinAMP, который, тем не менее, был довольно сырым. С музыкальной точки зрения, тут есть и 3.5мм разъём. С видео WMP справлялся так себе: там был только софтовый декодер, который вытягивал 3gp и специально сконвертированный avi. Негусто, но нам хватало для потребления контента!
Гораздо круче были устройства с видеоускорителем, поскольку у них была возможность декодировать h263 видео в реальном времени и необходимость в конвертации отпадала. Когда-то, с таких гаджетов можно было даже YouTube смотреть!
Легендарный Portege G900 имел встроенный GPU GoForce 5500… без поддержки 3D графики! В зависимости от модели лицензирования, Nvidia предлагали GPU с поддержкой 3D ускорения и видео или… только видео? Какие мощи пропадали!
Кроме того, КПК использовали как читалки электронных книг. По тем временам, 3.5" считался большим дисплеем, а в отличии от CSTN матриц обычных телефонов, на их яркой и цветастой матрице хорошо читался текст. Немудрено, что под WM было кучу программ для чтения книг — от FB2, до PDF. Кто-то даже использовал КПК (хотя скорее всё же коммуникаторы с QWERTY-клавиатурами) для подготовки диссертаций и Pocket Word или подготовки таблиц в экселе.
Ну и конечно-же игры, много и разных! Из-за простоты программирования под WinMobile и предоставления Microsoft специального API, довольно многие разработчики шароварок быстро перешли на КПК и делали свои игрушки. Даже PopCap, разработчики Plants Vs Zombies, портировали Bejeweled на КПК. Microsoft предоставляла два API для разработчиков: GAPI (GameAPI) — позволял получить прямой указатель на буфер кадра (фреймбуффер) поверх всего остального интерфейса системы и писать картинку в него напрямую, в обход медленного GDI, а также D3D Mobile — эдакую упрощенную реализацию Direct3D 9, которая в основном работала в режиме программного рендеринга.
Одними из самых известных и отчасти даже эксклюзивными стали порты «героев» и Fallout. Несмотря на требовательность этих игр, их весьма часто можно встретить на чужих КПК даже сейчас…
Кроме того, есть конечно-же и 3D игры от Gameloft — тот же Asphalt Urban GT 3 например
Библиотека игр под КПК расширяется благодаря JBlend — реализации J2ME на Windows Mobile, которая позволяет играть в игры с обычных кнопочников и эмуляторам всех сортов. Тут и NES, и SEGA, и иные старые платформы. Про PS1, конечно же, можно сразу забыть.
Ну а ещё у hx2490 есть ИК-порт, который позволяет ему быть пультом для многих устройств. Софта для ИК-порта под WM достаточно, поэтому даже в роли пульта, КПКшник может пригодится!
Одной из самых известных игр, где КПК был неотъемлемой частью был конечно же Сталкер! У каждого сталкера был свой личный PDA, подключённый к общей сталкерской сети, которая учитывает ранг, группировку и геолокацию владельца, а также содержит в себе карты зоны и разделы с информацией о фауне/локациях и.т.п. Кроме того, сталкерам был доступен радиоканал с текстовыми и звуковыми сообщениями. Как такое могло бы работать в реальном мире? Например, с помощью SDIO RF-трансмиттера, который вставлялся бы в КПК и ловил сигнал с эдакой базовой станции, которая была бы на каждой заселенной локации.
Теоретически, для коммуникаций мог использовать и Wi-Fi модуль: уже тогда были возможности покрытия достаточно больших территорий одной Wi-Fi сетью. Организовали себе эдакую «локалку» и сидим все вместе, парой сотен человек. Но что делать с геолокацией? Здесь к нам на помощь приходят внешние GPS-модули, коих было много-много самых разных. И Bluetooth:
Этот у нас от RoverPC N7
И SDIO:
И даже CF (PCMCIA):
Конечно в то время уже были настоящие тру-Linux КПК от Nokia, которые они называли интернет-планшетами. Но обычные WM PDA уже успели достаточно подешеветь к 2007 году и сильно-БУ модели стоили довольно небольших денег, поэтому выбор разработчиков КПК как устройства для коммуникаций очевиден. И какой же вайб ловил человек, который купил себе в 2007 году диск с игрой, вставил, а там КПК, очень похожий на iPaq/Samsung SCH? :)
КПК есть за что ценить и любить. В конце концов, именно они стали ближайшими предками таких знакомых нам смартфонов и планшетов. И если внимательнее присмотреться, то действительно приходишь к выводу: а ведь не так уж и много и изменилось за всё это время! Да, подросли мощности, интерфейс стал шустрее и симпатичнее, но возможности, по сути, остались те же!
Цените гаджеты из молодости и не выкидывайте их! Это же память, которую можно и нужно хранить! :)