Nokia пытается встать с колен
Дизайн, как по мне, лучше современных кирпичей.
Жаль, дальше рендеров не пошло :(
Ответ на пост «Не дадим Windows Phone умереть! Как я написал свои клиенты VK, YouTube для Nokia Lumia? Сам себе экосистема ч.2»
Это все конечно здорово, энтузиазм дело хорошее.
Может с точки зрения разработчика эта система супер-пупер крутая.
Но с точки зрения пользователя - это редкостное говнище. Хуже только, наверное, виста на пк (в целом под нее и подгонялось).
Судя по интерфейсу и дизайну - система делалась как раз для разработчиков, мол как у нас классно, можно вот это написать, это запрограммировать, это сделать». Но для обычных пользователей это все нахер не надо. Человек хочет достать телефон из кармана, позвонить, отправить пару сообщений, посмотреть видосики и всё. И он хочет, что бы его глазам это было приятно. Виндафон этого не давал даже на 1%. В нем было хреново абсолютно всё от интерфейса до реализации структуры.
Это раз.
Второе:
А вы посмотрите на свой Android-смартфон сейчас. Сколько в нём ОЗУ? 4гб? 8гб? 12гб? Смущает ли вас то, что Android умудряется неприятно подтормаживать даже с такими ресурсами? А теперь вспомните Lumia 520: Snapdragon 200, 512 мегабайт оперативной памяти. Вот так она работает из коробки.
С точки зрения разработчика это полнейшая чушь и ложь. И либо ты не понимаешь как работают системы, либо пытаешься обмануть нас. С каждым годом приложения становятся сложнее и им требуется больше ресурсов. Да может где то это не оптимально. Да, может что то можно было бы лучше. Но общая тенденция это увеличение ресурсопотребления приложений из-за улучшения графики, увеличения вычислительных процессов, усложнения логики приложений.
И это все равно что сравнивать первую денди и PS5. На ПСке сколько оперативки? 32? 64? 128? И все равно некоторые игры тормозят. А вот на денди Марио не тормозил! Ну это же полнейшая чушь.
Это же фактический обман.
Плюс сама по себе система wp это максимально сырое тесто. Хочешь хорошо - бери напильник.
А людям надо что бы ты достал из коробки и сразу стало хорошо.
Вот простое объяснение того, что это система говно и к нее нет и никогда не было будущего.
Друг, это мертвая система которая никогда не будет воскрешена. Она убогая и неприятная (имхо).
И яблоки снискали такую популярность всего лишь по одной причине - они дали людям то, что им нужно - красоту и простоту. К счастью они нашли ровно тот ключик который был нужен.
А все вот эти архаизмы типа wp давно уже умерли и никогда не воскреснут.
А ты сейчас занимаешься некрофилией. Без обид, но по фактам.
Не дадим Windows Phone умереть! Как я написал свои клиенты VK, YouTube для Nokia Lumia? Сам себе экосистема ч.2
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 была достаточно сырая — хотя для неё регулярно выходили обновления.
❯ Почему провал WP — трагедия для мобильного рынка?
Конечно же параллельно с доработкой 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 для разных поколений устройств.
❯ YouTube
Начинаем с клиента ютуба. Собственно, концепция отнюдь не поменялась с прошлой статьи — мы всё так же используем 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, чтобы не пропустить новые статьи каждую неделю!
Я купил смартфон с камерой 41мп за 600 рублей и оживил его. Сможет ли он стать повседневным фотоаппаратом?
Камера уже давно стала неотъемлемой частью современного смартфона. Ещё со времен ранних Sony Ericsson, производители пытались делать «камерафоны» и постепенно доводили качество фото до уровня дорогих «цифровиков». В 2023 году, развитие дошло до пика — например, Xiaomi ставит линзы Leica, а Huawei делает смартфоны с камерами 50+ мегапикселей и многие люди уже на полном серьезе берут камерофоны в качестве полноценной замены бюджетной зеркальной камере. Качественная фотография — недешевое удовольствие, однако недавно я наткнулся на Nokia Lumia 1020 с камерой 41мп в состоянии полного кирпича всего за 600 рублей. Сегодня мы с вами: разберемся, как работает процесс загрузки на процессорах Qualcomm, оживим смартфон с убитым загрузчиком в состоянии 9008, посмотрим, на что способен такой смартфон в современных задачах и оценим его камеру. Интересно? Тогда жду вас в статье!
❯ Покупка
Мобильная ОС Windows Phone в своё время были весьма перспективным игроком на мобильном рынке. Microsoft активно вкладывала силы в разработку новых устройств и версий этой системы, при этом продолжая «гнуть» свою линию касательно дизайна и опыта от использования мобильной системы. Немудрено, что у WP на пике её развития было довольно много почитателей, которые использовали систему до самой её смерти (формально — в 2016, фактически — в 2018).
Microsoft просто необходимо было заручиться поддержкой серьёзного производителя для того, чтобы конкурировать с устройствами на iOS и Android. Этим самым производителем стала
Nokia, мобильное подразделение которой когда-то перекупили Microsoft. У финского производителя было довольно много направлений, где они стремились найти своего покупателя и камерофоны — одно из них. Если говорить конкретно о смартфонах с революционной камерой — то первенцем стала Nokia 808 PureView, который по совместительству стал последним смартфоном на ОС Symbian. Смартфон работал на базе последней версии Symbian Belle, имел дисплей AMOLED с технологией ClearBlack, работал на базе бодренького (но не флагманского) чипсета от Broadcom, а вишенкой на торте была камера аж на 41мпкс.
Спустя год, Nokia приняла решение выпустить новый камерофон, в этот раз, уже на базе стремительно развивающиеся Windows Phone 8. Помимо свежей ОС, смартфон оснастили весьма серьёзным по тем временам железом — Qualcomm MSM8960, 2гб ОЗУ и 32гб ПЗУ, AMOLED-дисплей с HD-разрешением, а также камерой на всё те же 41 мегапиксель с системой оптической (не программной) стабилизации.
Недавно я снова листал барахолки в поисках чего-то интересного и приметил Lumia 1020 в состоянии кирпича за 600 рублей. Человек писал, что пытался разблокировать загрузчик и в конец добил смартфон, а как отремонтировать его теперь — не знает. Сказано — сделано, я заказал девайсик, а когда он пришел ко мне — начал ковыряться и пытаться оживить.
❯ Ремонт программный
При подключении к ПК, устройство успешно определилось системой, причём в режиме Qualcomm 9008 aka QHSUSB_DLOAD — сервисный режим. Но перед тем как мы перейдём непосредственно к ремонту, нужно понять принцип работы загрузчиков на устройствах Qualcomm. После подачи питания на чипсет, он начинает выполнять так называемый BootROM — или первичный загрузчик, который записан производителем на заводе в ПЗУ чипа. Этот загрузчик невозможно повредить или изменить, поскольку он буквально «прожигается» и навсегда остается в каждом экземпляре чипа (этим пользовались при взломе старых iPhone, где находили уязвимости в BootROM и делали джейлбрейк). Задачей BootROM является найти в одном из источников и загрузить вторичный загрузчик, который в свою очередь проинициализирует оборудование (ОЗУ, eMMC) и начнёт процесс загрузки системы.
Первичный загрузчик может пытаться найти вторичный на любом из носителей — eMMC память, NAND память, USB и даже MicroSD-флэшка (это требуют наличия прожженного с завода фьюза в процессоре и работает не везде. Именно благодаря этому появились образы debrick для Galaxy S4/S4 Mini). И когда по каким-то причинам (например, неудачная прошивка или отвал памяти) BootROM не может найти вторичный загрузчик (в случае Nokia — Lumia BootMgr), он «сваливается» в режим 9008 — или режим низкоуровневой загрузки прошивки. Окирпиченый до такого состояния смартфон обычно нельзя прошить обычными средствами, поэтому некоторые мастера прибегают к помощи программатора, а другие — к помощи фирменных программ от производителя чипсета, коими являются QFIL и отчасти thor2.
Свежие люмии даже в состоянии полного кирпича может восстановить WDRT — Windows Device Recovery Tool, но с моделями 2013 года и ниже он не справится, нужно действовать самому. Устанавливаем WDRT (с ним идут необходимые драйвера и программы), открываем командную строку и идём в папку с установленной программой:
cd C:\Program Files (x86)\Microsoft Care Suite\Windows Device Recovery Tool\
Теперь ищем прошивку для нашего устройства в формате ffu (можно легко найти в интернете, например на lumiafirmware), а также emergency-файлы. Если найти их не получается, то можно скачать их с помощью попытки восстановления WDRT (однако он все равно не сможет сам восстановить устройство) — найти их можно будет в «C:/ProgramData/Microsoft/Packages». Конкретно для 1020 я уже нашёл emergency-файлы и выгрузил на свой диск. Кидаем полученные файлы в папку с WDRT.
Переключаемся на командную строку и выполняем вот такую команду:
thor2 -mode emergency -hexfile "FAST8960_EOS_ROW.hex" -mbnfile "RM875_msimage_v1.0.mbn" -ffufile "имя нашего ffu с прошивкой"
После этого пойдет процесс прошивки и thor2 сделает всё сам. Смартфон несколько раз перезагрузится — в первый раз на «красный экран», второй раз уже в систему. Вот и всё!
Важно также отметить, что если смартфон определяется как USB-HID — это не значит, что он не работает, просто АКБ упала в глубокий разряд и смартфону нужно время на то, чтобы её «растолкать».
Что же происходит в процессе прошивки? Сам по себе процессор в режиме 9008 делать ничего не может — он ожидает от thor2/QFIL специальной программы-программатора (которая занимается инициализацией ПЗУ/ОЗУ) — ей и является FAST8960_EOS_ROW.hex. Кроме программатора, нам нужен вторичный загрузчик — которым является файл RM875_msimage_v1.0.mbn. Он содержит в себе всё что нужно, чтобы смартфон мог загрузится до режима прошивки фирменными средствами производителя смартфона, конкретнее — таблицу разделов GPT, вторичный загрузчик, recovery раздел, реализация UEFI если это Lumia и т.п. После того, как thor2 восстановит загрузчик и перезагрузит смартфон, он прошьет смартфон обычной ffu прошивкой и на этом восстановление будет закончено. Смартфон снова ожил!
❯ Смотрим на смартфон
Как я уже говорил ранее, смартфон работает на базе ОС Windows Phone 8. Через некоторое время после выхода, на него вышло обновление до WP 8.1, но в текущих реалиях обновляться на неё никакого смысла нет. К сожалению, сейчас кое-как живёт и барахтается только Windows Mobile 10, которую в разы проще джейлбрейкнуть и под которую до сих пор выходит новый софт (в основном — клиенты приложений). За WP8 после 2016-2017 года как будто все забыли…
Магазин уже несколько лет как не работает, а просто установить приложения как условные apk нельзя. Ситуация очень близка к WP7. Однако есть способ сделать Interop Unlock (джейлбрейк) и устанавливать XAP-приложения, хотя толку от этого немного — большинство клиентов различных сервисов давно не работает, хотя, например, немногочисленные годные игрушки с WP7 сюда встанут без каких либо проблем.
Давайте же посмотрим, какие немногочисленные возможности всё ещё остались у этого смартфона «из коробки»:
Вот и весь магазин.
С звонками смартфон справляется неплохо. Для жителей центральных регионов может стать приятной плюшкой то, что у смартфона есть поддержка LTE и даже в качестве звонилки он всё ещё может неплохо поработать. Минусы тоже есть: нет поддержки VCF из коробки, а значит контакты нужно предварительно экспортировать на SIM (в WP 8.1 такая возможность есть).
А ещё тут очень удобное приложение для СМСок и почты. Всё очень круто анимировано и работает действительно быстро, ни о каких лагах и речи нет. Принимать СМС-ки от банков? Легко!
Но не звонилкой же мы едины. У смартфона нет поддержки MicroSD флэшек, но это компенсируется довольно большим объемом встройки — целых 32гб ПЗУ, на тот момент это было очень много. А чем эту память можно забить кроме фотографий и видеозаписей? Конечно же музыкой! Смартфон определяется как Nokia PC Suite (последней версией для WP7), так что можно синхронизировать плейлисты, а можно просто подключить смартфон как MTP-устройство и накидать музыки/видео напрямую. Как с проигрыванием видео, так и с воспроизведением музыки он справляется отлично.
Причем аудиотракт здесь действительно вполне ничего. До уровня BlackBerry (а те вообще похоже пытались впихнуть Hi-Fi плеер в телефон) не дотягивает конечно, но звучит очень и очень достойно, даже лучше чем Galaxy S4. Поддержка BT тоже, конечно же, есть. Как плеер смартфон очень неплохо подойдет и не нужно сравнивать его с дешевыми кнопочниками: те звучат в разы хуже.
Карты Here уже к сожалению не работают. Да и Internet Explorer Mobile уже безвозвратно устарел и ничего современного не откроет. Тоже самое в целом можно сказать про Edge в WM10, но тот хоть что-то открыть может.
И всё же обидно получается, смартфон так шустро работает но из-за закрытости, система не получила жизни и померла сразу с окончанием официальной поддержки. Грустно, а ведь всё так хорошо оптимизировано даже для слабых устройств!
❯ Фотовозможности
И конечно же куда без описания фотовозможностей! Это же камерофон и тут надо не рассказывать, а показывать. Однако всё же нужно сказать о том, что у смартфона аж три приложения камеры (два от Nokia и один от Microsoft), он умеет сохранять фото в Raw, у него есть полноценный HDR (причем он сохраняет несколько фото с разной экспозицией) и он умеет снимать видео 720p/30FPS с применением той самой оптической стабилизации. Часть фото ништяков на люмию вы могли увидеть в моих майских статьях. В общем, смотрим:
Осторожно, трафик:
А вот так он снимает видео:
Полный фотосет можно посмотреть на imgur. Весьма достойно, согласитесь? И это при том, что я всё фотографировал на авто. Профессиональный фотограф сможет выжать из люмии ещё больше!
Ну, Погоди! на Nokia 3310 (синтезатор мелодий)
В телефоне Nokia 3310 есть синтезатор мелодий, на нем можно набрать любую мелодию, единственное, есть ограничения на количество нот, всего 50. И звучание не полифоническое, а монофоническое. Полифония появилась в более старших моделях.
В синтезаторе мелодий нужно нажать следующие кнопки:
5* 237 ** 2* 68 **79 68 52 28# 456 #2 *#6 **# 54 2# 456 #2 *# 6 ** #52 #2 34# 62 * 6 **4 #3 23 4# 62 *6 * *4# 2 4 999 *0 84 888 04 #0 5 999
Темп 160
Поиграем в бизнесменов?
Одна вакансия, два кандидата. Сможете выбрать лучшего? И так пять раз.
Линукс в четыре руки. Сетевая OpenArena на двух Nokia N900
Автор: MechNIX
Оригинальный материал
Замечательный аппарат Nokia N900 (в контексте материала — просто Nokia), рассматривался во множестве статей, а в разрезе сетевых игр — информации не очень много. Мне показалось интересным испытать Nokia именно в этом аспекте. В данной статье сделаем акцент на мультиплеер OpenArena — игре, основанной на движке Quake 3. Рассмотрим этапы настройки живых (на 2023 год) репозиториев, получения root-доступа к телефону, запуск игры и сам геймплей. Под катом фото и видео Nokia N900 c шутером OpenArena. Бонусом — увидим DOOM (порт PrBOOM), куда же без него… а так же рассмотрим странное «Q-дерево».
Один в поле не воин, а на двух самураях вполне можно виртуально соперничать.
Добро пожаловать...
Содержание:
Введение;
Инсталляция из репов, настройка сети;
Получения root-доступа по ssh;
Инсталляция шутера OpenArena;
Управление и геймплей OpenArena;
DOOM;
Заключение.
❯ Введение
На миг отвлечемся от серьёзности дерева портов и начнем с несерьёзного предисловия. Мне было нужно наглядно продемонстрировать суть затеи, а так как 4-х рук у меня нет, пришлось смастерить квейковое дерево или «Q-дерево». Это и есть наш шуточный демонстрационный стенд, изображенный в заголовке, дальше будет детальное изображение.
Nokia N900, аппарат, имеющий в качестве основной операционной системы OS Maemo, основанной на Debian Linux, «заточенный» на работу в портативных носимых гаджетах. Соответственно, менеджер пакетов, который будет использоваться apt-get. Самое сложное было разыскать живые репозитории. Методом тестов, проб и ошибок удалось составить свой файлик (кому он нужен для повторения эксперимента, пишите в комментариях, скину). На момент написания статьи все репозитории живые.
❯ Инсталляция из репов, настройка сети
Понятие «репозитарий» звучит красиво, но не правильно, а если правильно, то «репозиторий», но это неестественно и можно сломать язык, поэтому далее будем пользоваться жаргонным «репа», оно привычней.
Итак, файл с репами находится по следующему пути:
/etc/apt/sources.list.d/
После его редактирования необходимо выполнить команду:
apt-get update
Чтобы обеспечить возможность играть в сетевую игру, необходимо чтобы оба телефона были подключены к одной точке доступа WI-FI и находились в одной локальной сети. Все манипуляции проводятся одинаково, на обоих смартфонах. Так выглядят сетевые параметры после подключения.
❯ Получения root-доступа по ssh
Перед установкой OpenArena делаем две подготовительные операции.
Инсталлируем пакет rootsh, позволяющий производить манипуляции от имени привилегированного пользователя-root. Это не хак и не джейл, а штатная процедура получения root-доступа к устройству. Отмечу, что все действия в этой статье проводятся от имени root. Правила безопасности не зря твердят нам не вести ВСЕ действия от привилегированного пользователя, но в данном случае у нас эксперимент, повредить систему не страшно, секретных данных тоже нет. Но все же, от root работать нужно осознанно.
В консоли запустим «sudo gainroot» и установим пакет «rootsh».
Для комфорта настройки установим «openssh-server», позволяющий реализовать удаленный доступ к Nokia по протоколу ssh, и будем управлять от имени «root».
❯ Инсталляция шутера OpenArena
На скриншоте — необходимые пакеты для установки игры:
Сама инсталляция тривиальна.
Установка самого игрового «движка»:
apt-get install openarena
Установка данных и карт:
apt-get install openarena-data
Настройка сетевых параметров в интерфейсе самой игры производится в соответствии с принципом: клиент-сервер (в роли сервера-один телефон N900, в роли клиента-другой). Настройка в интерфейсе игры отражена в видеоролике ниже (на 2:42 видно настройку).
Настройка мультиплеера:
❯ Управление и геймплей OpenArena
Вот как выглядит демонстрационный стенд (Q-дерево):
Спешу поделиться результатом запущенного шутера.
Управление ведется акселерометром, либо кнопками аппаратной клавиатуры. Удалось уловить стандартное в частности для шутеров управление клавишами WASD, прыжок-space, огонь-CTRL (не стандартное), переключение и выбор оружия -1,2,3,4. В процессе игры можно переговариваться текстовыми сообщениями с оппонентом (say).
Игра вызывает весьма положительные ощущения даже в 2023 году. Напомню, что речь идет об аппарате 2009 года. Привык видеть прекрасное и в малом — у меня и игра f29 retaliator (симулятор самолета) под DOS вызывает радость, в режиме HEAD-to-HEAD, даже через нуль-модемный кабель. :) Возвращаясь к рассмотренной OpenArena, скажу: торможений, зависаний, лагов, в целом не отмечено, графика летает и сверкает. В процессе игры, в правом верхнем углу экрана виден счетчик кадров в секунду — FPS. Гляньте, пожалуйста, ролики.
Демонстрация 1:
Демонстрация 2:
❯ DOOM
Следуя челленджу «установи DOOM на это устройство», я не мог этого не сделать. Порт DOOM называется PrBOOM. Установка производится в одну команду и не вызывает сложности.
❯ Заключение
Чем можно завершить статью? Положительно, описанный порт OpenArena — не поделка, полноценный, серьёзный шутер. Играбельно? Да. Не глючит? Да. Приносит радость? Да! Ну и славно!
Прошу поделиться опытом и комментариями относительно подобных игры для OS Maemo, это интересно. :)
Благодарю за внимание. :)
Еще больше новостей и статей в нашем блоге Timeweb Cloud.