monobogdan

monobogdan

Топовый автор
На Пикабу
Дата рождения: 25 сентября
ridiculsk8 ArsenVodkin user10153509
user10153509 и еще 99 донатеров
156К рейтинг 4705 подписчиков 1 подписка 536 постов 479 в горячем
Награды:
Пикабу 17 лет!5 лет на Пикабу За киноманство За участие в Авторской неделеболее 1000 подписчиков Высокий разум
317
TECHNO BROTHER

Как я отремонтировал 32-х летний ноутбук с кафедры университета и для чего он мне нужен в 2026'ом⁠⁠

Осторожно: В этой статье всё как вы и любите — разбор схемотехники и компонентной базы, диагностика устройства вообще без схемы и тестирование софта — в общем, техногикам обязательно к прочтению!
Недавно мне написал читатель Илья и предложил подарить крутейший ноутбук родом из далекого 1994 года — Mitac SLT486DLB на базе редкого 66-мегагерцового процессора Cyrix Cx486DX2 и аж с четырьмя мегабайтами оперативной памяти. По его словам, ноутбук много лет назад использовался на кафедре университета на дальнем востоке, и после списания он годами валялся где-то на складе, совершенно никому не нужный...

А списали его не просто так — у него было короткое замыкание по главной шине питания, выбитый предохранитель, следы не очень аккуратного ремонта на входной цепи и конечно-же, проблемы с матрицей. Но всё это мне удалось починить всего за 3 часа — и теперь он получил вторую жизнь! Зачем мне нужен ноутбук, который старше меня на 7 лет? Читайте в статье!

❯ Предисловие

В начале 90-х ноутбуки были совершенно другими. В те годы это были полноценные ПК, которые работали на обычных десктопных процессорах (нередко в сокетах), поддерживали апгрейд оперативной памяти с помощью специальных модулей (как SIMM, так и проприетарных), и в них даже можно было ставить карты расширения через специальный разъём PCMCIA (который в свою очередь является частным случаем ISA и PCI). Огромной популярностью пользовались дешевые ноутбуки из Тайваня, которые можно было купить в базовой конфигурации всего за ~1.200-1.500$ (на момент написания статьи это ~2.728$) — и это было чуть ли не в два раза дешевле, чем брендовые устройства от Compaq/IBM.

Официальная брошюра Compaq. Он может быть вашим всего за 2.899$ :))

Официальная брошюра Compaq. Он может быть вашим всего за 2.899$ :))

Стремительный рост полупроводниковой промышленности в Тайване уже позволял делать свои клоны процессоров Intel, чипсеты собственной разработки для 386 и 486'ой платформы, и даже SVGA-видеокарты. В то время как большая UMC производила сами чипы, относительно небольшие производства собирали готовые ноутбуки: сначала проектировали какое-то универсальное шасси (корпус, клавиатура) и относительно универсальную материнскую плату (обычно по референсу от Intel), затем по запросам заказчика (оным обычно был бренд типа Roverbook) кастомизировали её (могли добавить модем, дополнительную память модулем или поставить цветной TFT-экран вместо монохромного STN) и после сборки устройства наклеивали шилдик нужного бренда. За счёт объёмов производств, высокой степени унификации и небольшой экономии на материалах удавалось добиться минимальной цены по сравнению с японскими Toshiba, немецкими Siemens и американскими Compaq.

Одним из многих таких «китайцев» оказался и наш сегодняшний ноутбук SLT486DLB, выпущенный компанией Mitac в далёком 1994 году. Недавно мне написал читатель Илья и предложил подогнать крутой ретро-ноутбук. По его словам, устройство много лет трудилось на кафедре некоего дальневосточного университета, после чего вышло из строя, было успешно списано на склад и валялось там вплоть до 2026 года. Илье было очень интересно узнать что же находится на HDD ноутбука — и он даже попытался запустить его от ЛБП, запитав контакты аккумулятора. Но устройство не подавало признаков жизни, и поэтому оно отправилось ко мне на реставрацию.

Помните КПК и коммуникаторы Mitac Mio из нулевых? Вот это они и есть :)

Вот он, красавец!

Вот он, красавец!

Когда я распаковал посылку, я искренне удивился от состояния ноутбука. Ему уже стукнуло 32 года, он старше автора статьи на 7 лет, а выглядит почти идеально! Ни царапинок, ни особых следов вскрытия отверткой, ни сломанных петель... всё было почти как с завода. Даже все пластиковые элементы были на месте!

Ути какая прелесть! Обратите внимание что ноутбук включается с тумблера. ACPI еще не было, а APIC поддерживался далеко не везде.

Ути какая прелесть! Обратите внимание что ноутбук включается с тумблера. ACPI еще не было, а APIC поддерживался далеко не везде.

Особый интерес у меня вызвала мышка. Олдовые читатели могут вспомнить, что полноценные тачпады начали массово появляться в ноутбуках лишь ближе к концу 90-х, а до этого чаще можно было встретить различные трекболы и трекпоинты как на ThinkPad'ах. У моего экземпляра тоже был трекбол — но не простой, а отдельно выезжающий, с ЛКМ и ПКМ :)

По разъёмам всё тоже было просто супер. Целых два COM-порта для подключения периферии (в те годы они были вместо USB), LPT для принтера, VGA для внешнего монитора (причем изображение можно выводить на обоих экранах сразу), PS/2 для мышки и клавиатуры, и кастомный порт для подключения док-станции. Спереди снизу также находился вышеупомянутый PCMCIA, используемый для подключения карт расширений. Из внешних интерфейсов был Floppy-привод и модем, и кроме того, жесткий диск можно было менять «на лету» — он был быстросъёмным.

Док-станция позволяла увеличить число портов чуть ли не в два раза. Там уже и SCSI мог быть, и дополнительные COM-порты, и возможно даже второй LPT :)

Главная головная боль в таких ноутбуках в наши дни — это проприетарные разъёмы питания. Дело в том, что в те годы блоки питания ноутбуков иногда совмещали в себе ещё и зарядники NiMH аккумуляторов, из-за чего приходилось делать не обычные 2-pin разъёмы, а как минимум 4-pin, где к VIn и массе добавляется ещё VBat (плюс аккумулятора) и VSense (NTC-резистор на аккумуляторе). Из-за этого подобрать подходящий блок не представляется возможным и остается либо припаять современный разъём, либо подключать питание с помощью Dupont-проводов для Arduino, либо пытаться запускать от лабораторного блока питания с контактов АКБ.

Конечно же сразу после осмотра мне захотелось попробовать его включить. Я прозвонил разъём питания и контакты АКБ на предмет наличия явного КЗ, и не обнаружив проблем, подключил ЛБП с током 12В/1А. Ноутбук молчал, потребления висело на нуле, на тумблер реакции не было — а значит пора его разобрать и изучить входные цепи питания!

❯ Разбираем

В отличии от многих современных ноутбуков, SLT486DLB разбирается довольно просто: необходимо открутить 5 винтов с обратной части корпуса, и два винта со стороны топкейса, после чего крышку вместе с топкейсом можно отсоединить от поддона. Интересно что для апгрейда ничего разбирать не нужно — для замены оперативки или установки модема необходимо было лишь снять пластиковую панель чуть выше клавиатуры.

