Story about DDR3, SPD and original Chinese manufacturers

    In this article I will tell you how SPD patch on a notebook memory plate, in connection with the original reason, not connected in any way with the fact that I had an old MacBook, but on the contrary, a new computer and a new memory bar (both from 11.2018) and to how it danced with a tambourine.

    On Habré there are already similar articles once and twice , but I used other programs and another solution, so I decided to write another similar article, in the hope that it would be useful to someone.

    And for those who will not, I will try to present the situation in the form of history, and not a stupid manual, so that it is more interesting to read (there will be a lot of Petrosyanism and lyrical digressions).

    The article will not be explicit instructions on which buttons to press, because you can easily ruin the memory, so if you are ready to do something, it is better not to hurry and think with your head, and you can guess which buttons to press.

    So, this story began a long time ago a month ago, when the magic word “sale” appeared on AliExpress and I could not restrain myself, and ordered myself another small computer. For those who do not really imagine what it is, here is a photo:



    Such a 19x19 aluminum box in which a simple processor is put in, but in general is a regular computer, not very smart, but quite working.

    You need to buy more memory, SSD, WiFi, pigtails and antennas for this computer and, of course, the sellers will insert and send all this for a “small” surcharge, so turn it on and use it. But what exactly they will insert ... So I, of course, ordered everything in parts, still I trust myself more. And, of course, for the love of art is cheaper (otherwise it is not interesting).

    UPD:In the comments I was rightly noticed that the memory can be fake. It is quite possible that this does not affect the work of memory, and also on the post as a whole. Just keep in going, that I may unfairly curse an honest producer.

    The comp and SSD arrived, and the memory was delayed for a week, so I found an old 1Gb bar in the bins and checked everything. But there came a new dice from ADATA (like a well-known company, yes?), Which looked quite civilized:



    So I, without thinking, inserted it into the computer and got it ... Yes, I didn’t get anything. The computer shone with light bulbs, but that's about it.

    An angry inner voice giggled and said: Saved? Bought ADATA? It was necessary to take something more decent!But I did not listen to him and was engaged in games in the BIOS, using the ingenious method: insert the old plate, pick the settings, change it to a new one, try it.

    After some time I managed to start the computer by setting the frequency to 533 (1067) and turning off all automatic detection. Memory worked! But any attempts to change the frequency or to do something else led to a complete misunderstanding of the computer, which refused to agree with me that he should work anyway.

    Hmm ... I thought, and took out a laptop, pulled a dice out of it, put adatovskaya in its place, and a laptop in a computer. Both happily wound up. What the hug! I said, and began to try to understand what really happened. What a strange incompatibility and whether to do something further, or just leave it. Leave, well, well, I know yousaid the inner voice and I went to dig further. Internal Sherlock felt that some garbage with timings, and the utilities showed that the laptop decided to start at 667 (1333), instead of the required 800 (1600), i.e. He obviously did not like something in the bar.

    As a result, the following picture appeared before my eyes:



    Memory made it clear that it supports the frequency of 800 (1600), but the timings are registered only up to 667. Something was clearly wrong. All neighboring computers claimed that their memory is okay with timings, so the problem is clearly in the module. At the same time, the strange behavior of the computer became clear - I see the frequency, but I don’t know what to do with it.

    Because I saw on Habr an article about the fact that the SPD can be flashed , I decided: to walk so to walk, we must try to do something about it.

    I see that the updates came, Windows, come on later, I am busy.

    The search led to the excellent program Typhoon Burner , which showed a slight flaw. It was paid ... And it costs almost as much as a memory, i.e. instead of the program, you can buy another plate, but this one, although it does not work well, but it works! So dig further.

    Further searches led to the discovery of another great program, RwEverything , which can read and write many interesting things, including SPD, but the SPD has to pick oneself, and not just choose the right data. And yes, it does not have the disadvantage of the previous program.

    Vindous, please back off with your updates, I understand that it is one in the morning, but then come on, huh?

    I openedWikipedia , read about SPD, and realized that the dream will have to be slightly postponed. But I have dumps, several other slats, can I just copy the contents? The idea is tempting, but postponed.

    In general, the memory dump looked like this:

    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

    A dump from another die like this:

    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

    Hmm, from the general only a set of zeros, but then the eye clings to the next line in Wikipedia:



    So the 14th byte on a normal plate says that it supports timings from 5 to 11 (FE), and on this one only from 6 to 9 (3C). And at 800 (1600) the timings should be exactly 11. I change the bits (it turns out FC), save to a file, load into the Typhoon and see



    Unexpectedly, the necessary timings have appeared.

    Lyrical digression: I thought that all the timings are specified for each frequency and are explicitly set, it turns out that this is just mathematics with respect to the basic parameters, i.e. Believe utilities, showing beautiful numbers 11-10-10-28 you can not believe because they stupidly do the same math, and then round to your taste.


    So, can I write? But no, there is also a CRC:



    Which still needs to be counted, and even to find out 117 bytes or 126, however, what to think, I saw in the article a link to the calculator and the type: CRC-16 / XMODEM. In general, I took the original data, threw 126 bytes, bad luck, 117 - everything came together (the Baitics only turned upside down), so what's next is the case of the technology, we rule the CRC, exhale, write, see that all utilities have seen timings ...

    shutdown -h

    Turn on ... Everything works. Life is beautiful, I once again overcame the system, pull the bar out of the laptop, insert it into the computer, everything works!

    Well, vindous, put updates, I permit, and that all has exhausted

    In general, everything works for me, but the whole situation seems to me to be some kind of absurdity. ADATA is not the latest manufacturer, it is not the first year that makes memory, and stupidly forgets to register timings ... As a result, users use memory in a slower mode or face such problems as mine, because of two fucking bits. Well, how so?

    Also popular now: