Два месяца назад я выкатил сюда пост о том, что в одиночку пишу бесплатный параметрический 3D САПР на Rust и OpenCASCADE. Пост зашел, в ТГ группу пришло пару человек они дали фидбек. И я продолжил в размеренном темпе пилить QymCAD. А поскольку это не единственный мой проект, то ко второму релизу я решил снять видос и на YouTube. Такого хайпа ( в хорошем смысле я конечно не ожидал). Видео залетело в Тг присоединилось куда больше народу чем я мог представить. Вместе с людьми пришла огромная лавина фидбека и багов. С момента первой статьи это уже 3-й крупный релиз (сейчас вышла версия v0.1.1, до этого было еще несколько промежуточных дев-билдов). В общей сложности по наводкам пользователей мы вместе отловили и исправили около 280 багов.
Ниже подробно рассказываю о главных изменениях, где акцент был сделан на двух самых проблемных местах - Эскизах и интерфейсе.
1. Верстак Эскизы полностью переписан с нуля
Эскизы - это фундамент параметрического САПР, и в первой версии они были довольно топорными. По сути, я переписал скетчер заново, превратив его из базового наброска в нормальный рабочий инструмент (чего мне самому кстати хватало):
Примитивы в верстаке Эскиз.
Геометрия как примитивы: Появились полноценные, математически точные сплайны со специальными управляющими ручками (handles), а также эллипсы и дуги эллипсов. Всё это теперь полноценно поддерживает геометрические ограничения и зависимости.
Правильный прямоугольник: Раньше он строился костыльно из четырех отдельных линий. Теперь прямоугольник создается как единый объект (примитив) со своим центром, углом поворота и вспомогательными пунктирными диагоналями. Его удобно таскать за центр, а при изменении размеров он ведет себя абсолютно предсказуемо и не ломает эскиз. Ровно так же как и остальные примитивы (круг, многоугольник, паз)
Инструменты правки: Добавлены функции обрезки (Trim), продления линий (Extend) и смещения/эквидистанты (Offset). Они работают прямо на углах и пересечениях линий с интерактивным предпросмотром.
Свой локальный Undo/Redo: Внутри режима редактирования эскиза появилась своя собственная, пошаговая история отмены и возврата действий. Вот тут ведутся споры кто то жаловался что откатывая изменения находясь где то в соседней детали или сборке, он вдруг видел как пропадало то чего он не ожидал. (Потому что правки могли отменяться в соседнем эскизе). После разбиения истории на Эскизы и Детали. Часть народа начала говорить что пропала сквозная история. Мне самому и так и сяк удобно поэтому надо думать как сделать так чтобы вопросов тут не у кого не возникало.
Настройка раскладки панелей
2. Масштабная переработка UI и гибкая кастомизация панелей
Вторая огромная часть работы - это интерфейс. Вместо жесткого лейаута из первой версии, на который справедливо ругались пользователи, теперь у нас полная свобода настройки рабочего пространства:
Свободное расположение панелей: Теперь панели инструментов можно вручную перетаскивать, менять их размер, группировать (стакать в ряд). Панель инструментов выстроить в одну строку над вьюпортом. Всё, что не влезает, аккуратно прячется под кнопку с тремя точками. Инструменты можно рассортировать или скрыть неиспользуемые.
Менеджер иконок и тем: Добавлен встроенный менеджер иконок. Помимо дефолтной темы появился плоский набор (Flat icon set) с возможностью изменения размера значков. Более того, можно создать свою тему и полностью перекрасить интерфейс в любые кастомные цвета.
«Летающие» поп-апы и единый UX: Инструменты «Эскиз», «Деталь» и «Сборка» приведены к единому стандарту (одна панель, общее контекстное окно, применение на Enter, отмена на Esc). Окна параметров теперь плавно следуют за трехмерной геометрией во вьюпорте при вращении сцены, но их можно в один клик открепить, утащить в любой угол экрана и зафиксировать там.
3. Другие важные изменения в моделировании и архитектуре
Чтобы проект было проще масштабировать и развивать, я разбил кодовую базу на изолированные пакеты (крейты Rust): GUI, эскиз (sketch), деталь (part) и сборка (assembly) и так далее. И тут на самом деле с рефакторингом и уменьшением связанности кода далеко не покончено. Хоть и UI слой вынесен, но все равно пока еще верстаки формируют лайауты внутри себя для отображения. Связанность и дублирование кода остаются большой проблемой. Которую придется решить, до появления еще 3х новых верстаков CAM, Чертежи и документация с видами, верстак для 3д печати.
Итог
Самое крутое для меня - видеть, что люди в нашей Telegram-группе уже начали выкладывать реальные модели, спроектированные с нуля в QymCAD. Когда ты сутками переписываешь код и вычищаешь баги, а потом видишь, как с помощью твоей программы создают осязаемые вещи - это дико мотивирует.
Проект по-прежнему полностью бесплатный, с открытым исходным кодом под лицензией AGPL-3.0.
Огромное спасибо всем, кто шлет пул-реквесты на GitHub, тестирует, пишет содержательные ишью и поддерживает проект копейкой на Бусти/Патреоне/ДонатионАлертс. Вы буквально помогаете делать этот САПР лучше.
Качайте новую версию, пробуйте настраивать интерфейс под себя, тестируйте новый верстак эскизов и делитесь впечатлениями!
Спасибо за ответный пост. Если убрать эмоциональную составляющую, то суть проекта вы уловили верно. Только небольшая корректировка теперь уже для вашей технички:
Debian 13 лежит в основе, а не на самом верху. Именно так, если грубо прикинуть, выглядит стек (сверху вниз):
- ReactOS userland
- Wine
- Xorg / Openbox
- Debian 13
Что касается альфы, то чисто технически вы все что угодно можете назвать альфой, что еще не до конца реализовано. Возможно, вы перепутали это с бетой, когда функционал уже полностью завершен, но остаются критические и не очень баги. Да, вы ожидали увидеть, что здесь будет заявлена поддержка игр, но она здесь не оказалась. Это досадно. Но, как говорится, ваши ожидания -- ваши проблемы.
Дальше ответить не могу, т. к. не совсем понял нападок на CDMAG. Могу лишь сказать, что это обычный технический журнал, аудитория которого сформировалась за год до первой альфы CusDeb OS. Писать там, как мы фиксим баги в CusDeb OS, я не собираюсь.
Разработчики CusDeb OS решили величайшую дилемму современности: «Как запускать Windows-программы, не устанавливая Windows?» Ответ оказался гениально прост — взять ReactOS, засунуть его в Wine, а сверху накрыть Debian. Это как построить дом из пенопласта, обклеить его обоями «под кирпич» и гордо назвать «кирпичным коттеджем».
Особенно умиляет раздел README, где среди функций значится «Direct3D 3–11 поддержка (запланировано после альфа-релизов)». То есть сейчас у вас не то что игры не пойдут — у вас и альфы-то толком нет. Зато в описании уже красуется «бесшовная поддержка Windows-приложений». Бесшовная, как шов на колготках после первого надевания.
Отдельный респект за амбицию: проект на стадии «альфа 1» (вышел вчера, если верить коммитам) обещает за год стать «полноценной альтернативой Windows 10». Ребята, вы хотя бы до состояния «альтернатива Windows 98» доживите — и то праздник будет.
А самое трогательное — это позиционирование: «для тех, чьи привычки сформировались до Windows 11». Видимо, целевая аудитория — это люди, которые до сих пор считают, что «Пуск» должен быть слева, а синий экран смерти — это фича, а не баг. Ностальгия — штука сильная, но не настолько, чтобы терпеть систему, где 32-битная оболочка ReactOS эмулируется через Wine в 64-битном Linux. Это не «Windows-like», это «Windows-сюрреализм».
И финальный штрих: в разделе «Donate» написано, что лучший способ поддержать проект — подписаться на технический журнал CDMAG. То есть вместо того чтобы чинить баги, вам предлагают почитать, как их, возможно, когда-нибудь починят. Гениальный маркетинг.
Вердикт: CusDeb OS — это как веганский бургер, который выглядит как мясной, пахнет как мясной, но на вкус — соя с красителем. Идея благородная, исполнение — сырое, а обещания — как у политика перед выборами. Ставить на виртуалку ради смеха — можно. Ставить на основной компьютер — только если вы ненавидите себя и свой хард.
P.S. Если серьёзно — ребятам действительно стоит удачи. Но пока это скорее «CusDeb OS: The Concept», чем «CusDeb OS: The Product».
Как по мне мы живём в другое время. Время когда ИИ может запилить замену быстрее чем мы будем возиться с эмуляторами. Уже сейчас есть проект https://github.com/storytold на гитхабе, который переписал на rust почти все популярные программы от adobe (включая photocraft вместо photoshop и lightcraft вместо lightroom), замахнулся на офис от мелкомягких (WordCraft с gridcraft (вместо excel)). Да, большинство проектов в альфа-версии, но они уже юзабельны и им можно простить баги т.к. они: - опенсорс (бесплатны и с открытым исходным кодом) - есть под windows и linux (то есть не нужны дополнительные эмуляторы)
Если подобных энтузиастов будет больше то надобность в эмуляции windows отпадёт в принципе.
И да, принцип Парето работает и здесь. 80% пользователей достаточно будет 20% функций конечного продукта. Клиенту пофиг на остальное, знакомый интерфейс и поведение решают.
CusDeb OS — это Win32/Linux-система или, другими словами, новая Windows-подобная операционная система на базе ядра Linux с полноценным Win32-окружением поверх него. Она является своего рода неофициальным экспериментом по разработке Windows на ядре Linux, но также ставит перед собой более практическую и, главное, благородную цель — за год довести до ума систему, которая могла бы предложить достойную альтернативу Windows 10, поддержка которой заканчивается 12 октября 2027 года. По некоторым данным, Microsoft продлила поддержку 10-ки, т.к. пользователи не спешат мигрировать на 11, но окончание поддержки, скорее всего, создаст давление. Таким образом, цель CusDeb OS — предоставить выбор.
Для достижения этой цели CusDeb OS предлагает классический десктоп, напоминающий эпоху до Windows 11, с возможностью бесшовного запуска как Windows-, так и Linux-приложений. И все это без рекламы и навязывания AI- и других сервисов от Microsoft.
Linux vs.and Windows
10 лет назад Microsoft выкатила первую версию WSL для того, чтобы подружить два мира и уменьшить отток пользователей со своей операционной системы на Unix-подобные десктопные альтернативы, в частности Linux-системы. Таким образом, у пользователей Windows появилась официально поддерживаемая возможность запуска Linux-приложений в привычном окружении. Начиная с версии 2, в WSL это достигается за счет запуска ядра Linux внутри легковесной виртуальной машины на базе Hyper-V.
CusDeb OS тоже ставит перед собой задачу подружить два мира, но делает это кардинально другим образом. Вместо запуска Linux внутри Windows система предлагает полноценное Win32-окружение поверх ядра Linux. При этом Windows-приложения здесь считаются гражданами первого сорта, а Linux-приложения могут запускаться с ними бок о бок. Это становится возможным благодаря тесной интеграции Wine в систему.
Кстати, первая версия WSL, выпущенная в августе 2016 года, в своей работе напоминала именно Wine, который реализует Win32 API и транслирует вызовы Windows API в их Unix-эквиваленты на лету в пространстве пользователя, а WSL 1 занимался тем же самым, но наоборот и на уровне ядра. Таким образом, WSL 1 не использовал оригинальный Linux, но начиная со второй версии WSL перешел к запуску Linux-приложений с помощью реального ядра Linux.
Wine
CusDeb OS не может пойти путем WSL 2 и гонять ядро Windows NT в виртуальной машине, — закрытая природа Windows этому успешно препятствует. Поэтому CusDeb OS использует обкатанную прослойку совместимости с Windows-приложениями в пространстве пользователя. Благо Wine за последние 10 лет сильно скакнул в развитии благодаря своим спонсорам в лице CodeWeavers и Valve. Конечно каждый день там делается сильный упор на поддержку игр, но команда CusDeb допиливает Wine для нужд OS в десктопных областях: во взаимодействии с композитным и оконным менеджерами и во многом другом.
CDEX
Это окружение рабочего стола, которое реализует классический десктоп на современных технологиях и разрабатывается как часть CusDeb OS. CDEX копирует ранний Windows — что-то между XP и 7 — и потому прямо на старте кажется хорошо знакомым любому Windows-пользователю, который начинал свой путь в начале 2000-х или обнаружил для себя, что 2000-е были золотой эпохой десктопа.
Название CDEX (CusDeb Desktop Environment X) является оммажем CDE (Common Desktop Environment), которое многие годы было окружением рабочего стола по дефолту в Solaris, HP-UX, IBM AIX, Digital UNIX и UnixWare.
CDEX основан на коде ReactOS — свободной и открытой реализации ядра Windows NT с десктопом. По сути, на данный момент CDEX является слегка модифицированной версией юзерленда ReactOS, адаптированной к работе без ядра ReactOS.
Стоит также отдельно акцентировать внимание на том, что CDEX — это полностью Win32-окружение, которое запускается и работает через Wine. Оно содержит базовые возможности типа рабочего стола, файлового менеджера, панели задач, а также многое другое. Что касается всех интерфейсов для установки и удаления Windows-приложений, то они также на месте. Еще не будет лишним упомянуть, что на панели задач на равных отображаются как Windows-, так и Linux-приложения.
Вместо заключения
CusDeb OS находится на стадии альфа-тестирования и на данный момент предлагает уже очень много: это полноценная live-система, которую можно погонять на виртуальной или реальной машине без установки, оценив ее основные возможности. Если система понравится настолько, что вы захотите ее установить, то такая опция тоже есть. Но помните, что это пока альфа и многие функции еще не реализованы, а те, что реализованы, могут вести себя нестабильно. Тем не менее, наша команда будет рада вашим баг-репортам, которые вы можете оставлять здесь. Амбициозная цель — альтернатива Windows 10 за год — может быть достигнута во многом благодаря тщательному тестированию.
Спойлер: Вы тоже можете купить такой одноплатник за 800 рублей, благо на барахолках их навалом. Ну а как их починить и превратить во что-то полезное, я расскажу в рамках сегодняшней статьи!
По правде сказать, я огромный фанат купить что-то очень дешевое и нерабочее, чтобы затем найти новое применение железу со свалки. Недавно я изучал Авито и наткнулся на тонкие клиенты Dell Wyse 3040 по 800 рублей с нерабочими eMMC. Казалось бы, тонких клиентов на вторичке навалом — но у этого был 4х-ядерный процессор от Intel, неплохой GPU с поддержкой DirectX11, 2 гигабайта оперативной памяти и целых 4 слота под USB. Надо брать!
В этой статье всё как вы любите: диагностика, изучение схемотехники, перекатка и замена флэшки в BGA-корпусе, попытки впихнуть невпихуемое и очень изощренные способы загрузить Linux. Интересно? Тогда жду вас под катом!
❯ Предисловие
Недавно я мониторил барахолки на предмет каких-то необычных ретро гаджетов по типу телефонов, ноутбуков и минипк. В основном они мне интересны из-за возможности погонять на них ретро-игры, запустить экзотические ОС или просто для тестирования демок своих игр, которые я пишу в рамках отдельной серии статей. Неделю назад в моих рекомендациях всплыл некий Dell Wyse 3040: тонкий клиент на 4х-ядерном Intel Atom z8350, который из коробки работает на собственной операционке ThinOS.
В объявлении указана цена за полностью рабочий и укомплектованный компьютер — это не мой случай :)
По сути, это обычный x86 мини-компьютер, который вместо ноутбучного Celeron/Pentium использует планшетный Intel Atom на платформе Cherry Trail: такие Atom'ы можно было найти в дешевых Wintel-планшетах типа Irbis TW85, а также ноутбуках в категории «до 15.000 рублей» в 2015-2020 годах. У большинства таких гаджетов была одна критическая болячка: в качестве накопителя они использовали чипы памяти eMMC из смартфонов, а поскольку ресурс таких флэшек значительно ниже оных в обычных SSD-накопителях, они выходили из строя всего через 2-3 года активного использования. Wyse 3040 тоже использовал eMMC в качестве SSD, из-за чего сотни, если не тысячи экземпляров дожили до наших дней рабочими лишь частично и пошли под списание. Как раз именно такой списанный экземпляр я и решил купить всего за 870 рублей.
Конечно я немного лукавлю насчет "одной единственной болячки". У тех же Irbis'ов летело всё: USB-OTG хост, контроллеры питания, тачскрины, биосы... в общем, это было то ещё удовольствие.
Мой красавец
Когда я получил девайс, он сразу же меня впечатлил: мало того что размером с мою ладошку (как и eBox, о котором я рассказывал в рамках прошлой статьи), так ещё и с полностью пассивным охлаждением, питанием от 5В/2А и целой кучей интерфейсных разъемов. На передней панели расположилась кнопка питания, один порт USB 3.0, один USB 2.0, а также 3.5мм джек для подключения наушников.
В то время как на задней целых два DisplayPort'а, ещё два USB и Ethernet. Существовало несколько разных версий 3040'ого: в базовой из коммуникаций есть только RJ-45 и накопитель объёмом в 8ГБ, а в продвинутой добавили ещё и Wi-Fi/Bluetoth модуль и увеличили объём накопителя аж до 16ГБ. В мои руки попала как раз базовая версия.
После получения, я пришёл домой, подключил компьютер и... увидел сообщение «No bootable devices found". В UEFI-прошивке Dell'ов есть режим самодиагностики, который честно сказал, что не может ничего прочитать с eMMC — а значит она не просто ушла в режим «только для чтения», а вообще полностью посыпалась. Неужто там стоят легендарные чипы от Samsung, которые в своё время досрочно унесли с собой Galaxy S4, S4 Mini, S4 Zoom, S3, Tab 3...
О косячных флэшках Samsung я недавно писал большую статью с практическим восстановлением редчайшей консоли-смартфона на Android. Ссылка в комментариях :)
❯ Разбираем и изучаем
Теперь отремонтировать наш минипк можно только заменив чип памяти на новый, благо сделать это не особо сложно. Для этого сначала нужно разобрать компьютер, что называется, голыми руками — отщелкиваем нижнюю часть корпуса с клипс и разбираем "бутерброд":
После чего перед нами открывается следующая картина:
В глаза сразу бросаются два чипа оперативной памяти типа DDR3 объёмом по 512МБ каждый, LAN-трансформатор, LDO для питания LAN-контроллера и слот M2... казалось бы, можно ставить самый дешевый SATA SSD с «алика» и заканчивать статью, но у этого слота нет ни PCI-E, ни SATA линий — на него выведена шина SDIO для подключения Wi-Fi/BT модуля в старших версиях.
С фронтальной стороны платы нас встречает относительно небольшая система охлаждения, состоящая из радиатора, который отводит тепло и с процессора, и с контроллера питания, и с памяти. TDP у процессора крошечный — всего ~2Вт, поэтому активное охлаждение ему не нужно совсем (а вот его температуры под нагрузкой мы узнаем чуть позже).
Под радиатором скрывается кастомный контроллер питания Texas Instruments SND9039A2, разработанный специально для Cherry Trail. Эти КП используются во всех устройствах на этой платформе, что потенциально несколько усложняет ремонт — те же Bay Trail'ы нередко использовали куда более распространенные и задокументированные КП от AXP.
Дроссель рядом с КП отвечает за единственную фазу питания VCore
КП формирует 6 основных шин питания из шины 5V: 1.15V, 1.25V и 1.05V для питания процессора, 1.35V для питания DDR3 в режиме LV, ещё одна 1.15V для питания видеочипа и 1.8V для общения с периферией. Помимо основных шести DC-DC преобразователей, в КП также есть аж 14 LDO, которые формируют периферийные шины по типу VRTC (дежурка и часы реального времени), 3.3V и 1.2V. За основную шину питания — т.е 5V отвечает другой чип — NCP81231, так что если компьютер не включается — смотрите в первую очередь в его сторону.
В центре платы расположилось сердце устройства — тот самый процессор Atom Z8350, представленный в феврале 2016 года. Концептуально это система на кристалле — по сути весь компьютер выполнен в виде одного крошечного чипа, выполненного по техпроцессу 14нм. Внутри него скрываются:
4 ядра на архитектуре Airmont, способные работать на частоте от 1.4ГГц до 1.9ГГц в турбобусте и имеющие 2МБ общего L2-кэша. Кроме того, ядра поддерживают HyperThreading и являются прямыми наследниками ядер Silvermont, используемых в смартфонах Asus ZenFone и планшетах Asus FonePad. Так что да, чисто технически — этот процессор близкий родственник смартфонных чипов :)
GPU Intel HD Graphics 400, способный работать на частоте до 500МГц и имеющий всего 12 унифицированных шейдеров (даже в GeForce GT710 было 192 унифицированных шейдера, в i3 6100 — 24). Тем не менее, HD Graphics 400 вполне тянет игры из начала нулевых, имеет целых два DisplayPort'а и поддержку DSI-матриц планшетов, умеет декодировать 4K видео и поддерживает DirectX 11.2.
Встроенный контроллер оперативной памяти типа DDR3, плюс контроллер eMMC для накопителя. Интересно то, что SATA в нём вообще не было — что ещё раз подтверждает родство с смартфонными процессорами.
Из внешних шин есть PCI-Express 2.0 1x (да, всего одна дифпара на всю систему), UART, SPI, I2C и SDIO. За звук отвечает I2S контроллер, а за общение с параллельной периферией отдельный GPIO-контроллер.
И всё это с TDP всего в 2Вт!
Круто, да? Рядом с процессором расположились ещё два банка ОЗУ по 512МБ каждый, в сумме дающий нам 2ГБ памяти. В теории объём можно расширить и до 4ГБ, однако это потребует патч SPD-таблицы в UEFI, ведь отдельной SPD EEPROM-ки тут нет. Помимо этого, около процессора можно заметить гигабитный Ethernet-контроллер Realtek RTL8111H, подключенный через единственную дифференциальную пару PCI-Express в процессоре, и аудиоконтроллер ALC5672 от всё той же Realtek.
А ещё чуть ниже можно увидеть SPI-флэшку с прошивкой UEFI — MXIC 25U12873F, рядом с виновником торжества — eMMC-флэшкой HynixH26M41204HPR объёмом в 8ГБ. И именно её нам сейчас предстоит заменить.
Ремонт
Как и во многих других устройствах, в Wyse 3040 используются флэшки в корпусе BGA153. Этот корпус пережил уже целых 3 поколения памяти: сначала в него упаковывали eNAND, затем eMMC, а сейчас во всю используют для UFS. У этого корпуса есть совместимый брат — BGA169, который отличается дополнительными пинами по бокам. Существуют два вида таких чипов:
Собственно сам чип-памяти eMMC, который состоит только из NAND-памяти.
И eMCP, который состоит из бутерброда флэш-память + оперативная память. Такой тип активно использовался в смартфонах и планшетах.
Оба этих типа частично взаимозаменяемы между собой — можно без проблем поставить eMCP в устройство с обычной eMMC на борту (просто пины оперативной памяти подключены не будут), однако обратное делать уже нельзя, иначе устройство останется без оперативной памяти. Перед заменой eMMC, старый чип необходимо выпаять, предварительно намазав под пузо флюс. Я использую AMAOE M53:
Никакого компаунда здесь нет, а плата хоть и толстая, но не особо теплоемкая — так что eMMC легко отлетает за минуту прогрева при 320 градусахна среднем потоке воздуха и без нижнего подогрева.
Плата маленькая, благодаря чему её не «ведёт» при длительном прогреве без нижнего подогрева.
Когда чип начал покачиваться от легкого прикосновения отвертки, осторожно поддеваем его специальным скальпелем и откидываем в ту сторону, где меньше всего обвязки. Но если он слишком упорно сопротивляется — лучше погреть его подольше, иначе есть шанс оторвать пятаки:
Эта гифка — лишь иллюстрация. Никогда не снимайте чип убрав фен, шанс оторвать пятаки крайне высок.
Далее зачищаем посадочную площадку оплеткой или просто паяльником, проверяем все ли пятаки на месте и отмываем площадку от флюса. На некоторых устройствах, например большинстве смартфонов от Samsung, NC-пятаки (никуда не подключенные пустышки) стабильно отлетают из-за сомнительного качества самих плат, так что если NC отлетели — ничего страшного. Должно быть вот так красиво:
Поискав в запасах чипы BGA153, я нашел два одинаковых SanDisk'а по 8ГБ, один из которых я сдул с убитой платы планшета, а также BGA169 чип от Toshiba на 32ГБ с Nokia N8. Чип от N8 я припаять нормально не смог из-за того что он слишком большой для этой площадки, а вот SanDisk'и залетели на плату на ура.
Слева родной чип памяти
Поскольку чипы долго лежали в коробочке без вакуума, ставить их прям так рискованно — есть шанс что на шариках припоя уже образовались окислы, что может нарушить контакт в будущем. Поэтому снимаем старые шары паяльником, центрируем чип в трафарете и не перебарщивая наносим паяльную пасту, не забывая убрать излишки лопаткой. Я использую премиум пасту Mechanic XG50 и всем рекомендую :)
Далее оплавляем припой при температуре ~290-300 градусов. Если сильно переборщить — флюс испарится быстрее, чем припой начнет оплавляться и шары повылетают. Если поставить меньше — шары будут дольше оплавляться. С нагревом чипов памяти нужно быть осторожным — даже eMMC боится перегрева, не говоря уже об очень хрупких UFS, которые снимать нужно обязательно на нижнем подогреве.
Далее капаем немного флюса на посадочную площадку:
И припаиваем чип к плате. Даже если он где-то встал неровно, поверхностное натяжение поставит чип на место, а если его всё таки сдует чуть дальше, чем он должен быть — можно его осторожно поправить скальпелем.
И вот, чип наконец-то установлен! Но, как в известном анекдоте, есть нюанс...
❯ Ставим ОС
После включения, EFI всё также жаловался на отсутствие устройств, с которых можно загрузиться. Однако селф-тест теперь сразу вылетал с ошибкой «Short eMMC read test unsuccessful», что надвинуло меня на мысль о том, что инициализации не происходит.
Я перекатал несколько разных чипов еще 5 раз и эффект изменился только с чипом от Samsung на 4ГБ. И вот тут то я понял: а что, если только UEFI не видит eMMC из-за несовместимости бутпротокола в extCSD? Ведь на схеме не просто так указаны страпы для выбора ревизии памяти. И точно — флэшка Samsung заработала тут нормально. После этого я решил загрузить Linux с USB и проверить /dev/ — и eMMC там определился за счет собственного драйвера для Cherry Trail!
Что такое ExtCSD?
Это специальный конфигурационный регистр в eMMC, который отвечает за управление размером аппаратных разделов Boot, а также протоколом загрузки. Дело в том, что не у всех устройств первичный загрузчик может сам проинициализировать флэшку и загрузить оттуда SPL, некоторые чипы заранее настраивают протокол загрузки в этом регистре и затем побайтно считывают загрузчик с помощью специального механизма. Если ExtCSD настроен неправильно - то устройство просто окирпичится. Касается это Tegra и Atom :)
Далее я поставил обратно чип от SanDisk, загрузился в Puppy и увидел что система запустила проверку разделов с файловой системой ext, что уже очень хороший знак — флэшка успешно инициализируется и читается системой. На этом этапе чип можно пропатчить с помощью специальной утилиты, но дампа extCSD оригинальной флэшки у меня нет :(
В качестве системы, я решил выбрать Debian 12 Bookworm — она не слишком старая и не слишком тяжелая, особенно с рабочим столом Xfce. Установщик сразу увидел eMMC, которую теперь необходимо переразметить — сейчас там остатки Android от планшета, из которого этот чип выпаяли.
После установки компьютер перезагрузился... но вы же не думаете, что всё было так просто? Он снова не увидел eMMC. Дело в том, что в Wyse 3040 кривой UEFI, который не учитывает путь до загрузчика из NVRAM и грузит только стандартный BOOTX64.EFI. Я скопировал его из папки EFI/debian/ в EFI/boot/
И даже после этого UEFI его не увидел, а значит моя теория с тем, что EFI привередлив к ExtCSD флэшки — верна. Поэтому я решил сделать финт ушами и записать на маленькую USB-флэшку только ядро и initrd, перенаправив root на eMMC. Для этого монтируем флэшку и копируем initrd из под Rescue-режима Debian:
mkdir -p /emmc/ mount -o remount,rw /cdrom/ mount -t /dev/mmcblk0p2 /emmc/ cp /emmc/initrd.img /cdrom/
Патчим grub.cfg так, чтобы он указывал на initrd и ядро на флэшке:
menuentry --hotkey=g 'Boot' { set background_color=black linux /install.amd/vmlinuz vga=788 root=/dev/mmcblk0p2 --- initrd /initrd.img }
И загружаемся с флэшки. Как итог — система пошла грузиться и уже через минуту я увидел окно входа LightDM.
Теперь компьютером можно полноценно пользоваться. Debian сразу подцепил все необходимые драйвера, в том числе и для GPU — так что даже аппаратное ускорение интерфейса присутствует. Конечно 2ГБ памяти для современного ПК очень мало, но тем не менее, 4х-ядерный Atom ещё кое-что может!
Например, можно с некоторыми лагами серфить современный интернет. Я спокойно зашел на свой профиль на Хабре дабы поностальгировать со статей 2023 года. И мне это удалось сделать, даже скроллинг почти не тормозит.
Драйвера Mesa также подтянулись сами, благодаря чему работает WebGL. Помимо 3D, также есть аппаратное ускорение видео, благодаря чему из такого минипк можно сделать мультимедийный центр.
А ещё этот малыш даже игры тянет! В OpenArena мы получаем 40-60 кадров на большинстве локаций в 800x600... результат конечно не супер крутой (все таки это игра на базе движка Quake 3), но тем не менее в TuxRacer или эмуляторы ретро-консолей поиграть можно :)
При максимальной нагрузке, процессор едва греется до 55 градусов — так что температурный режим у него максимально безопасный и думаю он никогда не начнет троттлить и не выдаст низкий уровень на пин PROCHOT при своевременном обслуживании :)
Что такое PROCHOT?
Это специальный сигнал на всех процессорах Intel, который сигнализирует о перегреве самого процессора или зоны VRM.
Ради интереса, я погонял его в бенчмарке sysbench cpu, где он набрал 1476 попугаев. Это результат примерно в два раза хуже чем у Core 2 Quad Extreme Q9300 и в полтора раза хуже чем у Pentium G4400. Для планшетного процессора результат отличный, Intel N95 с гордостью перенял эстафету экономичного, но достаточно шустрого процессора :)
Учитывая неплохую производительность и минимальное энергопотребление, вас наверняка может заинтересовать перспектива использования этого минипк в качестве SBC. И он вполне для этого годится! На плате есть пятаки для отладочного порта, где выведено сразу несколько шин I2C, UART и JTAG. К I2C можно «достучаться» с помощью i2c_dev, а к UART'у через обычный ttyS.
Более того, путем небольших вмешательств в плату можно взять линии PCI-Express с сетевого контроллера для подключения внешней видеокарты или накопителя, а питание для внешних дисплеев и прочей периферии можно попробовать взять прямо из шин питания компьютера. Например 3.3v можно взять от LDO, который формирует IO-питание LAN-контроллера — у него запас аж 3А, так что хватит с головой :)
Так что лично я считаю, что Wyse 3040 — прекрасная альтернатива Raspberry Pi 2/3 и OrangePi Zero/PC, которые сейчас можно найти на авито по схожей цене, а иногда даже и выше. А вы?
❯ Заключение
Вот такой интересный компьютер я купил всего за 800 рублей. Пару часов времени, немного паяльной пасты, трафарет и фен — и вот компьютер по цене пиццы уже работает и радует меня как маленький домашний сервер с минимальным потреблением. И ведь таких экземпляров на вторичке сотни, и каждый из них можно использовать для организации медиацентра, мини-NAS, сервера или, если очень постараться, и накатить Windows, даже машинки для ретро-игр. А что думаете вы? Какие применения могут быть у такого 4х-ядерного компьютера? Пишите свое мнение в комментариях!
Весь вечер, мой рабочий стол выглядел так :)
В качестве тестовых машин, мне было бы интересно пощупать что‑то ещё из семейства Nvidia ION/Radeon Xpress Graphics/VIA Chrome9 HC/Trident Blade. Если у кого‑то есть всякие интересные тонкие клиенты или ноутбуки на прикольном железе, или что‑то AMD'шное времен 939/462 — пишите в ЛС, обязательно сделаю контент!
Олды блога могут вспомнить мою демку про самолетики. Возможно скоро будет статья про куда более крутую игру для ретро компьютеров и возможно даже PSP и PS2!
Ну а я надеюсь, что вам было интересно. Подписывайтесь на блог, чтобы не пропускать новые статьи каждую неделю! А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram‑канал «Клуб фанатов балдежа„, куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты. А ролики (не всегда дублирующие статьи) можно найти на моём YouTube канале.“»
А если вы хотите что‑нибудь подарить из железа и увидеть о нём статью — пишите мне в Telegram. Меня очень интересуют самые разные гаджеты: начиная от игровых консолей и любых связанных с геймингом устройств, телефонов, смартфонов, КПК, заканчивая ретро‑компьютерами и ноутбуками. Кто знает, может героем следующейподобной статьи окажется ноутбук из 90-х?:‑)
Особенно сильно я люблю ковыряться в ноутбуках из начала 90-х. Источник
После обзоров устройства не продаются, а остаются в моей коллекции. Когда‑нибудь я хочу сделать музей, где к каждому устройству можно будет приложить QR и почитать мою статью. Кто знает, вдруг на следующей неделе я также подробно расскажу про девайс из вашей юности?:)
Кстати, у меня есть GameBoy Advance SP, под который я очень хочу написать игру. Однако мой экземпляр был залит водой и кофе. Может у кого‑то есть донор с дохлой платой, откуда я смог бы взять контроллер питания? У меня AGS-101.