Discussion:
[flashrom] Flashing MX 25L12873F on MSI board via Raspberry Pi SPI
Fabian Köster
2018-01-09 20:36:10 UTC
Permalink
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-8
[4] https://www.flashrom.org/Supported_hardware
[5] https://www.flashrom.org/MSI_JSPI1
Ivan Ivanov
2018-01-10 19:28:37 UTC
Permalink
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
Post by Fabian Köster
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-8
[4] https://www.flashrom.org/Supported_hardware
[5] https://www.flashrom.org/MSI_JSPI1
_______________________________________________
flashrom mailing list
https://mail.coreboot.org/mailman/listinfo/flashrom
Nico Huber
2018-01-10 20:41:42 UTC
Permalink
Hello Fabian,
Post by Fabian Köster
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).
Post by Fabian Köster
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
Fabian Köster
2018-01-11 08:59:50 UTC
Permalink
Hi Ivan,
Hi Nico,

thank you very much for your help!
Post by Ivan Ivanov
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.
Post by Ivan Ivanov
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.
Post by Ivan Ivanov
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
Nico Huber
2018-01-11 09:35:09 UTC
Permalink
Post by Fabian Köster
Post by Nico Huber
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.
http://lmgtfy.com/?q=MX25L12873F+pdf
Fabian Köster
2018-01-20 20:22:36 UTC
Permalink
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
Nico Huber
2018-01-20 21:04:50 UTC
Permalink
Hi Fabian,
Post by Fabian Köster
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
Fabian Köster
2018-01-20 22:44:01 UTC
Permalink
Hi Nico,

thanks for the quick feedback!
Post by Nico Huber
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.
Post by Nico Huber
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
Nico Huber
2018-01-20 23:49:56 UTC
Permalink
Hi,
Post by Fabian Köster
Post by Nico Huber
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
Fabian Köster
2018-01-21 18:21:52 UTC
Permalink
Hi,
Post by Nico Huber
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

[1] https://www.flashrom.org/ISP
Fabian Köster
2018-01-25 07:44:50 UTC
Permalink
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
Fabian Köster
2018-01-25 07:46:03 UTC
Permalink
missed the logfile, here it comes.

Fabian Köster
2018-01-20 22:06:09 UTC
Permalink
Hi Nico,

thanks for the quick feedback!
Post by Nico Huber
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.
Post by Nico Huber
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
Loading...