После разборки, в первую очередь в глаза бросается процессор устройства. Сам по себе 486'ой в 1994 году считался отличным и более чем актуальным процессором, особенно в версии DX2/DX4 с удвоенным/учетверенным множителем, но сборщики ноутбуков редко использовали чипы именно от Intel, предпочитая более бюджетные клоны от AMD и Cyrix. И именно Cyrix Cx486DX2/66 здесь у нас и стоит, который скрывает в себе:

  • Одно 486-совместимое ядро, способное работать на частоте в 66МГц при напряжении в 3.4В-3.6В. Изначально 386/486 работали при напряжении в 5В, однако чуть позже были разработаны экономичные версии для работы с напряжением ~3.3В. Интереснее всего было то, что установка 3.3В процессора в 5В материнку без переключателя может легко спалить дорогой чип, а 5В процессор в 3.3В материнке без перестановки перемычки банально не заработает.

    В современных процессорах всё по другому — там ядра работают при напряжении ~0.8В, а входное напряжение может программно изменяться драйвером в зависимости от нагрузки на процессор.

  • Достаточно мощный FPU — модуль для обработки чисел с плавающей точкой. Собственно именно в этом и было главное отличие 486DX от SX — в SX FPU не было (и некоторые биосы пытались его эмулировать за счет аппаратных исключений), из-за чего шёл далеко не весь бизнес-софт и игры.

    Интересно что именно на FPU сопроцессорах Cyrix построила себе карьеру до появления 5x86.

  • 8КБ L1-кэша для инструкций и данных. Да, это очень мало, но на практике кэш значительно повышел производительность по сравнению с процессорами без оного.

  • И всё это на огромном техпроцессе в 650 нанометров! В целом, при большом желании, 486 в любых модификациях могли бы производить в РФ уже сейчас.

При этом процессор здесь в сокете, так что при желании его можно вытащить и заменить на Intel 486DX4, Am486 или даже Pentium Overdrive. Круто, да? :)

Достаточно интересно реализовано питание ноутбука. Всего в устройстве три основных шины питания:

  • VIn, от 12В до 18В, формируется либо из VBat (если подключен только АКБ), либо из VChg (если подключен БП).

  • VCore, от 3.4В до 5В (настраивается), формируется маленьким DC-DC преобразователем левее процессора.

  • VSys, 5В, основная и самая главная шина в устройстве, которая питает всю периферию. Находится чуть ниже процессора.

Как мы с вами видим, VCore и VSys формируются отдельными простейшими DC-DC преобразователями на базе LT494, которые в случае поломки очень легко продиагностировать и починить. Ну а если модуль ремонту не подлежит, то его можно заменить на какой-нибудь DC-DC с LM2596S с Озона :)

TL494, силовой ключ, диод Шоттки, танталовый конденсатор, катушка индуктивности и предохранитель... Идеальная схема, сервисникам не нужно было прошивать ШИМки, проверять каждую фазу питания и думать «а почему у меня мосфет сгорает?!» :)

TL494, силовой ключ, диод Шоттки, танталовый конденсатор, катушка индуктивности и предохранитель... Идеальная схема, сервисникам не нужно было прошивать ШИМки, проверять каждую фазу питания и думать «а почему у меня мосфет сгорает?!» :)

Рядом с тумблером расположилось 4МБ оперативной памяти типа EDO RAM и разъём для установки дополнительного модуля (до 20МБ), микросхема EEPROM с прошивкой BIOS, RTC-часы Dallas DS12885S, а также набор перемычек и разъёмы для подключения других типов дисплеев. Плата поддерживает DSTN-монохромные, DSTN-цветные и TFT-цветные матрицы, в моём экземпляре стоит монохромная.

Чуть правее расположилась буферная логика, разъем PATA для подключения жесткого диска, а также шлейфы топкейса и подсветки дисплея, и чип AMI MegaKey — это мультиконтроллер на базе МК Intel 8042. Да, мульт нужно было прошивать даже в 1994'ом :))

Мультиконтроллер обрабатывал не только клавиатуру, но и управлял линией A20 процессора (необходимой для перехода в 32х-битный режим), а также энергосбережением.

Внимательные читатели могли увидеть кварц 14МГц — это опорный кварц всех ретро-ПК.

Внимательные читатели могли увидеть кварц 14МГц — это опорный кварц всех ретро-ПК.

Основная логика находится с обратной стороны платы. Здесь мы можем увидеть северный мост ALi M1429 в связке с M1431. Северный мост подключен напрямую к процессору через параллельную шину типа 8080 (никакого FSB с его GTL там ещё не было, всё также просто, как в Спектруме), а в его задачи входит:

  • Контроллер DRAM-памяти, который отвечает за инициализацию и работу с оперативной памятью. Контроллеры SDRAM появились в десктопных процессорах только через 3 года — и только в Cyrix MediaGX, а массово интегрировать их в десктопные процессоры начали лишь ближе к 2010 году.

  • Контроллер L2-кэша. Да-да, в те годы L2 распаивали отдельно от процессора в виде маленьких банков памяти типа SRAM, причем более поздние Pentium'ы могли работать с такой SRAM напрямую. Именно от объёма L2 зависела итоговая производительность системы — чем больше, тем лучше.

  • Контроллер шины VLB для видеокарт. Вот тут важная ремарка: помните я говорил о том, что у 486'ого обычная параллельная шина, к которому можно хоть ULA от спектрума при большом желании подключить? Так вот: видеокарта была самым требовательным к пропускной способности устройством из-за постоянно растущих разрешений и цветности экрана, и использования софтварного рендеринга для отрисовки графики.

    Инженеры подумали и решили: «зачем нам подключать видеокарту через медленную ISA, если можно подключить её напрямую к параллельной шине процессора?». И подключили, от чипсета в свою очередь требовалась только грамотная реализация арбитража шины.

  • Контроллеров шины ISA. Ну, тут все по классике лишь с тем замечанием, что с появлением PCI, контроллер ISA переехал в хаб — аккурат к USB, COM и прочим ништякам.

  • Периферия IBM PC. Тут классика, для работы ПК необходим был контроллер прерываний, аппаратный таймер, PIO-контроллер — тут это всё уместили в один небольшой чип.

Таким образом, набор микросхем уменьшился с 5-6 специализированных Intel'овских чипов до двух.

Чуть левее чипсета можно увидеть чип ICS AV9154 — это клокер, или PLL-контроллер, который брал на входе 14МГц от кварца, и формировал из них частоту шины (~33МГц, PLL в процессоре должен был сам умножить её на 2 и получить 66МГц). Самое интересное то, что буквально за пару лет до появления этого ноутбука, процессоры тактировались напрямую от кварцевых резонаторов. Ни о каких PLL'ках и речи не шло :)

В своё время, Acer производила не только ноутбуки, но и всю обвязку для них, включая чипсеты. ALi был R&D подразделением Acer и расшифровывался как Acer Laboratories.

В 2000-х ALi отделился от Acer'а, после чего его купили Nvidia, которые в свою очередь тоже делали чипсеты.

Чуть левее расположился легендарный видеоадаптер Cirrus Logic GD6440, который использовался во множестве ноутбуков тех лет. Помимо стандартной поддержки VGA/EGA/CGA/MDA, он также умел аппаратно ускорять отрисовку 2D-графики (BitBLT, LineTo, Fill) и выводить изображение на параллельные матрицы с технологией двойной развертки (о ней чуть позже), причем параллельно с VGA. Как вы уже могли понять, GD6440 поддерживал как монохромные дисплеи, так и цветные.

Рядом с видеоадаптером расположилось около 1МБ видеопамяти, два COM-трансивера ADM241LJR, а также контроллер PIC P4020, отвечающий за COM/LPT.

Рядом с слотом PCMCIA расположился чип Fujitsu DB86082, который в свою очередь выполняет роль контроллера этой шины.

И... это вся плата! Как мы с вами видим, аппаратная платформа ноутбука максимально стандартизирована, и, в отличии от Toshiba, китайские производители ноутбуков не занимались разработкой чипсетов и прочей логики сами, а просто распаивали уже готовые и проверенные времени аппаратные платформы, что заметно повышает их ремонтопригодность по сравнению с проприетарными японскими ноутбуками.

❯ Ремонтируем

Итак, КЗ нет, питание есть, но потребление устройства висит на нуле — а значит пора диагностировать основную шину питания устройства — то есть VIn. Внимательные читатели уже могли заметить на прошлых фотографиях следы прошлой попытки ремонта — кто-то перепаивал диод Шоттки, немного оплавив соседний разъём.

Этот диод включен в цепь выбора источника питания и нужен для того, чтобы АКБ не отдавал ток если подключен блок питания. Диагностику необходимо было начинать не с него, а с проверки предохранителя около тумблера кнопки включения, который оказался в обрыве.

