<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.recessim.com/w/index.php?action=history&amp;feed=atom&amp;title=Dump_EEPROM</id>
	<title>Dump EEPROM - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.recessim.com/w/index.php?action=history&amp;feed=atom&amp;title=Dump_EEPROM"/>
	<link rel="alternate" type="text/html" href="https://wiki.recessim.com/w/index.php?title=Dump_EEPROM&amp;action=history"/>
	<updated>2026-05-09T05:40:08Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>https://wiki.recessim.com/w/index.php?title=Dump_EEPROM&amp;diff=2839&amp;oldid=prev</id>
		<title>L0scher: /* Identify the device */</title>
		<link rel="alternate" type="text/html" href="https://wiki.recessim.com/w/index.php?title=Dump_EEPROM&amp;diff=2839&amp;oldid=prev"/>
		<updated>2025-03-16T21:25:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Identify the device&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 21:25, 16 March 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l33&quot; &gt;Line 33:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 33:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Double check your wiring before powering up the Raspberry Pi!''' Failure do so can permanently damage either the Pi, your Pi power supply, the device to which you're connecting ''or all three.''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Double check your wiring before powering up the Raspberry Pi!''' Failure do so can permanently damage either the Pi, your Pi power supply, the device to which you're connecting ''or all three.''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;One &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;addition &lt;/del&gt;connection is needed, which is to connect the microprocessor's #RESET line to a logic low to keep the processor in reset so that it does not interfere with the Pi reading the memory.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;One &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;additional &lt;/ins&gt;connection is needed, which is to connect the microprocessor's #RESET line to a logic low to keep the processor in reset so that it does not interfere with the Pi reading the memory.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Software ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Software ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key RECESSIM:diff::1.12:old-2837:rev-2839 --&gt;
&lt;/table&gt;</summary>
		<author><name>L0scher</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.recessim.com/w/index.php?title=Dump_EEPROM&amp;diff=2837&amp;oldid=prev</id>
		<title>L0scher: Created page with &quot;A serial EEPROM is a small IC that stores data in a physically compact package.  These are often used in electronic equipment and it's useful to dump the contents of such devi...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.recessim.com/w/index.php?title=Dump_EEPROM&amp;diff=2837&amp;oldid=prev"/>
		<updated>2025-03-16T21:21:32Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;A serial EEPROM is a small IC that stores data in a physically compact package.  These are often used in electronic equipment and it&amp;#039;s useful to dump the contents of such devi...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;A serial EEPROM is a small IC that stores data in a physically compact package.  These are often used in electronic equipment and it's useful to dump the contents of such devices to do a thorough job of reverse engineering.  &lt;br /&gt;
&lt;br /&gt;
== Using a Raspberry Pi ==&lt;br /&gt;
Because many of these devices are 3.3V parts, it's often possible to dump the contents of such devices using nothing more than a Raspberry Pi, some micrograbbers and jumpers.  As an example of this, we'll show the steps involved in using a Raspberry Pi Zero W to read the contents of the EEPROM in a L+G meter board.&lt;br /&gt;
&lt;br /&gt;
== Identify the device ==&lt;br /&gt;
The EEPROM in the L+G Focus meter is an Atmel (formerly Adesto) [https://www.digikey.com/htmldatasheets/production/1309927/0/0/1/at45db081d-datasheet.html 45DB081D], which is an 8-megabit flash memory that has a [https://en.wikipedia.org/wiki/Serial_Peripheral_Interface SPI bus] interface.  Since this part can be powered by 3.3V and the Raspberry Pi already has a SPI bus, all that's required is to connect the two. &lt;br /&gt;
&lt;br /&gt;
Here is one way to do that:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Function !! EEPROM pin # !! Pi pin #&lt;br /&gt;
|-&lt;br /&gt;
| MOSI || 1 || 19&lt;br /&gt;
|-&lt;br /&gt;
| SCLK || 2 || 23&lt;br /&gt;
|-&lt;br /&gt;
| #RESET || 3 || VCC&lt;br /&gt;
|-&lt;br /&gt;
| #CS || 4 || 24&lt;br /&gt;
|-&lt;br /&gt;
| #WP || 5 || VCC&lt;br /&gt;
|-&lt;br /&gt;
| VCC || 6 || 17&lt;br /&gt;
|-&lt;br /&gt;
| GND || 7 || 25&lt;br /&gt;
|-&lt;br /&gt;
| MISO || 8 || 21&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Double check your wiring before powering up the Raspberry Pi!''' Failure do so can permanently damage either the Pi, your Pi power supply, the device to which you're connecting ''or all three.''&lt;br /&gt;
&lt;br /&gt;
One addition connection is needed, which is to connect the microprocessor's #RESET line to a logic low to keep the processor in reset so that it does not interfere with the Pi reading the memory.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Once this is all done reading the EEPROM is as simple as executing this command on the Pi:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;flashrom --read dump.bin -p linux_spi:dev=/dev/spidev0.0,spispeed=10000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The speed is specified in kHz, so this corresponds to 50MHz.&lt;/div&gt;</summary>
		<author><name>L0scher</name></author>
		
	</entry>
</feed>