В данной статье я расскажу, как патчил SPD на ноутбучной плашке памяти, в связи с оригинальной причиной, никак не связанной с тем что у меня оказался старый MacBook, а наоборот, появился новый компьютер и новая планка памяти (оба от 11.2018), и к каким танцам с бубном это всё привело.

На Хабре уже есть аналогичные статьи раз и два, но я использовал другие программы и другое решение, так что решил написать очередную подобную статью, в надежде, что она будет кому-то полезна.

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

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

Итак, данная история началась давным-давно месяц назад, когда на AliExpress появилось волшебное слово «распродажа» и я не сдержался, и заказал себе очередной мелкий компьютер. Для тех, кто не очень представляет что это, вот фотография:



Такая алюминевая коробка размером 19х19, в которой засунут простенький процессор, но в целом — это обычный компьютер, не очень шустрый, но вполне рабочий.

К этому компьютеру нужно ещё докупать память, SSD, WiFi, пигтейлы и антенны и, конечно же продавцы за «небольшую» доплату всё это сами вставят и пришлют, так что включай и пользуйся. Но что именно они вставят… Так что я, конечно же, заказал всё по частям, всё-таки себе я доверяю больше. И, естественно, из любви к искусству подешевле (иначе не интересно).

UPD: В комментариях мне справделиво заметили, что память может быть подделкой. Вполне возможно, на работу памяти это не влияет, да и на пост в целом — тоже. Просто имейте в в иду, что я могу незаслуженно обругать честного производителя.

Комп и SSD приехали, а память задержалась на неделю, так что я нашёл в закромах старую планку на 1Gb и всё проверил. Но приехала новая плашка от ADATA (вроде известная фирма, да?), которая выглядела вполне цивилизованно:



Так что я, не задумываясь, вставил её в компьютер и получил… Да ничего я, собственно не получил. Компьютер светился лампочками, но на этом всё.

Злобный внутренний голос хихикал и говорил: Сэкономил? Купил ADATA? Надо было брать что-то приличнее! Но я его не слушал и занимался играми в биосе, с помощью гениального метода: вставляем старую плашку, ковыряем настройки, меняем на новую, пробуем.

Спустя некоторое время я умудрился завести компьютер, установив частоту 533 (1067) и отключив всё автоматическое определение. Память работала! Но любые попытки сменить частоту или сделать хоть что-то другое приводили к полному непонимаю компьютера, который отказывался соглашаться со мной, что работать он всё-таки должен.

Хмм… подумал я, и достал ноутбук, вытащил из него плашку, вставил на её место адатовскую, а ноутбучную в компьютер. Оба радостно завелись. What the hug! Сказал я, и начал пытаться понять, что же всё-таки произошло. Что за странная несовместимость и стоит ли делать что-то дальше, или просто так и оставить. Оставить, ну-ну, знаю я тебя сказал внутренний голос и я пошёл копать дальше. Внутренний Шерлок чувствовал, что какая-то фигня с таймингами, а утилиты показали, что ноутбук решил завестись на 667 (1333), вместо положенных 800 (1600), т.е. ему что-то явно не нравилось в планке.

В итоге у меня перед глазами встала следующая картина:



Память делкарировала, что она поддерживает частоту 800 (1600), но тайминги прописаны только до 667. Что-то было явно не так. Все соседние компьютеры утверждали что у их памяти, всё в порядке с таймингами, значит проблема явно в модуле. Заодно и стало понятно странное поведение компьютера — вижу частоту, но не знаю что с ней делать.

Т.к. я видел на хабре статью про то, что SPD можно прошить, я решил: гулять так гулять, надо попробовать что-то с этим сделать.

Вижу что апдейты пришли, Windows, давай потом, я занят

Поиски привели на отличную программу Typhoon Burner, у которой обнаружился небольшой недостаток. Она была платная… И стоит она практически столько же, сколько память, т.е. вместо программы можно купить ещё одну плашку, а эта хоть и плохо работает, но ведь работает! Так что копаем дальше.