На стороне выбора PowerPath'а всё было хорошо — транзистор не пробит, диод в норме, КЗ нет. Зато КЗ было уже после предохранителя — и это уже дурной звоночек. Для опознания виновного, я выставил на ЛБП ток 1В/1А и подключил его сразу после предохранителя — плата начала потреблять около 200мА (чего быть вообще не должно), а виновником оказался танталовый конденсатор на DC-DC преобразователе для шины питания 5В.

Классика. Эти пузатые танталы от наработки и возраста обожают превращаться в перемычку между плюсом и землей, вызывая КЗ в самых ответственных узлах. Тантал там совершенно необязателен, поэтому вместо него я припаял обычный электролит идентичного номинала.

При перепайке стоит проявить осторожность — пятаки у маленьких плат очень хрупкие из-за возраста.

При перепайке стоит проявить осторожность — пятаки у маленьких плат очень хрупкие из-за возраста.

Как я уже говорил ранее, оба преобразователя съёмные, так что при необходимости их можно заменить на более современные аналоги. Но в целом за TL494 — респект :)

После замены предохранителя и конденсатора, короткое замыкание с VIn ушло, а значит можно попробовать включить ноутбук. Минимальный ток при котором он способен работать — 14В/1А, меньше — начинает протяжно пищать спикером о проблемах с питанием.

Он включился!

Он включился!

Поскольку оригинальную логику выбора PowerPath мне не удалось заставить работать, а аккумулятора/оригинального БП у меня все равно нет, я кинул перемычку с VBat на VIn. Таким образом у нас остается и защита от переполюсовки, и от КЗ, и при этом ноутбук работает без проблем :)

Одна из самых страшных болячек ретро-компьютеров — это NiMH аккумуляторы, которые начинают течь щелочью и пожирать дорожки с страшной силой. Мне недавно Toshiba Satellite 100CS подарили, где батарейка Varta уже успела наделать делов и пожрать половину дорожек :(( А так хотелось старую Тошибу :)

Поэтому берем в зубы немного уксуса и очищаем контакты АКБ, которые пока ещё не съело полностью:

Подключаем матрицу, топкейс, включаем ноутбук и... видим что верхняя часть экрана пошла полосами. Но это не критично и не повод приговаривать матрицу. Дело в том, что эти дисплеи работали по технологии двойной развертки, о которой я говорил выше: чтобы повысить частоту обновления пассивных матриц (у которых время обновления пикселя могло составлять огромные 300мс — больше четверти секунды!), производители делили один дисплей на две половинки, где каждая половина была как-бы сама по себе. При этом видеокарта одновременно обновляла строку верхней половинки (пины UD0-UDx) и нижней (LD0-LDx), из-за чего неисправный шлейф мог давать корректную верхнюю часть картинки и некорректную нижнюю.

Какая ламповая CCFL подсветка!

Какая ламповая CCFL подсветка!

Но шлейф — не наш случай, поскольку картинка с обеих сторон цельная. А значит мы разбираем крышку, снимаем дисплей, на всякий случай перещелкиваем коннектор матрицы и начинаем бешено крутить крутилку контраста. Дело в том, что любым матрицам (и активным, и пассивным) для вывода пикселей необходимо так называемое BIAS-напряжение — грубо говоря, это питание самих «пикселей». Если контраст понизить и «прогреть» пиксели — зачастую полоски пропадают и изображение нормализуется. Такие вот приколы у 30-летних дисплеев :)

Плата с инвертором ламп и схемой генерации BIAS-напряжения. В те годы регулировка яркости и контраста была полностью аналоговой и механической.

Плата с инвертором ламп и схемой генерации BIAS-напряжения. В те годы регулировка яркости и контраста была полностью аналоговой и механической.

Собираем ноутбук, закручиваем оставшиеся винтики и переходим к тестированию.

❯ Включаем

После включения нас встречает меню POST в BIOS'е. Прошивка успешно обнаружила все 4 мегабайта памяти (это было маловато в 1994 году), процессор Cyrix CX486DX2, 1.44МБ флоппик, а также VGA/PGA/EGA адаптер.

Заходим в BIOS и используем невиданную штуку — автоопределение геометрии жесткого диска. Сначала BIOS упорно не хотел видеть HDD, но после нескольких переподключений всё же увидел и выдал нам объём — целых 250МБ. Неплохой объём для 1994 года.

Сохраняем настройки, перезагружаемся и видим ламповый экран загрузки Windows 95. HDD уже больше 30 лет, он немного уставший, но винду с 3-ей попытки всё же загрузил без проблем.

Ооо... как же необычно выглядит рабочий стол Windows на монохромном дисплее! И казалось бы, мне, как человеку 2001 года выпуска, монохромные дисплеи должны казаться чем-то архаичным и совершенно нечитабельным. Но тут матрица ощущается чуть ли не как E-Ink дисплей — всё отлично читается, глаза не устают, а разрешения 640x480 хватает с головой! На ноутбуке действительно обнаружились данные из университета — презентации, MS Office, личные папки студентов или преподавателей... в общем, устройством пользовались до последнего :)

А ещё на ноутбуке стоял Delphi 2.0, так что можно предположить что ноутбук был в каком-то техническом университете. Читатели из дальнего востока, если вы знаете что это за универ может быть, напишите в комментариях!

Ну а зачем этот красавец нужен мне? Всё просто — я люблю давать новую жизнь той технике, на которой оригинальные владельцы уже давно поставили крест. Казалось бы, этот ноутбук одним указом мог отправиться не в мои руки, а куда-то на свалку, но судьба распорядилась иначе — и у него появился ещё один шанс на жизнь :)

А ещё я хочу написать игру для BIOS'а с нуля — то есть игра сразу включает в себя драйвер видео, дисково подсистемы, ввода, звука. И этот ноутбук потенциально может стать отличной машиной для тестов!

❯ Заключение

Вот таким был «дешевый» ноутбук из 90-х годов. Максимальная унификация компонентной базы, монохромный дисплей, 4МБ оперативной памяти и предтоповый процессор... Mitac SLT486DLB был настоящим чудом инженерной мысли и по праву заслуживает место в моей коллекции крутых ретро-гаджетов. И не только как устройство, которому я дал новую жизнь, но и как ноутбук с своей собственной историей — ведь когда-то он обучал не одно поколение студентов!

В качестве тестовых машин, мне было бы интересно пощупать что‑то ещё из семейства Nvidia ION/Radeon Xpress Graphics/VIA Chrome9 HC/Trident Blade. Если у кого‑то есть всякие интересные тонкие клиенты или ноутбуки на прикольном железе, или что‑то AMD'шное времен 939/462 — пишите в ЛС, обязательно сделаю контент!

Олды блога могут вспомнить мою демку про самолетики. Возможно скоро будет статья про куда более крутую игру для ретро компьютеров и возможно даже PSP и PS2!

Олды блога могут вспомнить мою демку про самолетики. Возможно скоро будет статья про куда более крутую игру для ретро компьютеров и возможно даже PSP и PS2!

Ну а я надеюсь, что вам было интересно. Подписывайтесь на блог, чтобы не пропускать новые статьи каждую неделю! А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram‑канал «Клуб фанатов балдежа„, куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты. А ролики (не всегда дублирующие статьи) можно найти на моём YouTube канале.“»

А если вы хотите что‑нибудь подарить из железа и увидеть о нём статью — пишите мне в Telegram. Меня очень интересуют самые разные гаджеты: начиная от игровых консолей и любых связанных с геймингом устройств, телефонов, смартфонов, КПК, заканчивая ретро‑компьютерами и ноутбуками. Кто знает, может героем следующей подобной статьи окажется ноутбук из 90-х?:‑)

Особенно сильно я люблю ковыряться в ноутбуках из начала 90-х. Источник

Особенно сильно я люблю ковыряться в ноутбуках из начала 90-х. Источник

После обзоров устройства не продаются, а остаются в моей коллекции. Когда‑нибудь я хочу сделать музей, где к каждому устройству можно будет приложить QR и почитать мою статью. Кто знает, вдруг на следующей неделе я также подробно расскажу про девайс из вашей юности?:)

