Hello list,
I recently tried to update the BIOS of my MSI H87-G43 [1] from an usb disk using the "M-Flash" method. The update seemed to have succeeded, but now the board does not do anything at bootup anymore. No screen output, no beeping. At first, one of the LEDs (i guess HDD activity) blinked periodically, but after a few restarts it does not even do that anymore.
After doing some research I found some guides abouting flashing the bios chip from outside. One article especially captured my interest, which described how to access the flash chip via the JSPI1 header on the mainboard from a Raspberry Pi [2].
I followed that guide, but I cannot manage to get a connection to the chip. I found out the used chip is a MX 25L12873F [3], but it is not listed as supported on [4], does this mean it will not work with Flashrom?
Or is maybe something wrong with my wiring? In contrast to the description of the JSPI1 MSI connector on [5] the connector on my board has 12 pins, so I was a little bit confused.
I am new to this topic and very thankful for any help!
Regards Fabian
[1] https://de.msi.com/Motherboard/H87-G43.html [2] https://forum-en.msi.com/index.php?topic=289550.0 [3] http://www.bios-chip24.com/MXIC-MX-25L12873F-M2I-10G-128MBit-SPI-Flash-SOIC-... [4] https://www.flashrom.org/Supported_hardware [5] https://www.flashrom.org/MSI_JSPI1
Using the raspberry for BIOS flashing is an overkill IMHO. You could use a much simpler USB programmer CH341A, which is supported by flashrom and costs peanuts ( $2-$3 )
The dedicated tools are usually more reliable than "all-in-one" Its just maybe your problem is RPi specific and not flashrom related If you have had another supported programmer, it would have been easier to triangulate an error
Best regards, Ivan Ivanov
2018-01-09 23:36 GMT+03:00 Fabian Köster mail@fabian-koester.com:
Hello list,
I recently tried to update the BIOS of my MSI H87-G43 [1] from an usb disk using the "M-Flash" method. The update seemed to have succeeded, but now the board does not do anything at bootup anymore. No screen output, no beeping. At first, one of the LEDs (i guess HDD activity) blinked periodically, but after a few restarts it does not even do that anymore.
After doing some research I found some guides abouting flashing the bios chip from outside. One article especially captured my interest, which described how to access the flash chip via the JSPI1 header on the mainboard from a Raspberry Pi [2].
I followed that guide, but I cannot manage to get a connection to the chip. I found out the used chip is a MX 25L12873F [3], but it is not listed as supported on [4], does this mean it will not work with Flashrom?
Or is maybe something wrong with my wiring? In contrast to the description of the JSPI1 MSI connector on [5] the connector on my board has 12 pins, so I was a little bit confused.
I am new to this topic and very thankful for any help!
Regards Fabian
[1] https://de.msi.com/Motherboard/H87-G43.html [2] https://forum-en.msi.com/index.php?topic=289550.0 [3] http://www.bios-chip24.com/MXIC-MX-25L12873F-M2I-10G-128MBit-SPI-Flash-SOIC-... [4] https://www.flashrom.org/Supported_hardware [5] https://www.flashrom.org/MSI_JSPI1
flashrom mailing list flashrom@flashrom.org https://mail.coreboot.org/mailman/listinfo/flashrom
Hello Fabian,
On 09.01.2018 21:36, Fabian Köster wrote:
After doing some research I found some guides abouting flashing the bios chip from outside. One article especially captured my interest, which described how to access the flash chip via the JSPI1 header on the mainboard from a Raspberry Pi [2].
I followed that guide, but I cannot manage to get a connection to the chip. I found out the used chip is a MX 25L12873F [3], but it is not listed as supported on [4], does this mean it will not work with Flashrom?
if I understand the datasheet of that chip correctly, flashrom should at least detect a related chip (that might even be compatible for your pur- pose).
Or is maybe something wrong with my wiring? In contrast to the description of the JSPI1 MSI connector on [5] the connector on my board has 12 pins, so I was a little bit confused.
Well, there is no standard for that connector. MSI can do there whatever they like. If you have a multimeter at hand, you can probe which pins of the header are connected to which pins of the flash chip (the flash chip should be directly above the header).
Please send a verbose log of your flashrom run (preferably taken with `-o logfile.txt` appended to your flashrom command). If you use a Rasp- berry Pi, most common problem is an unknown clock. The linux_spi pro- grammer has a `spispeed` setting that you should set to a reasonable value (it's in kHz, so try values between 100 and 10,000).
Nico
Hi Ivan, Hi Nico,
thank you very much for your help!
Using the raspberry for BIOS flashing is an overkill IMHO. You could use a much simpler USB programmer CH341A, which is supported by flashrom and costs peanuts ( $2-$3 )
I ordered that device and will give it a try as soon as it arrives.
if I understand the datasheet of that chip correctly, flashrom should at least detect a related chip (that might even be compatible for your pur- pose).
Do you have a link to that datasheet? I could not find it on their homepage.
Please send a verbose log of your flashrom run (preferably taken with `-o logfile.txt` appended to your flashrom command). If you use a Rasp- berry Pi, most common problem is an unknown clock. The linux_spi pro- grammer has a `spispeed` setting that you should set to a reasonable value (it's in kHz, so try values between 100 and 10,000).
Thanks for the hint, I will try that as well soon.
Fabian
On 11.01.2018 09:59, Fabian Köster wrote:
if I understand the datasheet of that chip correctly, flashrom should at least detect a related chip (that might even be compatible for your pur- pose).
Do you have a link to that datasheet? I could not find it on their homepage.
Hello again,
following Ivans advice I ordered a CH341A programmer, which unfortunately did not arrive yet.
I continued my experiments with the Raspi though and I would like to share the results with you.
When I run flashrom with the spispeed setting set to 70000, it now finds a "Generic flash chip "unknown SPI chip (RDID)" (0 kB, SPI).". See attached log.
Any ideas on how to continue here? Or should I just wait for the programmer to arrive.
Thanks in advance!
Fabian
Hi Fabian,
On 20.01.2018 21:22, Fabian Köster wrote:
When I run flashrom with the spispeed setting set to 70000, it now finds a "Generic flash chip "unknown SPI chip (RDID)" (0 kB, SPI).". See attached log.
Any ideas on how to continue here? Or should I just wait for the programmer to arrive.
Well, if you haven't already, try a lower speed? 70MHz is pretty high, too high for your setup. The answer flashrom gets to the RDID command "e1 908c" is close to the expect ids "c2 2018" if you shift it to the left.
Even if it seems to work less with a lower speed, please send logs for that too (e.g. spispeed=30000, 10000, 1000).
Nico
Hi Nico,
thanks for the quick feedback!
Well, if you haven't already, try a lower speed? 70MHz is pretty high, too high for your setup. The answer flashrom gets to the RDID command "e1 908c" is close to the expect ids "c2 2018" if you shift it to the left.
Okay, that seems to make sense. I tried it with lower speeds, but flashrom did not detect any chip than, so I thought it is not working.
Even if it seems to work less with a lower speed, please send logs for that too (e.g. spispeed=30000, 10000, 1000).
You find the logs attached. The lowest speed flashrom outputs "chip found" is at 31250 kHz.
Fabian
Hi Nico,
thanks for the quick feedback!
Well, if you haven't already, try a lower speed? 70MHz is pretty high, too high for your setup. The answer flashrom gets to the RDID command "e1 908c" is close to the expect ids "c2 2018" if you shift it to the left.
Okay, that seems to make sense. I tried it with lower speeds, but flashrom did not detect any chip than, so I thought it is not working.
Even if it seems to work less with a lower speed, please send logs for that too (e.g. spispeed=30000, 10000, 1000).
You find the logs attached. The lowest speed flashrom outputs "chip found" is at 31250 kHz.
Please let me know if you need more information.
Fabian
Hi,
On 20.01.2018 23:44, Fabian Köster wrote:
Even if it seems to work less with a lower speed, please send logs for that too (e.g. spispeed=30000, 10000, 1000).
You find the logs attached. The lowest speed flashrom outputs "chip found" is at 31250 kHz.
hmm, no big clue here. The flash chip doesn't react at all at lower speeds. I remember a similar case that was reported lately. IIRC, it came down to a floating /HOLD pin. Although your chip doesn't have such a pin, it has two I/O pins (3 and 7) that are not used for the regular SPI interface. You should make sure they have a defined state (e.g. connect them through series resistors to GND or VCC). If you have a multimeter at hand, you can measure the resistance between the pins and GND / VCC each while everything is turned off, and ofc. to which pins on the header they are connected.
Nico
Hi,
hmm, no big clue here. The flash chip doesn't react at all at lower speeds. I remember a similar case that was reported lately. IIRC, it came down to a floating /HOLD pin. Although your chip doesn't have such a pin, it has two I/O pins (3 and 7) that are not used for the regular SPI interface. You should make sure they have a defined state (e.g. connect them through series resistors to GND or VCC). If you have a multimeter at hand, you can measure the resistance between the pins and GND / VCC each while everything is turned off, and ofc. to which pins on the header they are connected.
I already tried putting the other pins into a defined state, which did not help. But your suggestion about the floating pin put me on the right track: I remembered I saw a hint on the Wiki about ISP and powering the board using the PSU [1] instead of the Raspi which actually did the trick! It now says:
Found Macronix flash chip "MX25L12805D" (16384 kB, SPI) on linux_spi. Found Macronix flash chip "MX25L12835F/MX25L12845E/MX25L12865E" (16384 kB, SPI) on linux_spi. Multiple flash chip definitions match the detected chip(s): "MX25L12805D", "MX25L12835F/MX25L12845E/MX25L12865E" Please specify which chip definition to use with the -c <chipname> option.
(You find a full log attached)
I will do some more experiments when I have some time and maybe add some patches for this chip.
Thanks again for your help!
Fabian
Hi again,
I now finally found the time to try reading/writing the chip. I re-used the MACRONIX_MX25L12805D configuration because it seemed quite similar to me.
Reading the chip passes without any error.
When trying to write the chip, it apparently fails to erase it, see attached log. Looking at the datasheet for my chip, I would say the first erase function (opcode 0x20) with 4096 4K blocks should work.
I tried with different spispeeds without any difference.
Any ideas?
Thanks
Fabian
missed the logfile, here it comes.