Дальнейшие поиски привели к находке другой замечательной программы RwEverything, которая может читать и писать много всего интересного, в том числе и SPD, но SPD надо ковырять самому, а не просто выбрать нужные данные. И, да, у неё отсутствует недостаток предыдущей программы.

Виндоус, пожалуйста, отвали со своими апдейтами, я понимаю, что час ночи, но давай потом, а?

Я открыл википедию, прочитать про SPD, и понял, что сон придётся ещё чуть отложить. Но у меня есть дампы, несколько других планок, может просто скопировать содержимое? Идея заманчивая, но отложим.

В общем, дамп от памяти выглядел так:

0000000000: 92 11 0B 03 04 19 02 0A ¦ 03 52 01 08 0A 00 3C 00
0000000010: 69 78 69 3C 69 11 20 89 ¦ 20 08 3C 3C 01 68 83 05
0000000020: 80 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
0000000030: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 0F 11 02 00
0000000040: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
0000000050: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
0000000060: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
0000000070: 00 00 00 00 00 04 CB 04 ¦ 18 32 DC 00 74 3C 09 E3
0000000080: 20 20 20 20 20 20 20 20 ¦ 20 20 20 20 20 20 20 20
0000000090: 20 20 00 00 04 CB 00 00 ¦ 00 00 00 00 00 00 00 00
00000000A0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000000B0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000000C0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000000D0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000000E0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000000F0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 5A

А дамп от другой плашки так:

0000000000: 92 12 0B 03 03 19 02 09 ¦ 03 52 01 08 0A 00 FE 00
0000000010: 69 78 69 30 69 11 18 81 ¦ 00 05 3C 3C 00 F0 83 01
0000000020: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
0000000030: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 0F 11 65 00
0000000040: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
0000000050: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
0000000060: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
0000000070: 00 00 00 00 00 80 AD 01 ¦ 16 20 01 73 25 CA D8 56
0000000080: 48 4D 54 33 35 31 53 36 ¦ 45 46 52 38 41 2D 50 42
0000000090: 20 20 4E 30 80 AD 00 57 ¦ 56 33 33 4E 30 35 38 37
00000000A0: 32 30 33 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000000B0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000000C0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000000D0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000000E0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000000F0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00

Мда, из общего только набор нулей, но тут глаз цепляется за следующую строчку в википедии:



Так 14-ый байт на нормальной плашке говорит что поддерживает тайминги с 5 по 11 (FE), а на этой только с 6 по 9 (3C). А на частоте 800 (1600) тайминги как раз и должны быть 11. Меняю биты (получается FC), сохраняю в файл, загружаю в Тайфун и вижу



Неожиданно появились нужные тайминги.

Лирическое отступление: Я думал, что все тайминги указаны для каждой частоты и явно заданы, оказывается, это просто математика относительно базовых параметров, т.е. верить утилитам, показывающих красивые числа 11-10-10-28 верить нельзя ибо они тупо делают ту же математику, а потом округляют на свой вкус.


Так, можно писать? А вот нет, есть же ещё CRC:



Который ещё надо посчитать, да ещё и выяснить 117 байт или 126, впрочем, чего думать, я же видел в статье ссылку на калькулятор и тип: CRC-16/XMODEM. В общем, взял оригинальные данные, закинул 126 байт, неудача, 117 — всё сошлось (байтики только перевёрнуты), так что дальше дело техники, правим CRC, выдыхаем, записываем, смотрим, что все утилиты увидели тайминги…

shutdown -h

Включаем… Всё работает. Жизнь прекрасна, я в очередной раз поборол систему, вытаскиваем планку из ноутбука, вставляем в компьютер, всё работает!

Ну, виндоус, ставь апдейты, разрешаю, а то уж извелась вся