Фото Nokia 9300 с&nbsp;сайта mobile&#x2011;<a href="https://pikabu.ru/story/kak_ya_otremontiroval_32kh_letniy_noutbuk_s_kafedryi_universiteta_i_dlya_chego_on_mne_nuzhen_v_2026om_14502828?u=http%3A%2F%2Freview.com%2F&t=review.com&h=b39b8771d6642d0c50679b8d378f38bfe95d5f66" title="http://review.com/" target="_blank" rel="nofollow noopener">review.com</a>

Фото Nokia 9300 с сайта mobile‑review.com

Кстати, у меня есть GameBoy Advance SP, под который я очень хочу написать игру. Однако мой экземпляр был залит водой и кофе. Может у кого‑то есть донор с дохлой платой, откуда я смог бы взять контроллер питания? У меня AGS-101.

Что думаете об SLB486DLB?
Всего голосов:
Что думаете о статье?
Всего голосов:
Показать полностью 33 2
105
TECHNO BROTHER

32х летний ноутбук не просто включается, он реально работает⁠⁠

Этот ноутбук много лет проработал в кафедре некоего университета в Владивостоке. Затем у него пробило конденсатор в главной шине питания, его никто не смог починить (хоть и пытался) и он валялся никому не нужный на складе... совсем :((

Пока в 2026 году, читатель Илья не решил мне его подарить под ремонт и вытаскивание данных с HDD. Собственно ремонт занял 3ч, работает почти все, включая клавиатуру, дисплей, память и HDD. Единственный момент - пока не работает флоппик, но это решаемо.

На ноутбуке стоял Delphi 2.0 - язык и среда для написания приложений под Винду. Как думаете, учитывая что там стоял Delphi, из какого уника ноутбук? :))

?
Всего голосов:
Показать полностью 3 1
56
TECHNO BROTHER

Он улетел... Но обещал вернуться⁠⁠

Помните ноут Toshiba, который мне подарил читатель из Беларуси? При внешне приличном состоянии, внутри все оказалось плохо.

Изначально доска стартовала через раз. Бипер то пищал пост ок и промаргивал капс, то протяжно один раз попискивал и ноут зависал, то беспрерывно пищал с коротким интервалом. Для подстраховки проверил все линии питания и заменил конденсаторы, а также удалил никелевый аккумулятор Varta, запитывающий RTC - симптомы были похожи на конденсаторы, потерявшие ESR.

Плата все также вела себя странно: стартовала один раз в 10 попыток, работала нестабильно, потребляла 350мА при 18В на входе (это нормально для платы без обвязки), процессор линейно нагревался, но не калился, RESET снимался. А что нужно для старта классическому ПК? Правильно, стабильные 5В, 3.3В и VCore, исправный BIOS и наличие опорных частот для всех шин - FSB 50МГц, ISA 8МГц и PCI 33МГц.

Обратите внимание на пятаки и обвязку рядом с кварцем 14.318МГц

Обратите внимание на пятаки и обвязку рядом с кварцем 14.318МГц

Их формированием занимается специальный чип под названием клокер, который представляет из себя трёхканальный программируемый PLL. Клокер берет на вход опорную частоту (чаще всего это стандартный для ПК 14.31818МГц), умножает ее в зависимости от конфигурации в регистрах EPROM и битов S0-S2 (для CPUCLK, это тот самый разгон по шине :)) и выдает на выводах нужную частоту. Потекшая Варта пожрала дорожки и межслойные переходы аккурат рядом с клокером, из за чего генерация скорее всего и срывается - малейшее отклонение от референса и процессор уже не может нормально общаться с северным мостом и периферией.

Процессор. Обратите внимание на корпус - что то похожее на QFP с огромным количеством пинов.

Процессор. Обратите внимание на корпус - что то похожее на QFP с огромным количеством пинов.

Восстановить плату возможно, но без схемы проблематично - виасы пока ещё звонятся на конкретные дорожки, но во многих местах придется резать их и припаивать перемычки напрямую. Даже до АКБ добралось.

Самая крутая фишка японских ноутов - кастомные чипсеты. Северный мост, Южный мост, Биос - все самопальное и родное от Toshiba, правда документации ноль. Но круто что инженеры не ставили готовые мосты от VIA/SIS/Intel, а запилили свое :)

Сама плата условно рабочая, да и ноут выглядит неплохо. Устройство интересно мне своим процессором (всегда хотелось ноутбук на первом Pentium) и цветной DSTN матрицей, которая за счёт времени отклика прекрасно сглаживала тормоза и анимировала весь интерфейс (помните как медленно перерисовывался интерфейс, а пиксели гасли на глазах в Siemens C65? Вот это оно самое). Пробуем восстановить?

?
Всего голосов:
Показать полностью 5 1
399
TECHNO BROTHER
IT

Подписчик из Беларуси прислал мне крутейшую посылку!⁠⁠

Недавно мне написал Дмитрий - читатель с Хабра, который живёт в Беларуси. Дмитрий довольно давно читает мой блог, ему нравятся мои статьи и он захотел подогнать мне ретро-железо для будущих статей - и здесь есть много всего интересного!

В первой коробочке лежали материнские платы. И не абы какие, а очень крутые и интересные. Например материнка на SiS 530 интересна тем, что у этого чипсета не было AGP, а роль видеоускорителя выполнял немного допиленный SiS 6326. Материнка на пга370 интересна тем же - только там в качестве видеочипа используется i815-производный гп. А ещё тут есть слотовая материнка с процессором... В слоте.

Во второй коробочке лежал крутой подгон - белорусские шоколадки. В целом я гораздо больше люблю именно сладости из Беларуси, они сильно качественнее чем те, что можно найти в пятерочке/магните в РФ. Помимо шоколадок, меня ждали легендарные телефоны - Samsung X100, Huawei U8110, ZenFone 2 на x86 процессоре Intel, а также Nokia и...

...GBA SP с картриджем для оригинального Gameboy. GBA SP осталась от прошлых жильцов в уставшем, но предположительно рабочем состоянии. Девайсы эти неубиваемые, если шлейф в норме и КП не сдох - ещё мои внуки будут пользоваться. Картридж я опознал как Super Battletank: War in the Gulf 1994 года выпуска

Но самый крутой подгон - это ноутбук Toshiba Satellite 100CS 1996 года выпуска (поздравьте молодого, ему в этом году исполнилось 30 лет!) с 75МГц Intel Pentium (без MMX), 8МБ EDO RAM, 500МБ HDD и 10.4" пассивной цветной матрицей, способной выдавать до 256 цветов :)

Джойстик вместо мыши, две кнопки друг над другом.

Джойстик вместо мыши, две кнопки друг над другом.

Ноут включается, проходит POST, но не показывает ничего на экране. Скорее всего связано с шлейфом, у них они отходят от времени. Самой крутой фишкой некоторых японских ноутов тех лет я считаю то, что у них блок питания встроен в устройство и для использования достаточно иметь с собой кабель в розетку.

Большое спасибо Дмитрию за такой крутой подгон :) Тошибой займусь когда приеду домой, а на этой неделе вас ждёт статья о ремонте ноутбука ещё старше - на 486'ом процессоре от Cyrix и монохромной матрицей, родом из 1994 года. Когда то он трудился на кафедре университета, в нем упала в КЗ главная цепь питания, но теперь, спустя 20-25 лет после списания, он попал в гиковские руки :)

Аутентичное фото

Аутентичное фото

?
Всего голосов:
Показать полностью 7 1
57
TECHNO BROTHER
IT

ВК, у вас всё норм?⁠⁠

Летом ВК подключил партнёрскую программу с Озоном и предложил "авторам" (в основном нейрослоп постов бестолковых) монетизацию за счёт рекламы всяких товаров. И ладно бы эти товары были норм..

Но предлагают откровенный развод на бабки. Один из самых частых товаров, который стабильно попадается раз в 20 постов в ленте - реклама смартфона Pagraer i17 Pro Max под видом "недорогой" вариации на iPhone с топовым железом.

