Тайна Samsung, которая стоила жизни тысячам смартфонов [Большой и подробный длиннопост про железо]
Для ЛЛ: Samsung накосячили, но в двух словах не описать.
Вообще, я большой любитель экзотических гаджетов и разной диковинки. Порой я мониторю барахолки в поисках чего-то такого, что не продавалось в условной Евросети, а если гаджет попадается нерабочий — то стараюсь его восстановить. Особый кайф мне приносит ремонт материнских плат: объём дофамина от чувства того, что ты только что восстановил устройство, на котором поставили крест более 10 лет назад, просто невероятный!
Недавно мне в руки попал уникальный смартфон-игровая консоль JXD S5800, который при внешней целостности не подавал никаких признаков жизни. После краткой диагностики я сразу же определил виновника, и в рамках этой статьи расскажу вам не только о процессе ремонта уникального устройства и о том, причём здесь Samsung, но и в мельчайших подробностях расскажу об аппаратной платформе типичного смартфона тех лет! Если интересно — жду вас под катом.
❯ Предисловие
Вообще, это уже аж пятая статья про игровые гаджеты в моём блоге. Ранее мы с вами реставрировали плату N-Gage, который я купил из утиля за копейки, изучали аппаратную платформу уникального двухпроцессорного телефона, где уместился аппаратный клон NES и обычный кнопочный телефон, и даже попытались дать новую жизнь единичному прототипу игрового смартфона, которому не суждено было появится на свет...
Будучи увлеченным гиком и любителем поиграть, особое внимание я уделяю нерабочим гаджетам. Иногда я ради фана ремонтирую даже не-комплектные девайсы: например у меня нет ни одной собранной PSP 1000'ой серии, но ради интереса я всё равно изучаю плату, схемотехнику, смотрю как ведёт себя платформа в нештатных ситуациях и просто занимаюсь типичными техногиковскими делами. К слову, если вам интересно — я готов написать подробную статью с полным исследованием схемотехники оригинальной PSP, ну а если тема зайдет— то и материал с разработкой небольшой 3D-игры с нуля для неё!
Недавно я листал авито в поисках чего-нибудь интересного и наткнулся на настоящую жемчужину: игровой смартфон JXD S5800 по цене в 1.000 рублей, где продавец утверждал что отсутствует только аккумулятор...
Я сразу же заказал устройство и принялся ждать. Но по приезду меня ожидал очень неприятный сюрприз: после вскрытия устройства, я обнаружил сорванную пломбу, частично поврежденную антенну и залуженные контакты аккумулятора. Это значит что сюда уже явно когда-то подпаивали «чужой» АКБ (не забыв оплавить часть корпуса здоровенным жалом) и пытались влезть без опыта. ремонта таких устройств. Я написал продавцу и потребовал вернуть мне часть суммы вместо полного возврата, а сам принялся диагностировать гаджет!
❯ Диагностика
Далее начинается самое интересное. После подключения ЛБП, я обнаружил что смартфон не стартует и стабильно висит на потреблении около 20мА. Поскольку гаджет построен на чипсете от MediaTek, я решил подключить его к ПК и проверить стартует ли процессор — если да, то в диспетчере устройств мы обнаружим MediaTek USB VCOM, либо же MediaTek Preloader, а если нет (или повреждены дата-линии USB) — то смартфон никак не отреагирует и потребление останется на примерно том же уровне. Важно понимать что для старта MediaTek'овских и Qualcomm'овских чипсетов не нужна ни оперативная память, ни постоянная: если BootROM чипсета не может прочитать вторичный загрузчик из памяти или проинициализировать DRAM, то он просто падает в аварийный режим и всегда определяется компьютером как QHSUSB_BULK 9008 (это и есть так называемый EDL-режим, часто реализуется замыканием одной из сигнальных линий флэшки на массу), либо MediaTek USB COM Port. Обычно это признак того, что процессор точно живой.
Мне повезло: процессор не только был живой, но и успевал передать управление первичному загрузчику — так называемому Preloader'у, а это значит что ему удалось прочесть данные из флэшки в собственную SRAM. В чипсетах MediaTek загрузка делится на три основных этапа:
BootROM — самый первый загрузчик, физически прожжён в сам процессор с завода и содержит в себе минимальный USB-стек для загрузки DA в RAM, а также минимальную логику для работы с eMMC/UFS/NAND микросхемами памяти и передачи управления следующей стадии загрузки. На этом этапе процессор потребляет не более 50мА и если он висит в аварийном режиме — потребление остаётся константным и не пропадает при отпускании кнопки включения.
Preloader — тот самый вторичный загрузчик. В его задачи входит инициализация DRAM, контроллеров периферии в процессоре, контроллера питания (иногда) и передача управления третьей стадии загрузчика. В Preloader'е содержится таблица ассоциации CID с конфигурацией DDR-контроллера, поэтому при прошивке некорректного загрузчика можно получить тяжело-восстанавливаемый «кирпич».
LK — небольшое ядро, которое загружается до старта Linux. В его задачи входит инициализация дисплея, отображение первичного логотипа производителя (тот, что до анимации), определение причины включения (кнопка, зарядка), определение режима загрузки (обычная система, recovery или тестовый режим), а также реализация протокола fastboot и загрузка ядра системы. Если в процессоре не прожжен фьюз секьюрбута, то небольшим патчем lk можно разблокировать загрузчик (т.е сам lk) любого смартфона.
Из чего мы делаем вывод что аппаратная часть устройства скорее всего полностью живая и возможно дело в прошивке. Бывало у некоторых смартфонов Lenovo на MediaTek такое, что почему-то после 5-7 лет простоя сам по себе стирался загрузчик. Причём логика такого поведения совершенно не ясна — контроллер питания ведь не давал процессору разрешения на старт. Однако при попытке прошить образ на своё устройство, я получал ошибку 4008 S_FT_DOWNLOAD_FAIL — что обычно сигнализирует о проблемах с флэшкой. После попытки прямой записи дампа с помощью фирменной утилиты прошивки, я получил более конкретную ошибку — S_DA_SDMMC_WRITE_FAILED, что означало только одно: eMMC своё отжила.
Вообще, eMMC выходят из строя по разному. Некоторые просто падают в режим read-only, сохраняя данные, но при этом смартфон работает крайне нестабильно и ни с того ни с сего сыпет ошибками в приложениях, некоторые падают в read-only, умудряясь потерять большую часть данных (как в нашем случае), а некоторые продолжают работать до победного конца. Всё зависит от контроллера в самой флэшке, ведь по сути это просто чип NAND-памяти в паре с специальным MMC-контроллером, почти как в MicroSD. Поскольку NAND по своей натуре подвержена постоянной деградации, в её структуре предусмотрены так называемые spare-страницы, где контроллер хранит флаги коррекции ошибок (ECC), а также свою служебную информацию о бэдблоках и степени износа — wear level.
Раньше телефоны использовали NAND (а если отмотать до начала нулевых — NOR, а в 90-х даже EEPROM!) так называемого старого типа. У такой памяти тоже был контроллер, но представлял он из себя что-то типа дешифратора между блоками памяти и чипсетом устройства. За организацию spare-страниц, подсчет степени износа и хранение информации отвечал отдельный NAND-контроллер в чипсете смартфона, который сам по себе не «приговаривал» память, а вся ответственность на сохранении флэшки лежала на драйвере mtd-устройства в системе. И что самое крутое — с помощью специальных команд память можно «освежить»: к примеру в загрузчике u-boot есть команда nand scrub, которая позволяет очистить всю информацию о бэдблоках и коррекции ошибок, и попытаться вернуть чип памяти к жизни.
В eMMC же за этим контроля нет: как заложил производитель чипа памяти в прошивку контроллера - так и будет. И когда-то это сыграло злую шутку с чипами от Samsung...
❯ Ремонтируем
Далее я решил разобрать смартфон и заменить микросхему флэш-памяти. В процессе разборки выяснилось что смартфон не так уж и прост в плане конструктива и инженеры знатно постарались: основная плата предположительно является наследником от референсной платформы MediaTek, судя по нераспаянному 3.5мм джеку, а по бокам расположились платы с кнопками и стиками. Причём правая сторона почему-то подключена шлейфом к левой, и только затем к основной - такое нечасто встретишь в игровой консоли:
Далее я снял защитный экран и мне всё стало понятно: в JXD S5800 использовался печально известный чип памяти Samsung KMK7X000VM-B314. Дело в том, что eMMC производства Samsung с 2012 по 2015 год имела репутацию крайне ненадежной и «похоронила» ни одну тысячу по сути исправных смартфонов. В прошивке контроллера самого чипа памяти был баг с определением уровня износа: Samsung'овские eMMC поддерживали что-то то типа S.M.A.R.T, который умудрялся приговаривать живые и вполне рабочие флэшки задолго до их фактического выхода из строя. Причём делал он это максимально странно: иногда данные удавалось сохранить, а иногда он умудрялся потерять вообще всю информацию и отправить смартфон прямиком в сервисный центр. И этот баг не фиксили годами.
Из-за чипов серии K полегли такие легенды, как Galaxy S3, Galaxy S4, Galaxy S4 Mini, Galaxy S4 Zoom (причем почти все), Lenovo A328, а также бесчисленное количество других смартфонов и планшетов. Доходило до абсурда: Samsung часто используют в своих смартфонах противные виды компаунда и ставят память впритык к процессору, из-за чего феном их снимать рискованно. Поэтому многие мастера просто спиливали неисправную микросхему гравёром подчистую, чистили компаунд и ставили новый, полностью чистый чип памяти с пустой зоной RPMB. Ведь даже если снять живую микросхему с донорской платы, смартфон отказывался с ней работать из-за привязки памяти к процессору...
Рассуждения о дефекте прошивки контроллера так и оставались бы теорией, если бы не ребята из команды Z3x. Они умудрились где-то достать документацию на сервисный режим прошивки контроллеров в eMMC через тест-поинты, сдампить (?) прошивки с рабочих флэшек и начать прошивать контроллеры неисправных чипов. И как бы это забавно не звучало, флэшки внезапно оживали, причём иногда вместе с очисткой RPMB-зоны, что позволяло использовать их для ремонта других смартфонов! Думаю происходило это как раз из-за эффекта схожего с командой «nand scrub» в классических NAND'ах — очищалась таблица бэдблоков, информация об износе, а также сама новая прошивка была более удачной и позволяла «побегать» такой микросхеме ещё несколько лет. И что самое грустное, Samsung не признавали проблемы, предпочитая молча исправить её в ~2015-2016 году...
Собственно, в случае с нашим смартфоном всё немного сложнее. У нас используется не просто eMMC, а eMCP — микросхема, объединяющая в одном корпусе как флэш, так и оперативную память. Дело в том, что смартфоны на чипах MediaTek используют CID флэшки для определения конфигурации DRAM-контроллера. Если CID установленной флэшки в Preloader'е нет, то смартфон просто откажется включаться и выдаст ошибку S_FT_ENABLE_DRAM_FAIL, поэтому нужно подобрать либо такую-же микросхему памяти, либо поддерживаемую хотя-бы одним из прелоадеров, доступных для данного чипсета. Тут то и кроется главная фишка: при желании смартфон можно даже проапгрейдить, просто установив микросхему с большим объёмом оперативной и постоянной памяти, если найти подходящий Preloader.
Микросхемы 2/16 в корпусе BGA163 я не нашёл, поэтому порылся в донорах и обнаружил битый и раздербаненный смартфон DEXP на таком же чипсете и с идентичной eMCP:
Далее я выпаял чип и снял с него остатки шаров с помощью оплётки для снятия припоя. В целом это необязательный шаг, старые шары можно снять и паяльником, но он снижает вероятность появления слишком больших шаров при перекатке.
После этого я взял JIG, установил туда чип и центрировал трафарет, а затем нанес ровным слоем паяльную пасту Mechanic:
Пришло время превратить пасту в шарики: я перекатывал шары на температуре 285 китайских попугаев при минимальном потоке воздуха на фене типа 858D. Имейте ввиду что эти микросхемы памяти относительно нежные и очень не любят перегревов, поэтому снятие, установка и перекатка должны быть относительно быстрыми и с соблюдением адекватного термопрофиля (сказал человек с 858В :)) ).
Какая красота... Просто обожаю смотреть на то, как паста превращается в шарики — это одно из чудес света по техногиковским меркам :)
Далее осматриваем шары на предмет соосности и идентичности высоты. Иногда, если паста нанесена не слишком аккуратно между пинами, один-два шарика могут получится больше или меньше других, что может помешать нормальной установке на плату. В таком случае можно снять неудачные шары и докатать их вручную:
Затем снимаем старый чип памяти с платы. Я грел только сверху при температуре 310гр., при небольшом потоке воздуха, чип начал покачиваться спустя полторы минуты прогрева и снялся без проблем лезвием. После этого зачищаем пятаки от старых шаров с помощью паяльника и маленького кусочка оплетки и отмываем посадочную площадку от флюса:
Теперь наносим флюс с кончика пальца (я использую Amaoe), центрируем чип относительно шелкографии на плате и устанавливаем при температуре 310гр. С современными смартфонами такое скорее всего не прокатит: там без нижнего подогрева делать нечего, а UFS-память крайне нежна к перегреву.
После установки чипа мы прошиваем смартфон. Если Preloader прошился и процесс пошёл — значит чип встал нормально, оперативная память проинициализировалась, а eMMC пережила перекатку и установку на плату. Однако лучше где-нибудь иметь дамп NVRAM любого телефона на 6582, дабы сразу прописать Mac-адрес и IMEI, чтобы не потерять сеть.
И вот — момент истины! Зажимаем кнопку включения и... видим что гаджет включился и полностью работает! Дисплей, тачскрин, кнопки, стик — всё оказалось исправным. Осталось лишь собрать смартфон...
❯ Изучаем
Но я ж не просто так говорил о том, что инженеры постарались и здесь действительно есть на что посмотреть. Поэтому перед сборкой мы по традиции блога изучим аппаратную платформу устройства и начнём с сердца смартфона — чипсета MediaTek MT6582. По правде сказать, этот процессор — прямо таки настоящее инженерное чудо, размером чуть более 1 сантиметра. И внутри себя он скрывает:
Целых 4 основных ядра ARM Cortex-A7, работающие на частоте 1.3ГГц, с поддержкой набора инструкций ARMv7, а также SIMD — Neon.
Одно дополнительное ядро Cortex-R4, работающее на частоте 480МГц для обработки сети и задач Baseband'а, плюс дополнительный DSP сопроцессор на неизвестной архитектуре.. Вопреки распространенным заблуждениям, в большинстве MediaTek'овских чипсетов модем встроен в процессор.
Двухъядерный видеоускоритель Mali-400MP2, работающий на частоте 500МГц. Это довольно серьезный GPU по меркам тех лет и был способен потянуть GTA: San Andreas, или, например, Asphalt 8 с комфортным FPS при разрешении в 800x480.
Контроллер DDR2/DDR3 оперативной памяти, плюс контроллеры eMMC/NAND
Контроллеры USB, I2C, SPI, UART, I2S (для подключения внешних аудиокодеков), ШИМ, а также SD и SIM.
Поддержка MIPI DSI и DBI дисплеев с разрешением до WVGA или даже HD.
И всё это изготовлено по 28нм техпроцессу с общим размером корпуса в 10.16x10.16мм! А ведь это только корпус, сам кристалл ещё меньше...
Вне всяких сомнений, этот чипсет — шедевр технологической мысли, учитывая его размеры... Даже MT67xx уже были заметно больше по габаритам, несмотря на идентичные 4х-ядерные конфигурации.
Чуть ниже скрывается чип eMCP от Samsung, о котором мы с вами уже поговорили. Левее обнаруживается контроллер питания MediaTek MT6323GA. В него входит:
Логика управления режимами питания, а также транзисторная защёлка, которая даёт разрешение на старт.
Watchdog для мониторинга полного зависания процессора и автоматической перезагрузки.
Целых 3 Buck DC-DC понижающих преобразователя для формирования основных шин питания. Первый занимается формированием питания процессора — т.е VCore (~0.8В), второй — формирует дополнительное питание усилителя - VPA, а третий формирует главную периферийную шину — VSYS (3.3В).
Аж 23 LDO для формирования второстепенных шин питания. Именно LDO формирует шины питания цифровой логики VIO (1.8В и 2.8В), питание камеры VCAM, контроллера дисплея VLCD, RF-фронтэнда, USB и других модулей.
Часы реального времени (RTC)
Контроллер зарядки Li-Ion аккумуляторов
Одноканальный моно-усилитель для разговорного динамика мощностью до 0.7Вт класса AB/D
Это просто невероятно крутой функционал для копеечного чипа. Круче только засунуть КП в процессор :)
Под дополнительным экраном скрывается RF-часть устройства. Она не менее интересна, поскольку всего в нескольких чипах скрывается довольно богатый функционал. Первым делом мы видим усилитель мощности VC7584-21, в задачи которого входит усиление 3G-части RF-тракта (верхний и средний диапазон частот). Рядом находится чип VC3318 — если я правильно понял, это усилитель 2G-части (а вернее нижнего диапазона частот — т.н LowBand).
Ещё немного правее скрывается чип MT6627N, который отвечает за Bluetooth, Wi-Fi, GPS и FM функционал смартфона. К слову у него тоже есть своя прошивка и технически это дополнительный процессор.
Чуть ниже скрывается микросхема MT6166V, которая выполняет роль RF-фронтэнда и по сути скрывает в себе всю магию превращения цифровых сигналов в аналоговые. Именно она преобразует аналоговый сигнал с антенны в цифровые данные, которые затем обрабатывает DSP модема, а также она превращает датаграммы в аналоговые пакеты, которые затем уходят в эфир.
Слева расположилась микросхема, которая формирует питание подсветки (определяется по характерной фидбек-обвязке для повышающего DC-DC преобразователя), а также микросхема-свич бендов (?) GPS-тракта (на основе схемы из другого смартфона на такой же платформе, о назначении только догадываюсь).
На дополнительной плате расположился микроконтроллер, который я уж точно не ожидал здесь увидеть — TI MSP430, который как раз и отвечает за опрос кнопок и стиков. Он подключен к процессору через шину I2C и с помощью специального драйвера в Linux выступает дополнительным устройством ввода.
И в целом эта вся аппаратная платформа устройства. Несмотря на отсутствие схемы именно на данный смартфон, опыт показывает что большинство устройств построены на +- схожей референсной аппаратной платформе от производителя чипсета и даже без родной схемы можно провести диагностику и ремонт совершенно неизвестного устройства. Так было во времена кнопочных Nokia, так происходит во времена современных смартфонов Samsung, так будет и в будущем, поэтому без системного подхода в этой сфере никуда :)
❯ Включаем
Ну, раз уж наш смартфон снова работает, то теперь мы можем протестировать его в играх на практике. После загрузке нас встречает кастомный лаунчер, специально оптимизированный под формат игрового смартфона, плюс небольшой набор программ. Среди них есть популярный в прошлом HappyChick (что-то типа RetroArch + репозиторий ромов), а также программа для маппинга аппаратных кнопок на тачскрин — для тех игр, где не поддерживается геймпад.
Моё внимание сразу же пало на очень неплохой IPS-дисплей с разрешением 960x540 — почти как Retina у iPhone 4. Да, сегодня оно кажется небольшим, однако какой-то особой зернистости и дискомфорта не ощущаешь. Матрица отличается не только отличной цветопередачей и большими углами обзора, но и большим запасом яркости подсветки.
В целом, смартфон работает шустро даже сейчас. По прямому назначению его можно использовать без каких либо проблем — он звонит, выходит в сеть (правда уже только 2G), с него можно найти в ВК через Kate Mobile, или использовать Telegram. Несмотря на Android 4.2, с устройством ещё долго можно будет ходить как со вторым или даже основным смартфоном. Но очевидно что главная фишка этого устройства как раз игровые возможности. И здесь с этим всё прекрасно. Например эмулятор NES идёт на полной скорости с адекватной поддержкой всех аппаратных кнопок и даже аналогового стика. Играть одно удовольствие.
Не менее хорошо идут и игры с PS1. Даже тяжелые игрушки по типу Quake II работают без особых проблем и на полной скорости. Изредка может быть небольшая рассинхронизация по звуку, но не более того.
Ну и куда же без нативных игр! S5800 тянет многие релизы своих лет без каких-то особых проблем. NFS MW2012, Asphalt 8, GTA: SA — эти игры идут может и не на максимальных настройках, но всё равно выглядят хорошо и идут с приемлемым фреймрейтом.
Несмотря на то, что на ранних партиях наблюдался баг с залипанием кнопок из-за матричного метода подключения (кто вообще так делает на игровых консолях?!), я считаю JXD S5800 одним из лучших игровых смартфонов из когда либо созданных. Судите сами: удобная эргономика, не самый плохой ход кнопок, наличие обоих триггеров и плавные, беспроблемные стики, тактильно схожие с PS Vita. Поверьте, ни один телескопический геймпад не сравнится с эргономикой монолитного устройства... Ну, разве что Motomod Gamepad :)
❯ Заключение
Вот такая статья у нас с вами получилась. Конечно я понимаю что мои знания в сфере ремонта телефонов очень малы, я плохо понимаю схемотехнику и мне никогда не сравнится с мастерами у которых по 10-15 лет опыта, а моя методика диагностики и подходы к ремонту могут показаться кому-то дилетантскими. Чего уж говорить, я пока даже расковырять и восстановить межслой не могу, ну или катнуть бутер на условном X3 Pro не угрев UFS. Но я всё равно стараюсь и получаю удовольствие от ремонта «для фана», я же всё таки техногик и любитель поиграть и иногда даже что-то написать для диковинных гаджетов :)
А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram-канал «Клуб фанатов балдежа», куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты и щитпостю. А ролики (не всегда дублирующие статьи) можно найти на моём YouTube канале.
Если вам понравилась статья и вы хотите меня поддержать, у меня есть Boosty, а также виджет на Пикабу ниже. А ещё мне можно отправить какое-нибудь интересное железо: устройства на WinCE/WinMobile, китайские кнопочники, китайские подделки на iPhone/Samsung из начала 2010-х, игровые консоли, ретро-ПК железо - всё это я очень люблю и порой пытаюсь поднять даже нерабочие гаджеты :) Всем огромное спасибо!






































































