В общем, всё у меня работает, но вся ситуация для меня выглядит каким-то абсурдом. Не самый последний производитель ADATA, делает память не первый год, и тупо забывает прописать тайминги… В результате пользователи используют память в более медленном режиме или сталкиваются с такими проблемами как у меня, из-за двух, грёбаных бит. Ну вот как так?

Комментарии (18)


  1. Naves
    13.12.2018 23:06
    +1

    Мемтестом проверили, что там действительно 4gb? Знакомый так же на али купил память, мемтест доходит до половины и комп зависает наглухо.
    Это наверное такой же adata, как штаны adidas за 300 рублей из перехода.


    1. force Автор
      13.12.2018 23:20

      Всё хорошо с памятью, тесты проходят, бенчмарки бенчатся


    1. webself
      14.12.2018 11:25

      Два раза покупал по две линейки DDR3 8Gb на таобао. В первый раз для макбука2011, второй раз для макмини2012. Оба раза успешно. Не знал, что и с оперативой накалывают.


  1. norbertano
    13.12.2018 23:18

    Сталкивался с необходимостью шить SPD планок памяти, какое-то время обходился демо-версиями typhoon burner, которые работают с x86 windows NT и бесплатной утилитой SPDTool, для этого брался чипсет, который ей поддерживался. А сейчас приобрел адаптер, в который подключается планка памяти, а сам адаптер подключается к программатору, но он еще не доехал


    1. oia
      14.12.2018 11:03

      а можно линк на адаптер? и какой у тебя прогер


  1. 1nd1g0
    13.12.2018 23:40

    Ну вот как так?

    В ряд ли «забыли». Возможно, память продаётся с намеренно завышенными относительно стабильных частотами, а правильная часть таблицы намеренно кончается именно на частоте, в которой производитель был уверен.


    1. force Автор
      13.12.2018 23:44

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


  1. lostmsu
    14.12.2018 01:28

    shutdown -h на Windows? Там разве не слэши?


    1. dartraiden
      14.12.2018 02:24

      Вместо синтаксиса /ключ эта команда допускает использование -ключ


    1. timoteo_cirkulera
      15.12.2018 00:47

      Вообще-то на винде shutdown -s -t


      1. force Автор
        15.12.2018 00:47

        Но я написал ровно то, что хотел получить :)


  1. Dimd13
    14.12.2018 06:33

    Не самый последний производитель ADATA, делает память не первый год, и тупо забывает прописать тайминги…


    Вы же её на Али брали? Да китайцы «налево» хоть какую вам наклейку наклеят хоть A-DATA, хоть Kingston… Коллега память Kingston брал, у всех плашек серийник 1:1 был, но работали. Али это рулетка, повезет — не повезет.


    1. force Автор
      14.12.2018 09:07

      Допускаю, что левак, но вроде бы подделывать ADATA, которая и так достаточно хреновая весьма странная идея. Серийники, кстати, разные судя по фоткам товара у других покупателей.
      Да и в целом, раз подделывают — чего бы ещё и тупо скопировать SPD, не пытаясь самостоятельно сварганить что-то.


  1. timka05
    14.12.2018 09:45

    Whta the hug!

    порадовал, спасибо… полная толерантность и отсутствие токсичности )))


  1. sergeyns
    14.12.2018 12:10

    Кстати, к SSD дискам от ADATA у меня бОООЛЬшие претензии…


  1. walti
    14.12.2018 14:22

    Вообщето демо-Тайфун дает редактировать SPD и сохрянять в файл, он не дает ее писать.
    По крайней мере, в какой-то из 7-х версий.

    Проблема в том, что некоторые нехорошие товарищи, типа Хуникса лочат EEPROM-ку, и туда уже ничего не запишешь.


  1. TinyQ
    14.12.2018 17:28

    Вот поэтому я предпочитаю покупать немного б/у Samsung из ноутбуков HP, чем эта лотерея из китая.