Под капотом обещают топовый Snapdragon... 450B (средний процессор из 2017 года с 8-ю A53'ими ядрами на 1.8ГГц, вчистую проигрывает даже смартфонам на юнисоке т310 за 5к. Свежие версии пабг он уже точно не потянет), 12ГБ ОЗУ (из которых только 4ГБ настоящие, а остальные 8ГБ - свап на флэшке), HD+ 90Гц IPS-экран (это ок, стандарт для бюджеток) и 5.3Ач АКБ (стандарт для бюджеток, но на практике может быть заметно меньше). Android тоже обещают свежий, на практике максимум 10-11 5 летней давности.

И Вишенка на торте - 512ГБ встройки, из которых реальных ну максимум 64-128. У этого же бренда есть смартфоны за 6-8к на Helio P60 - годный проц, но из 2018 - и вендоры чаще всего ставят ту версию Android, которую даёт MediaTek с PDK (а это максимум 10-11, GSI образы свежее почему то никто не накатывает)

A18 Pro превращается в P60, если пролистать до описания

Забавно что ни MediaTek, ни Qualcomm эти процы уже много лет не поддерживает и не производит, так что собирают смартфоны из остатков на складах, а среди сотен накрученных отзывов попадаются гневные, где вскрываются реальные ТТХ.

И по своей натуре это норм смартфоны за 5-6к, B-бренды типа Blackview тоже выпускают подобные, но по нормальной цене, с свежей версией ведра и чуть более свежими процами типа T310'ого. Собсна ВК и Озон, почему вы поощряете развод, а если смартфон покупает человек в теме и видит расхождение с ТТХ, просто предлагаете ему возврат средств?

?
Всего голосов:
Показать полностью 10 1
70
TECHNO BROTHER
Игры

Как набор грязных хаков добавил мультиплеер в легендарную игру: разбираем архитектуру SAMP [Длиннопост, про код]⁠⁠

Осторожно: Эта статья — не просто очередная ретроспектива с воспоминаниями, а конкретный разбор сетевой архитектуры и хаков, благодаря которым стал возможен мультиплеер в GTA аж на 1.000 человек одновременно. Если вам интересен геймдев и то, как работают игры под капотом — статья обязательна к прочтению!

GTA: San Andreas запомнилась нам как легендарная игра с немыслимым, по меркам 2004 года, масштабом. В ней был и огромный бесшовный мир, состоящий из трех городов, и массивный автопарк аж из 213 транспортных средств, и длинная интересная история с кучей сайд‑активностей, прохождение которых занимает как минимум несколько дней, и даже элементы RPG с базовой прокачкой персонажа.

И вот всё в ней было идеально, кроме одного — мультиплеера. Rockstar не успела доделать полноценный режим сетевой игры, оставив лишь подачку в виде локального кооперативного режима на PS2, в котором даже миссии проходить было нельзя. Однако группа моддеров под руководством Kalcor смогла воплотить то, что не удалось сделать Rockstar — реализовать мультиплеер в GTA SA аж на 1.000 человек одновременно. И о том, как им удалось это сделать, я расскажу в рамках сегодняшней статьи!

❯ Предыстория

Серия GTA получила статус культовой задолго до выхода San Andreas. Ещё в 2001 году, на PS2 вышла GTA III, повествовавшая нам об истории немого гангстера по имени Клод, который волею судьбы был вынужден сражаться за свое выживание на улицах грязного и холодного Либерти‑Сити. В отличии от прошлых игр серии, GTA 3 перенесла геймплей в полноценное 3D, умудрившись реализовать на скромном железе PlayStation 2 огромный и (почти) бесшовный город, состоящий из трех островов.

Официальный скриншот GTA III для PS2

Официальный скриншот GTA III для PS2

После прохождения одиночной компании, многим игрокам хотелось большего: причем речь шла не о DLC с новыми миссиями, а о полноценном мультиплеере, где можно было бы устраивать анархию с другими игроками. И что интересно — мультиплеер изначально планировался Rockstar, но по каким‑то причинам был вырезан из игры (скорее всего нехватка времени), о чём говорят оставленные строки с упоминанием сетевой игры.

[FEM_MP] MULTIPLAYER
[FEF_LAN] LAN
[FEF_INT] INTERNET
[FEN_CON] Connection
[FEN_GAM] Find game
[FEN_TY] Game type
[FEN_GNA] Game name:
[FEN_NAM] Name:
[FEN_NCI] NOT CONNECTED TO THE INTERNET
[FEN_NET] Network
[FEN_PLA] Number of players:
[FEN_PLC] Player color
[FEN_PLS] Player settings
[FEN_UKH] Unknown host
[FEN_UKM] Map not found
[FEN_UKT] Game type not found
[FET_MAP] SELECT MAP

Через год, в 2002 году, игра вышла на ПК и моментально привлекла внимание моддеров. Точную хронологию событий восстановить сложно, но скорее всего моддеры сначала написали софт для распаковки/запаковки текстур в форматах txd, затем импортеры и экспортеры 3D‑моделей в формате dff для 3 ds Max/Milkshape 3D, и параллельно с этим ковыряли скриптовый движок игры под названием SCM. SCM представлял из себя специализированную виртуальную машину, которая загружала огромную многопоточную программу под названием main.scm, которая в свою очередь контролировала чуть ли не половину геймплея игры: зоны банд, места спавна машин, пикапы оружия и здоровья, а также содержала логику миссий вместе с побочными заданиями.
Схожая система использовалась и в GTA2, причём DMA Design (бывшее название Rockstar North) в 1999 году опубликовала официальный компилятор вместе с документацией и примерами скриптов — что и послужило отправной точкой для реверса SCM (под «капотом» обе работали похожим образом, но у GTA2 номера опкодов другие):

Откуда там потоки?

Конечно многопоточность в SCM была условной, потоки в скриптах не могли выполняться параллельно на разных ядрах процессора и не контроллировались планировщиком задач в ОС. Вместо этого, у движка игры был собственный планировщик, который каждый кадр брал по одной инструкции каждого потока и выполнял только её. Такой подход позволяет не превращать игровой цикл в мешанину из коллбэков, корутин и await'ов и сохранить синхронность и последовательноть скриптовой части игры.

Фича настолько удобная, что Oracle реализовала эту концепцию за счет виртуальных потоков в Java 21:)

Официальный скриншот GTA III для PC

Официальный скриншот GTA III для PC

Первой попыткой реализовать мультиплеер в GTA 3 стал GTA3: AM aka MTA 0.1, выпущенный через год после релиза игры на ПК — 9 февраля 2003 года. Первая версия мода была написана на VB6 (да, да, звучит дико) немецким подростком и являлась результатом реверс‑инжиниринга кода игры, в котором на тот момент разобрали только структуру класса автомобиля и игрока. Из‑за этого синхронизировалось только две машины, а для того чтобы увидеть второго игрока, нужно было сначала сесть в машину в которой будет ехать второй игрок, затем выйти из нее и сесть в «свою» — и только после этого игроки смогут увидеть друг друга, причем вторая машина будет без водителя.

Код синхронизации автомобилей в MTA 0.1. sub_40D930 — это WriteProcessMemory:)

Код синхронизации автомобилей в MTA 0.1. sub_40D930 — это WriteProcessMemory:)

В MTA 0.2 добавили чат и пофиксили краши, а в MTA 0.3 реализовали полноценную синхронизацию других игроков вместе с первыми игровым режимами — Deathmatch и Stunt. Именно в 0.3 впервые использовалась своя собственная реализация main.scm — mta.scm, за счет которой, скорее всего, и реализовали синхронизацию игроков: скриптовый движок позволяет создавать пешеходов и машины, а также управлять их позицией, поворотом, ускорением и даже может заставить их стрелять в определенном направлении — и этого было достаточно для базовой синхронизации игроков. Весной 2003 года вышла GTA: Vice City на ПК, которая использовала всё тот же движок, и за короткое время разработчики перенесли наработки в новую игру, а к команде присоединился австралиец Kalcor, который позже станет известен как разработчик SAMP:

