На Хабре уже есть аналогичные статьи раз и два, но я использовал другие программы и другое решение, так что решил написать очередную подобную статью, в надежде, что она будет кому-то полезна.
А для тех, кому не будет, попробую изложить ситуацию в виде истории, а не тупого мануала, чтобы читать было интереснее (будет много петросянства и лирических отступлений).
В статье не будет явной инструкции на какие кнопки нажимать, ибо угробить память вы можете запросто, так что, если соберётесь что-то делать, лучше не спешить и думать головой, а уж какие кнопки нажать, догадаетесь.
Итак, данная история началась
Такая алюминевая коробка размером 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)
norbertano
13.12.2018 23:18Сталкивался с необходимостью шить SPD планок памяти, какое-то время обходился демо-версиями typhoon burner, которые работают с x86 windows NT и бесплатной утилитой SPDTool, для этого брался чипсет, который ей поддерживался. А сейчас приобрел адаптер, в который подключается планка памяти, а сам адаптер подключается к программатору, но он еще не доехал
1nd1g0
13.12.2018 23:40Ну вот как так?
В ряд ли «забыли». Возможно, память продаётся с намеренно завышенными относительно стабильных частотами, а правильная часть таблицы намеренно кончается именно на частоте, в которой производитель был уверен.force Автор
13.12.2018 23:44Тогда проще было этикетку вешать от быстрой, а характеристики вешать от более медленной, меньше проблем было бы (никто же не проверяет в целом), а тут зомби какого-то сотворили.
Впрочем, по маркировке там самсунговские модули с правильными характеристиками.
lostmsu
14.12.2018 01:28shutdown -h на Windows? Там разве не слэши?
Dimd13
14.12.2018 06:33Не самый последний производитель ADATA, делает память не первый год, и тупо забывает прописать тайминги…
Вы же её на Али брали? Да китайцы «налево» хоть какую вам наклейку наклеят хоть A-DATA, хоть Kingston… Коллега память Kingston брал, у всех плашек серийник 1:1 был, но работали. Али это рулетка, повезет — не повезет.force Автор
14.12.2018 09:07Допускаю, что левак, но вроде бы подделывать ADATA, которая и так достаточно хреновая весьма странная идея. Серийники, кстати, разные судя по фоткам товара у других покупателей.
Да и в целом, раз подделывают — чего бы ещё и тупо скопировать SPD, не пытаясь самостоятельно сварганить что-то.
timka05
14.12.2018 09:45Whta the hug!
порадовал, спасибо… полная толерантность и отсутствие токсичности )))
walti
14.12.2018 14:22Вообщето демо-Тайфун дает редактировать SPD и сохрянять в файл, он не дает ее писать.
По крайней мере, в какой-то из 7-х версий.
Проблема в том, что некоторые нехорошие товарищи, типа Хуникса лочат EEPROM-ку, и туда уже ничего не запишешь.
TinyQ
14.12.2018 17:28Вот поэтому я предпочитаю покупать немного б/у Samsung из ноутбуков HP, чем эта лотерея из китая.
Naves
Мемтестом проверили, что там действительно 4gb? Знакомый так же на али купил память, мемтест доходит до половины и комп зависает наглухо.
Это наверное такой же adata, как штаны adidas за 300 рублей из перехода.
force Автор
Всё хорошо с памятью, тесты проходят, бенчмарки бенчатся
webself
Два раза покупал по две линейки DDR3 8Gb на таобао. В первый раз для макбука2011, второй раз для макмини2012. Оба раза успешно. Не знал, что и с оперативой накалывают.