MTA: VC. Можно увидеть оверлеи над игроками, а также чат — неплохой прогресс для года работы.

MTA: VC. Можно увидеть оверлеи над игроками, а также чат — неплохой прогресс для года работы.

Однако разработчики отнюдь не работали «вслепую». Как рассказывал Kalcor, примерно в 2004 году, у команды MTA появились связи с программистами из Rockstar, которые неофициально делились заголовочными файлами с описанием структур и функций игры. Выяснилось что контекст скриптового движка можно легко «угнать», если подсунуть ему свою структуру CRunningScript с указателем на произвольный буфер с опкодами, и заставить игру делать всё что пожелаешь. Именно эта находка позже легла в основу CLEO (ближе к версии 3.0), который позволил подключать к игре кастомные скриптовые моды и даже расширять её функционал за счет добавления новых опкодов.

Скриншот CWorld.h из проекта reVC

Скриншот CWorld.h из проекта reVC

Изначально сервер в MTA занимался лишь пересылкой состояния игроков, в то время как игровые режимы реализовывались на клиентской стороне. Kalcor'а это не устраивало, но команда стояла на своём — так что в 2005 году он покинул проект, чтобы начать свой — VCMP с RakNet в качестве сетевого транспорта и скриптингом на стороне сервера. В качестве скриптового движка он выбрал AMX — маленький, но очень шустрый C‑подобный язык, пригодный для написания небольших игровых режимов (и совершенно непригодный для написания всяких RP — страшно представить, что творится в коде условного Radmir/Arizona RP), который до этого использовался для написания серверных модов в CS 1.6 (помните AMX Mod X?:)) и хорошо зарекомендовал себя.

Команда VCMP чуть позже выбросила AMX и перешла на Squirrel — куда более пригодный язык для написания больших режимов, в то время как SAMP так и остался на AMX. Скорее всего Kalcor просто устал в 2010-х поддерживать свой мод и у него не было времени или желания добавлять что‑то ещё.

В том же 2005 году, GTA: San Andreas наконец‑то вышла на ПК и Kalcor принялся портировать наработки VCMP для неё, благо движок оставался всё тем же. Самая первая версия SAMP поддерживала только гонки по чекпоинтам, но в мае 2006 года вышла полноценная публичная бета, заработал сайт sa‑mp.com и с этого всё началось...

Насчет движка

Несмотря на это, игра всё равно очень сильно изменилась "под капотом" - добавили возможность выполнения внешних скриптов из script.img, сделали основу для DLC (потом её использовали в моде DYOM), сильно расширили лимиты scm и очень сильно доработали механизм стриминга. Именно благодаря доработке больше не было экранов "Greetings from Vice City San Andreas" :)

SAMP 0.1 b. Скриншот из видео Waldemar.

SAMP 0.1 b. Скриншот из видео Waldemar.

Оригинальная версия могла обрабатывать до 100 игроков на одном сервере (что уже немало), но Kalcor продолжал дорабатывать мультиплеер, и в версии 0.2 лимиты подняли до 200, в 0.3 — до 500, а в 0.3 c — аж до 1000 игроков одновременно! Это уже вполне уровень MMO. Kalcor достиг этого за счет динамического стриминга объектов на сервере: если игрок или автомобиль находится вне зоны стриминга (которая определялась сферой радиусом в 150 м вокруг игрока), то сервер банально переставал слать информацию об обновлениях объекта и клиент его удалял — но если 1000 игроков собирались в одном месте... FPS на большинстве компьютеров тех лет падал в однозначные значения.

SAMP 0.2. Скриншот с moddb.

SAMP 0.2. Скриншот с moddb.

В последующие годы SAMP активно развивался — добавляли новые функции, объекты и скины, пока в 2015 не вышел последний крупный апдейт — 0.3.7, который добавлял статических NPC. После этого, активная поддержка модификации закончилась... а вот серверов — нет. С 2010 по ~2020 год, SAMP проживал свои лучшие дни: серверы уже не ограничивались простыми DM/Stunt/Cops And Robbers режимами на пару сотен человек, администраторы серверов активно вкладывались в RP и RPG режимы, которые превращали GTA в симулятор реальной жизни с отыгрышем ролей, работами со своим начальством из реальных игроков, собственной сложной экономикой и имуществом, которое стоило реальные деньги (условные бизнесы на Radmir могут продавать за 10–15 тысяч реальных рублей). Доход этих проектов исчисляется миллионами рублей, а их авторы смогли себе позволить практически полный порт GTA SA на Unity под мобильные устройства...

❯ Изучаем архитектуру

Но в чем секрет SAMP и как он работает под капотом? В студенческие годы я и сам писал свой мультиплеер для Vice City, который работал как External‑чит, написанный на C# (звучит дико, но оно работало на базовом уровне), изучая исходный код SAMP 0.2. И в нём есть много фишек, о которых будет интересно узнать как молодым инди‑разработчикам, так и реверс‑инженерам и простым игрокам.

Детали реализации моего мультиплеера

Моя реализация мультиплеера работала за счет перезаписи процесса игры функциями ReadProcessMemory и WriteProcessMemory, а также инъекций шеллкода. Вместе с клиентом шел ассемблер FASM, который на лету компилировал мелкие функции по типу «угнать скриптовый контекст, выполнить n опкодов и вернуть результат», выделял в памяти игры небольшой пул для данных с помощью системного аллокатора VirtualAlloc, и затем выполнял код с помощью функции WinAPI CreateRemoteThread.

За счет этой же концепции работают инжекторы dll‑библиотек, которыми пользуются всяческие кряки для софта, моды и читы для онлайн‑игр. В целом, никто не мешает инжектнуть и Managed библиотеку в нативную игру при условии использования.NET Framework: тогда библиотеку можно загрузить через COM по CLSID с помощью шеллкода, либо внедрить рантайм.NET в игру с помощью ICLRHostControl, либо инжектнуть обычную C++/CLR библиотеку в качестве нативной DLL, которая создаст контекст.NET. Для обычных.NET без Framework остаются способы с инжектом hostfxr и через COM.

Кроме того, маршаллер в.NET позволяет без проблем вызывать нативные функции через GetDelegateForFunctionPointer, в том числе и виртуальные, если первым аргументом идёт указатель на экземпляр. Так что возможности хукинга в.NET очень обширные:)

Начнем с вами с клиентской части, которая инжектится в игру как обычная dll‑библиотека в качестве asi‑плагина. После загрузки, ОС вызывает функцию DllMain, в которой создается поток, ожидающий полноценного запуска игры:

После того как игра инициализировалась до этапа показа стартовых роликов, клиент хукает состояние меню так, чтобы игра сразу перешла к загрузке мира, а также «угоняет» главный цикл игры и контекст D3D9 для отрисовки оверлея с чатом и HUD'а над головами других игроков. Угон происходит за счет патчинга функции Render2DStuff, в начало которой записывается инструкция jmp с указателем на функцию, которая будет вызываться перед выполнением оригинального кода.

Насчет патчей

Помните патчи для телефонов Siemens, которые позволяли загружать Elf'ы и воспроизводить MP3? Они работали по точно такому же принципу, только там jmp сразу же записывался в код прошивки, а функция выносилась куда-нибудь в "свободное место".

Хук главного цикла происходит аккурат в тот момент, когда игра закончила отрисовку всех объектов на экране и перешла к отрисовке интерфейса. Именно в этот момент клиент выполняет синхронизацию игроков, спавнит объекты и занимается прочими полезными делами, при этом каждая серверная сущность (игрок, автомобиль, объект, пикап и меню) имеет свой отдельный фиксированный пул.

В каждом пуле есть несколько сотен слотов для сущностей, причем память для них выделена заранее. При получении сообщения от сервера вида WorldPlayerAdd/WorldVehicleAdd, клиент вызывает функции игры и физически создает объект в мире игры, а сами пакеты присылаются сервером в момент входа в зону стриминга:

Создание и манипуляция объектами происходит за счет угона контекста скриптового движка SCM, о котором мы говорили ранее. Клиент заставляет игру создать еще одного игрока/машину/пикап (эта же функция используется для кооператива на PS2) и перехватывает над ним управление. Тут есть интересный момент — по умолчанию в GTA нет нормальной системы динамической подгрузки ресурсов «по необходимости», все модели и анимации скрипты подгружают вручную с помощью опкодов 0×247 и 0×4ED, а если этого не сделать — то игра крашнется.

В свою очередь, контекст SCM угоняется путем создания экземпляра объекта CRunningScript с заполнением указателя на текущую инструкцию (dwIP) и стека (если это нужно). После того как скриптовый движок обработал команду, хук достает результат выполнения (например ID созданной машины или персонажа) из стека и сохраняет его как хэндл для манипуляции объектом в будущем:

int __declspec(naked) ExecuteScriptBuf()
{
__asm
{
mov bScmLocalDebug, 1;

mov eax, OFFSET ScriptBuf

mov ecx, gst // В ecx сохраняется указатель на объект CRunningScript
mov [ecx+0x14], eax // В eax указатель на IP (буфер с опкодами)

call ProcessOneCommand // После чего вызывается функция ProcessOneCommand
// которая выполняет ровно один опкод в буфере
// (эта же функция используеся игрой для реализации многопоточности)

mov ecx, gst
mov eax, [ecx+0xC5] // Далее указатлеь на флаг, означающий вернул ли опкод значение запимыватся в eax

mov bScmLocalDebug, 0;

ret // return.
}
}

Интереснее всего выполнена синхронизация управления персонажами. Помните я говорил о том, что в PS2-версии GTA SA был локальный кооператив на двух игроков? Так вот: у каждого объекта игрока есть своя структура с описанием того, какие кнопки управления сейчас зажаты. Поэтому ходьба, стрельба и прицеливание реализованы как раз за счет прямой синхронизации нажатых кнопок: ваш клиент помимо координат и ускорения отсылает ещё и состояние кнопок, в то время как другие игроки у вас «честно» бегают на клиенте, но при сильном рассинхроне позиции их откидывает на ту позицию, которую прислал сервер помимо нажатых кнопок. Из‑за этого бег в SAMP'е был таким «рваным»:

А почему нельзя синхронизировать стейт отдельно?

Резонный вопрос: зачем симулировать кнопки, если можно вручную задавать текущую анимацию игрока и честно синхронизировать позицию и ускорение с поправкой на компенсацию лагов?

Тут проблема в том, что во первых такая анимация бега будет рассинхронизирована с движением персонажа (GTA активно использует Root motion) без информации о текущем проигрываемом кадре, а во вторых на эту систему подвязан механизм регистрации стрельбы — о котором я сейчас расскажу.

Не менее интересно сделана и регистрация попаданий. Те читатели, которые застали ранние версии SAMP, могли вспомнить такое явление, как «стрельба по пингу»: если ты просто стреляешь по модельке бегущего персонажа — ты гарантированно не попадаешь из‑за лага на сервере. Но если стрелять с небольшим упреждением (~20-30 пикселей от персонажа в сторону вектора его движения), то попадание засчитывалось. Происходило это как раз вследствие механизма синхронизации кнопок, который я описал в прошлом абзаце: клиент синхронизировал не сам факт попадания на нашем клиенте (нужную функцию игры для хукинга на тот момент просто не нашли), а лишь наш угол прицеливания и зажатую кнопку стрельбы. Таким образом, обработка попаданий ложилась полностью на того игрока, в которого мы стреляем — если мы попали в него на его клиенте, у него отнималось здоровье, которое отсылалось на сервер и засчитывалось как попадание. Но поскольку все пакеты доходят с заметной задержкой, за условные 120 мс уже пройдет 7.5 кадров игры и игрок «у себя» давно убежит за пределы экрана, а мы у него будем стрелять «в молоко»:)

В 2014 году Kalcor всё таки нашёл нужную функцию для определения попадания на клиенте (предположительно хукнув условный CPed::InflictDamage) и смог реализовать нормальную обработку, добавив коллбэк OnPlayerTakeDamage и назвав её компенсацией лагов. С этого момента стрельба перестала быть ватной.

Как должно быть правильно?

В SAMP используется полуавторитарная модель мультиплеера: сервер отвечает за основные правила игры и игровой режим, но полностью доверяет игрокам в вопросах текущей позиции, ускорения и здоровья (и именно поэтому в SAMP'е так легко летать над картой, использовать спидхаки и прочие приколы).

В такой модели самым правильным решением является обработка попадания на клиенте того игрока, который стреляет и последующая отсылка пакета InflictDamage на сервер, что в свою очередь убирает все минусы «ватной» стрельбы, но порождает возможность реализации деструктивных читов по типу «зафлудить сервер пакетом InflictDamage и застрелить всех с другого конца карты» (что тоже можно без проблем детектить).
В авторитарных моделях (Quake, Half‑Life, CS2, CoD и других играх) такие приколы вообще невозможны, поскольку клиент отсылает только кнопки и угол прицеливания (и ничего более, даже позицию не отсылает), в то время как весь геймплей обрабатывает сервер и отсылает на клиент лишь обновленное состояние мира, которое сглаживается с помощью компенсации лагов. С этим решением нет возможности читерить деструктивно (то есть спавнить объекты, телепортировать игроков в клетки и прочие прелести P2P и полуавторитарных моделей), но игра сильно зависит от тикрейта на сервере и пинга, играть нормально в CS с пингом 100+ невозможно, в отличии от игр с полуавторитарной моделью.

На сервере тоже есть на что посмотреть. В своей основе, сервер является ретранслятором сообщений от игроков: он принимает пакеты синхронизации, обновляет состояние игроков на серверной части и рассылает их другим игрокам. Тут всё по классике:

Однако для управления поведением сервера предусмотрены режимы, написанные на скриптовом языке Pawno (тот самый AMX). На каждое событие сервер вызывает коллбэк, скрипт в свою очередь выбирает как на него реагировать: если персонаж сел в машину, в которую ему садится нельзя (допустим это ТС фракции, к которой он не принадлежит), то скрипт может его оттуда принудительно выкинуть.

Помимо игровых режимов, сервер также запускал так называемые фильтр‑скрипты, которые получали всё те же коллбэки, но использовались как своеобразная система плагинов. На фильтрскриптах реализовывали античиты, логирование, а также маппинг карты: интереснее всего то, что кастомные объекты на карте создавались прямо из скриптов (вместо отдельного файла с описанием сцены), что в некоторых игровых режимах раздувало код до десятков тысяч строк в одном файле:)

У сервера были серьезные проблемы с оптимизацией. Например каждый вызов коллбэка, сервер искал функцию с её именем, что в свою очередь требовало итерацию по таблице символов вместе с strcmp. Именно поэтому сколь либо крупные паблики требовали серьезных серверных мощностей, несмотря на простоту серверной модели. А ещё, как и у любого уважающего себя сервера, у него был RCON — специальная консоль, с помощью которой сервером можно было управлять удаленно.

В целом, сервер был простым и шустрым в свой основе, но застой с AMX несколько тормозил прогресс игровых режимов, а из‑за отсутствия клиентских модификаций все серверы выглядели «одинаковыми» (хотя тут ещё влияет преемственность RP‑проектов, многие из которых берут корни от SAMP RP, и других режимов типа DM‑Stunt).

❯ Заключение

Вот так работал легендарный мод для GTA «под капотом». И хотя его сетевая модель выглядит достаточно простой, тысячи человеко‑часов, потраченные Kalcor'ом на реверс‑инжиниринг и отладку кода вызывают неподдельный гиковсий респект! Но история мультиплеера в GTA на этом не закончилась, и для GTA V вышло как минимум 3 мультиплеера — alt:V, RageMP и FiveM. И что самое интересное — Rockstar Games купила команду FiveM в 2023 году, дабы превратить сторонний мод в полуофициальный мультиплеер, закрыв альтернативные проекты:(

А вы играли когда‑нибудь в SAMP? Понравилась ли вам статья? В ближайшее время я хочу сделать полный разбор архитектуры GTA III/VC/SA со всеми интересными фишками и оптимизациями «под капотом», если вам интересен такой формат — дайте знать, обязательно сделаю:)

В качестве тестовых машин, мне было бы интересно пощупать что‑то ещё из семейства Nvidia ION/Radeon Xpress Graphics/VIA Chrome9 HC/Trident Blade. Если у кого‑то есть всякие интересные тонкие клиенты или ноутбуки на прикольном железе, или что‑то AMD'шное времен 939/462 — пишите в ЛС, обязательно сделаю контент!

Олды блога могут вспомнить мою демку про самолетики. Возможно скоро будет статья про куда более крутую игру для ретро компьютеров и возможно даже PSP и PS2!

Олды блога могут вспомнить мою демку про самолетики. Возможно скоро будет статья про куда более крутую игру для ретро компьютеров и возможно даже PSP и PS2!

Ну а я надеюсь, что вам было интересно. Подписывайтесь на блог, чтобы не пропускать новые статьи каждую неделю! А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram‑канал «Клуб фанатов балдежа„, куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты. А ролики (не всегда дублирующие статьи) можно найти на моём YouTube канале.“»

А если вы хотите что‑нибудь подарить из железа и увидеть о нём статью — пишите мне в Telegram. Меня очень интересуют самые разные гаджеты: начиная от игровых консолей и любых связанных с геймингом устройств, телефонов, смартфонов, КПК, заканчивая ретро‑компьютерами и ноутбуками. Кто знает, может героем следующей подобной статьи окажется ноутбук из 90-х?:‑)

Особенно сильно я люблю ковыряться в ноутбуках из начала 90-х. Источник

Особенно сильно я люблю ковыряться в ноутбуках из начала 90-х. Источник

После обзоров устройства не продаются, а остаются в моей коллекции. Когда‑нибудь я хочу сделать музей, где к каждому устройству можно будет приложить QR и почитать мою статью. Кто знает, вдруг на следующей неделе я также подробно расскажу про девайс из вашей юности?:)

Фото Nokia 9300 с сайта mobile&#x2011;<a href="https://pikabu.ru/story/kak_nabor_gryaznyikh_khakov_dobavil_multipleer_v_legendarnuyu_igru_razbiraem_arkhitekturu_samp_dlinnopost_pro_kod_14479441?u=http%3A%2F%2Freview.com%2F&t=review.com&h=b39b8771d6642d0c50679b8d378f38bfe95d5f66" title="http://review.com/" target="_blank" rel="nofollow noopener">review.com</a>

Фото Nokia 9300 с сайта mobile‑review.com

Кстати, у меня есть GameBoy Advance SP, под который я очень хочу написать игру. Однако мой экземпляр был залит водой и кофе. Может у кого‑то есть донор с дохлой платой, откуда я смог бы взять контроллер питания? У меня AGS-101.

Что думаете о SAMP?
Всего голосов:
Что думаете о статье?
Всего голосов:
Показать полностью 19 2
970
TECHNO BROTHER
Хобби

Отремонтировал ноутбук 1994 г.в с кафедры, который старше меня на 7 лет⁠⁠

Недавно мне написал читатель Илья с Хабра и предложил подогнать ноутбук Mitac SLT486DLB родом из начала-середины 90-х годов, который долгое время работал на кафедре некоего университета на дальнем востоке. Илья сам пытался его запустить от ЛБП, однако ноутбук совсем не подавал признаков жизни и он решил подарить его мне.

Этого красавца списали из за поломки. Интересно, сколько он проработал перед списанием? Ю

Этого красавца списали из за поломки. Интересно, сколько он проработал перед списанием? Ю

После разборки, я обнаружил следы прошлого ремонта - кто-то перепаивал диод Шоттки на входе, немного поплавив пластик рядом.

Чуть левее меня ждал сгоревший предохранитель на входе питания и КЗ по +17V. Подключив ЛБП на 1В/1А, я обнаружил калящийся танталовый конденсатор на модуле DC-DC преобразователя главной шины питания. Снял модуль - КЗ ушло, заменил на электролит - плата подала признаки жизни.

5В - главная шина питания для ноутбуков и компьютеров тех лет. Даже многие процессоры работали от 5В :) модуль собран на ШИМ TL494, но думаю его без проблем можно поменять на XL4015E1 за 200 рублей

5В - главная шина питания для ноутбуков и компьютеров тех лет. Даже многие процессоры работали от 5В :) модуль собран на ШИМ TL494, но думаю его без проблем можно поменять на XL4015E1 за 200 рублей

Рядом с преобразователем на 5В расположился DC-DC преобразователь, формирующий питание процессора. Он был в норме, на входе 5В и VIn, на выходе 3.6В (в зависимости от процессора, у меня LV).

Далее я подал питание на VIn и ноутбук включился, радостно пискнув о том, что POST пройден.

Из за отсутствия родного БП с пином Sense, ноут отказывался включаться как от VChg на разъёме питания, так и от VBat, поэтому кинул VBat в обход схемы выбора источника питания на VIn, не потеряв ни в защите от КЗ, ни от переполюсовки.

Открываем флюс, собираем, включаем и балдеем😎 с HDD DOS не загрузился, но флоппик работает, так что пойду записывать MS-DOS 6.22 с экстендером и буду запускать все крутые игры для DOS на своем Cx486 66МГц!

?
Всего голосов:
Показать полностью 8 1
529
TECHNO BROTHER

Мощный одноплатник за копейки: Как я купил и отдриставрировал полноценный мини-ПК за 800 рублей, превратив в сервер [Длиннопост, про железо]⁠⁠

Спойлер: Вы тоже можете купить такой одноплатник за 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

Дроссель рядом с КП отвечает за единственную фазу питания 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-флэшкой Hynix H26M41204HPR объёмом в 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!

Олды блога могут вспомнить мою демку про самолетики. Возможно скоро будет статья про куда более крутую игру для ретро компьютеров и возможно даже PSP и PS2!

Ну а я надеюсь, что вам было интересно. Подписывайтесь на блог, чтобы не пропускать новые статьи каждую неделю! А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram‑канал «Клуб фанатов балдежа„, куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты. А ролики (не всегда дублирующие статьи) можно найти на моём YouTube канале.“»

А если вы хотите что‑нибудь подарить из железа и увидеть о нём статью — пишите мне в Telegram. Меня очень интересуют самые разные гаджеты: начиная от игровых консолей и любых связанных с геймингом устройств, телефонов, смартфонов, КПК, заканчивая ретро‑компьютерами и ноутбуками. Кто знает, может героем следующей подобной статьи окажется ноутбук из 90-х?:‑)

Особенно сильно я люблю ковыряться в ноутбуках из начала 90-х. Источник

Особенно сильно я люблю ковыряться в ноутбуках из начала 90-х. Источник

После обзоров устройства не продаются, а остаются в моей коллекции. Когда‑нибудь я хочу сделать музей, где к каждому устройству можно будет приложить QR и почитать мою статью. Кто знает, вдруг на следующей неделе я также подробно расскажу про девайс из вашей юности?:)

Фото Nokia 9300 с сайта mobile&#x2011;<a href="https://pikabu.ru/story/moshchnyiy_odnoplatnik_za_kopeyki_kak_ya_kupil_i_otdristavriroval_polnotsennyiy_minipk_za_800_rubley_prevrativ_v_server_dlinnopost_pro_zhelezo_14455920?u=http%3A%2F%2Freview.com%2F&t=review.com&h=b39b8771d6642d0c50679b8d378f38bfe95d5f66" title="http://review.com/" target="_blank" rel="nofollow noopener">review.com</a>

Фото Nokia 9300 с сайта mobile‑review.com

Кстати, у меня есть GameBoy Advance SP, под который я очень хочу написать игру. Однако мой экземпляр был залит водой и кофе. Может у кого‑то есть донор с дохлой платой, откуда я смог бы взять контроллер питания? У меня AGS-101.

Как вам статья?
Всего голосов:
Показать полностью 41 1
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества