<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.iagent.no/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Recore_A3</id>
	<title>Recore A3 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.iagent.no/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Recore_A3"/>
	<link rel="alternate" type="text/html" href="https://wiki.iagent.no/mediawiki/index.php?title=Recore_A3&amp;action=history"/>
	<updated>2026-05-27T14:49:03Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>https://wiki.iagent.no/mediawiki/index.php?title=Recore_A3&amp;diff=1376&amp;oldid=prev</id>
		<title>Elias: /* Input stage */</title>
		<link rel="alternate" type="text/html" href="https://wiki.iagent.no/mediawiki/index.php?title=Recore_A3&amp;diff=1376&amp;oldid=prev"/>
		<updated>2024-05-28T08:52:51Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Input stage&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 08:52, 28 May 2024&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-l629&quot; &gt;Line 629:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 629:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;An experiment with a constant current load drawing 20 A from the bed connector with and without a 92 mm fan on top of the board for forced convection. The temperature measured was with the on board thermistor. Using a thermal camera, the temperature displayed matches well with the temperature reported by the camera. However, in Rev A2, this is not the hottest point on the board. The MOSFET controlling the bed seems to consistently get the highest temperature. The reason for this is probably due to a 3.3 V VGS. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;An experiment with a constant current load drawing 20 A from the bed connector with and without a 92 mm fan on top of the board for forced convection. The temperature measured was with the on board thermistor. Using a thermal camera, the temperature displayed matches well with the temperature reported by the camera. However, in Rev A2, this is not the hottest point on the board. The MOSFET controlling the bed seems to consistently get the highest temperature. The reason for this is probably due to a 3.3 V VGS. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&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 colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;div class=&amp;quot;res-img&amp;quot;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;[[File: Temperature-fan-off.pdf.png]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;[[File: Temperature-fan-off.pdf.png]]&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;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;&amp;#160;&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;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/div&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;div class=&amp;quot;res-img&amp;quot;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;[[File:Temperature-fan.pdf.png]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;[[File:Temperature-fan.pdf.png]]&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;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;&amp;#160;&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;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/div&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;====Inrush current====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;====Inrush current====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;During turn on of the high power stage, there will be an inrush current to charge up the bank of capacitors present on the board. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;During turn on of the high power stage, there will be an inrush current to charge up the bank of capacitors present on the board. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;If no loads are turned on, the inrush current reaches 31 A at peak. This is important to consider when setting the current limit with device tree. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;If no loads are turned on, the inrush current reaches 31 A at peak. This is important to consider when setting the current limit with device tree. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;div class=&amp;quot;res-img&amp;quot;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;[[File:Inrush current A3.png]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;[[File:Inrush current A3.png]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/div&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&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;&amp;#160;&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;===Temperature low pass filter===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;===Temperature low pass filter===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Elias</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.iagent.no/mediawiki/index.php?title=Recore_A3&amp;diff=1375&amp;oldid=prev</id>
		<title>Elias at 08:52, 28 May 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.iagent.no/mediawiki/index.php?title=Recore_A3&amp;diff=1375&amp;oldid=prev"/>
		<updated>2024-05-28T08:52:21Z</updated>

		<summary type="html">&lt;p&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 08:52, 28 May 2024&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-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;==Recore Rev A3==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;==Recore Rev A3==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;div class=&amp;quot;res-img&amp;quot;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;[[File:Recore header.png]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;[[File:Recore header.png]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/div&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;This document is for Revision A3, please see [[Recore_A2]] for the previous version.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;This document is for Revision A3, please see [[Recore_A2]] for the previous version.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&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;/table&gt;</summary>
		<author><name>Elias</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.iagent.no/mediawiki/index.php?title=Recore_A3&amp;diff=326&amp;oldid=prev</id>
		<title>Elias: /* Install AR100 firmware */</title>
		<link rel="alternate" type="text/html" href="https://wiki.iagent.no/mediawiki/index.php?title=Recore_A3&amp;diff=326&amp;oldid=prev"/>
		<updated>2021-08-20T15:29:06Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Install AR100 firmware&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 15:29, 20 August 2021&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-l125&quot; &gt;Line 125:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 125:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&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;&amp;#160;&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;====Install AR100 firmware ====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;====Install AR100 firmware ====&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;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;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The ar100 needs to be compiled on an x86_64 computer. The reason &lt;/del&gt;for &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;this is the lack of an or1k toolchain for aarch64. &lt;/del&gt;&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;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;See [[Refactor#AR100_firmware]] &lt;/ins&gt;for &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;instructions&lt;/ins&gt;&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;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;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;On a host computer:&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;pre&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;cp .config_ar100 .config&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;make&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;scp out/ar100.bin root@recore.local:/home/klipper/klipper/out/&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;On the Recore board:&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;pre&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;sudo /home/klipper/klipper/scripts/flash-ar100.py /home/klipper/klipper/out/ar100.bin&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&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;&amp;#160;&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;====Running Klipper====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;====Running Klipper====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Elias</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.iagent.no/mediawiki/index.php?title=Recore_A3&amp;diff=297&amp;oldid=prev</id>
		<title>Elias: /* Hardware overview */</title>
		<link rel="alternate" type="text/html" href="https://wiki.iagent.no/mediawiki/index.php?title=Recore_A3&amp;diff=297&amp;oldid=prev"/>
		<updated>2021-08-10T22:21:23Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Hardware overview&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 22:21, 10 August 2021&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-l4&quot; &gt;Line 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 4:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&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;&amp;#160;&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;==Hardware overview==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;==Hardware overview==&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;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;[[File:Recore_pinout.png]]&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;[[File:Recore_pinout.png&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|1024px&lt;/ins&gt;]]&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;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;[[File:Recore-wire-diagram.png]]&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;[[File:Recore-wire-diagram.png&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|1024px&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&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;&amp;#160;&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 for Recore=&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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 for Recore=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Elias</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.iagent.no/mediawiki/index.php?title=Recore_A3&amp;diff=213&amp;oldid=prev</id>
		<title>Elias: Created page with &quot;==Recore Rev A3== File:Recore header.png This document is for Revision A3, please see Recore_A2 for the previous version.  ==Hardware overview== File:Recore_pinout.p...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.iagent.no/mediawiki/index.php?title=Recore_A3&amp;diff=213&amp;oldid=prev"/>
		<updated>2021-05-04T19:28:51Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;==Recore Rev A3== &lt;a href=&quot;/wiki/File:Recore_header.png&quot; title=&quot;File:Recore header.png&quot;&gt;File:Recore header.png&lt;/a&gt; This document is for Revision A3, please see &lt;a href=&quot;/wiki/Recore_A2&quot; title=&quot;Recore A2&quot;&gt;Recore_A2&lt;/a&gt; for the previous version.  ==Hardware overview== File:Recore_pinout.p...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Recore Rev A3==&lt;br /&gt;
[[File:Recore header.png]]&lt;br /&gt;
This document is for Revision A3, please see [[Recore_A2]] for the previous version.&lt;br /&gt;
&lt;br /&gt;
==Hardware overview==&lt;br /&gt;
[[File:Recore_pinout.png]]&lt;br /&gt;
[[File:Recore-wire-diagram.png]]&lt;br /&gt;
&lt;br /&gt;
=Software for Recore=&lt;br /&gt;
Recore should come pre-flashed with ReFactor image. If you want to update that, here are the steps: &lt;br /&gt;
===ReFactor===&lt;br /&gt;
====Flashing ReFactor from a USB drive====&lt;br /&gt;
Get the latest ReFactor image from here: https://github.com/goeland86/ReFactor/releases&lt;br /&gt;
for example: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://github.com/goeland86/ReFactor/releases/download/v3.0.0-RC4/ReFactor-recore-v3.0.0-RC4.img.xz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Assuming you have managed to boot Recore from a USB flash drive and you have the ReFactor image available in the same folder, you can &lt;br /&gt;
use dd to do a direct transfer of the image from the USB drive to eMMC. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xz -v -d -c Refactor-recore-v3.0.0-RC3.img.xz  | dd of=/dev/mmcblk0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that, make sure you flash the right u-boot version.&lt;br /&gt;
&lt;br /&gt;
===From Scratch===&lt;br /&gt;
&lt;br /&gt;
Starting with Armbian Buster Server for Pine 64 (kernel 5.4) https://redirect.armbian.com/pine64/Buster_current&lt;br /&gt;
Flash the software to a USB drive. &lt;br /&gt;
&lt;br /&gt;
Once flashed, it's necessary to add the Recore device tree to the right folder. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp sun50i-a64-recore.dtb /media/xxx/boot/dtb/allwinner/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With a clean board, it's necessary to start the board from a host computer using FEL mode. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sunxi-fel -v -p spl sunxi-spl.bin write 0x44000 bl31.bin write 0x4a000000 u-boot.bin reset64 0x44000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The output will appear in teminal UART0. You can use minicom on a host computer to watch the boot process and get a login screen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
minicom -D /dev/ttyUSB0 -w&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If a dongle with Armbian is present in one of the USB host slots, it should boot from the dongle.&lt;br /&gt;
&lt;br /&gt;
==== Booting from USB if an OS is present on the eMMC ====&lt;br /&gt;
If the eMMC is parititioned and has an OS, u-boot will launch right into that. In order to override that and &lt;br /&gt;
boot from a USB dongle, stop u-boot by pressing a key and then write:  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv devnum 0&lt;br /&gt;
run usb_boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install distro to eMMC ===&lt;br /&gt;
Create Partition: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export card=/dev/mmcblk0&lt;br /&gt;
blockdev --rereadpt ${card}&lt;br /&gt;
cat &amp;lt;&amp;lt;EOT | sfdisk ${card}&lt;br /&gt;
1M,,L&lt;br /&gt;
EOT&lt;br /&gt;
mkfs.ext4 ${card}p1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Copy Kernel and rootfs to eMMC====&lt;br /&gt;
Use the flash script in Redist&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount /dev/mmcblk0p1  /mnt/&lt;br /&gt;
rsync -aAx --human-readable --info=name0,progress2 --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/media/*,/mnt/*,lost+found/} /* /mnt&lt;br /&gt;
echo &amp;quot;rootdev=/dev/mmcblk0p1&amp;quot; &amp;gt;&amp;gt; /mnt/boot/armbianEnv.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Update the UUID in fstab to the UUID of the eMMC part 1&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export UUID=`blkid | grep mmcblk0p1 | awk -F'&amp;quot;' '{print $2}'`&lt;br /&gt;
sed -i &amp;quot;s/UUID=.*\//UUID=$UUID \//g&amp;quot; /mnt/etc/fstab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Make eMMC bootable====&lt;br /&gt;
Place U-boot-spl in sector 15 (8KB offset)  &lt;br /&gt;
Clean card:  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dd if=/dev/zero of=/dev/mmcblk0 bs=1k count=1023 seek=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Flash the binary &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dd if=u-boot-sunxi-with-spl.bin of=/dev/mmcblk0 bs=1024 seek=8 conv=notrunc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: U-boot needs to be patched in order to use the eMMC as the first (and only) boot device. &lt;br /&gt;
The changes can be done in &amp;quot;spl_mmc_get_device_index&amp;quot; where dev_num should be 0 instead of 1.&lt;br /&gt;
&lt;br /&gt;
===Install Klipper===&lt;br /&gt;
It's good to add a separate user for Klipper:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
useradd klipper -s /bin/bash -G sudo,dialout&lt;br /&gt;
passwd klipper&lt;br /&gt;
mkdir /home/klipper&lt;br /&gt;
chown klipper:klipper /home/klipper&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su klipper&lt;br /&gt;
cd ~&lt;br /&gt;
git clone https://github.com/intelligent-agent/klipper&lt;br /&gt;
cp klipper/config/generic-recore.cfg ./printer.cfg&lt;br /&gt;
./klipper/scripts/install-recore-a3.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can check the log by writing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tail -f /tmp/klippy.log &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Install STM32 firmware ====&lt;br /&gt;
This flash scripts requires gpiod&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install gpiod&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/klipper/klipper&lt;br /&gt;
cp .config_stm32 .config&lt;br /&gt;
make&lt;br /&gt;
sudo ./scripts/flash-stm32.sh out/klipper.bin (might have to be run several times)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Install AR100 firmware ====&lt;br /&gt;
The ar100 needs to be compiled on an x86_64 computer. The reason for this is the lack of an or1k toolchain for aarch64. &lt;br /&gt;
On a host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp .config_ar100 .config&lt;br /&gt;
make&lt;br /&gt;
scp out/ar100.bin root@recore.local:/home/klipper/klipper/out/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the Recore board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo /home/klipper/klipper/scripts/flash-ar100.py /home/klipper/klipper/out/ar100.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Running Klipper====&lt;br /&gt;
After a reboot, the ar100 firmware needs to be reflashed. We will get this into an automatic routine eventually, bit for now: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo /home/klipper/klipper/scripts/flash-ar100.py /home/klipper/klipper/out/ar100.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While details are ironed out there is a script that can be used to restart Klipper that will handle &lt;br /&gt;
resetting things and setting up the steppers etc. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home/klipper/klipper/scripts/restart-recore.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Giving right privileges for AR100 restart====&lt;br /&gt;
The AR100 flasher and reset script needs to be run as root. &lt;br /&gt;
We create a group called flashers, add klipper to that and gie the group sudo access to the script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo addgroup flashers&lt;br /&gt;
sudo adduser klipper flashers&lt;br /&gt;
echo '%flashers ALL=(ALL) NOPASSWD: /home/klipper/klipper/scripts/flash-ar100.py *, /usr/bin/gpioset *' &amp;gt; /etc/sudoers.d/flashers&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Install Octoprint===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su klipper&lt;br /&gt;
cd ~&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install python-pip python-dev python-setuptools python-virtualenv git libyaml-dev build-essential&lt;br /&gt;
mkdir OctoPrint &amp;amp;&amp;amp; cd OctoPrint&lt;br /&gt;
virtualenv venv&lt;br /&gt;
source venv/bin/activate&lt;br /&gt;
pip install pip --upgrade&lt;br /&gt;
pip install octoprint&lt;br /&gt;
./venv/bin/octoprint serve&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add a systemd start-up script &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /lib/systemd/system/octoprint.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Add the following content&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=The snappy web interface for your 3D printer&lt;br /&gt;
After=network-online.target&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
User=klipper&lt;br /&gt;
ExecStart=/home/klipper/OctoPrint/venv/bin/octoprint&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable and start script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo systemctl enable octoprint&lt;br /&gt;
sudo systemctl start octoprint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Manual control and testing=&lt;br /&gt;
To use the examples in this section, first install gpiod&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install gpiod&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
====Power domains====&lt;br /&gt;
There are 9 power domains around the board controlling voltage on different pins: &lt;br /&gt;
* &amp;lt;b&amp;gt;Input power&amp;lt;/b&amp;gt; controls power to 4 high power outputs, the 4 fans and the 6 stepper drivers. This input has current monitoring, fast acting over current protection, voltage monitoring, temperature monitoring and reverse polarity protection.&lt;br /&gt;
* &amp;lt;b&amp;gt;Thermo couple power&amp;lt;/b&amp;gt; Controls +5V/1A output to the ADCs. This can be used for turning on power to the analog pins. &lt;br /&gt;
* &amp;lt;b&amp;gt;End stop power&amp;lt;/b&amp;gt; Controls +5V/1A output on the six endstops. Ganged. ES5 can be switched to have 12V output. The 12V output has a &lt;br /&gt;
100mA internal current limit. &lt;br /&gt;
* &amp;lt;b&amp;gt;4 USB host power domains&amp;lt;/b&amp;gt; Controls 5V/1A current output to the usb host connectors. These are turned on by u-boot.&lt;br /&gt;
*&amp;lt;b&amp;gt;HDMI 5V output&amp;lt;/b&amp;gt; Controls the 5V/1A HDMI output. Turned on by u-boot. &lt;br /&gt;
&lt;br /&gt;
====Input stage====&lt;br /&gt;
Reset over current protection and set it in &amp;quot;one-shot&amp;quot; mode.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gpioset 1 193=0&lt;br /&gt;
gpioset 1 193=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The over current protection can also be set in &amp;quot;transparent&amp;quot; mode, where the current alarm &lt;br /&gt;
will be reset automatically. Note that this is a bad idea for general operation, only use for testing. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gpioset 1 193=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable 24V input&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gpioset 1 194=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====End stop 5V /12V====&lt;br /&gt;
End stop 0 to 4 has a programmable +5V output voltage. &lt;br /&gt;
End stop 5 has +5V or +12V selectable.&lt;br /&gt;
&lt;br /&gt;
To enable +5V on ES 0...4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gpioset 1 203=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To disable again&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gpioset 1 203=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To switch to 12V output on ES5&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gpioset 1 199=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To disable again&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gpioset 1 199=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====End stops values====&lt;br /&gt;
To see what value the end stops have&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gpioget 1 228 # ES 5&lt;br /&gt;
gpioget 1 229&lt;br /&gt;
gpioget 1 230&lt;br /&gt;
gpioget 1 231&lt;br /&gt;
gpioget 1 232&lt;br /&gt;
gpioget 1 233 # ES 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====HDMI power ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo 201 &amp;gt; /sys/class/gpio/export&lt;br /&gt;
echo out &amp;gt; /sys/class/gpio/gpio201/direction&lt;br /&gt;
echo 1 &amp;gt; /sys/class/gpio/gpio201/value&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====TMC2209====&lt;br /&gt;
In window/shell 1:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
stty -F /dev/ttyS2 raw -echoe -echo&lt;br /&gt;
xxd -c 4 /dev/ttyS2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In window/shell 2:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo -n -e '\x5\x0\x6\x6F' &amp;gt; /dev/ttyS2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The return should be along the lines of&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00000000: 0500 066f  ...o&lt;br /&gt;
00000004: 05ff 0620  ... &lt;br /&gt;
00000008: 0001 4058  ..@X&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To read the OTP registers&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo -n -e &amp;quot;\x5\x0\x5\x21&amp;quot; &amp;gt; /dev/ttyS2&lt;br /&gt;
echo -n -e &amp;quot;\x5\x0\x5\x21&amp;quot; &amp;gt; /dev/ttyS3&lt;br /&gt;
echo -n -e &amp;quot;\x5\x1\x5\x97&amp;quot; &amp;gt; /dev/ttyS2&lt;br /&gt;
echo -n -e &amp;quot;\x5\x1\x5\x97&amp;quot; &amp;gt; /dev/ttyS3&lt;br /&gt;
echo -n -e &amp;quot;\x5\x2\x5\x7a&amp;quot; &amp;gt; /dev/ttyS2&lt;br /&gt;
echo -n -e &amp;quot;\x5\x2\x5\x7a&amp;quot; &amp;gt; /dev/ttyS3&lt;br /&gt;
echo -n -e &amp;quot;\x5\x3\x5\xcc&amp;quot; &amp;gt; /dev/ttyS2&lt;br /&gt;
echo -n -e &amp;quot;\x5\x3\x5\xcc&amp;quot; &amp;gt; /dev/ttyS3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To set the OTP register to use RDSon:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo -n -e &amp;quot;\x5\x0\x84\x0\x0\xbd\x6\xac&amp;quot; &amp;gt; /dev/ttyS2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To check that no errors are reported by the steppers write this on the command line. If a &amp;quot;1&amp;quot; shows up, that is an indication that the motor is reporting an error. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gpioget 1 128&lt;br /&gt;
gpioget 1 129&lt;br /&gt;
gpioget 1 130&lt;br /&gt;
gpioget 1 131&lt;br /&gt;
gpioget 1 132&lt;br /&gt;
gpioget 1 133&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== STM32F031 ====&lt;br /&gt;
There is a small firmware to test all functionality that is controlled by the STM32F031 chip on the board. &lt;br /&gt;
Once uploaded to the board using the flash script, the firmware will turn on all LEDs it controls and send &lt;br /&gt;
back ADC readings. &lt;br /&gt;
&lt;br /&gt;
To flash this firmware to the STM32:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gpioset 1 197=1&lt;br /&gt;
gpioset 1 196=0&lt;br /&gt;
stm32flash -i -196,196 -w Sumato-f031.bin -v -g 0x00 /dev/ttyS1&lt;br /&gt;
gpioset 1 197=0&lt;br /&gt;
stm32flash -i -196,196 /dev/ttyS1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the ADC readings: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
stty -F /dev/ttyS3 38400 raw&lt;br /&gt;
cat /dev/ttyS3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You should see something like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ADC T0: 0&lt;br /&gt;
ADC T1: 0&lt;br /&gt;
ADC T2: 0&lt;br /&gt;
ADC T3: 0&lt;br /&gt;
ADC U: 2338&lt;br /&gt;
ADC I: 0&lt;br /&gt;
ADC TB: 3417&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following one-liners assumes gawk is installed.&lt;br /&gt;
&lt;br /&gt;
===Reading Current===&lt;br /&gt;
The current shunt resistor is 1 mOhm, the amplifier is 20 times, the vref is 3.3V, so we get:&lt;br /&gt;
(adc_val/4096*3.3)*1000/20 = (adc_val/4096)*165&lt;br /&gt;
You can convert the current (as in amps) reading to something useful like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /dev/ttyS3 | awk '/I:/ { printf &amp;quot;scale=4; (%i/4096)*165\n&amp;quot;, $3; fflush(); }' | bc -l&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Reading Board Temperature===&lt;br /&gt;
To see the temperature readings, try this : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export beta=4327&lt;br /&gt;
cat /dev/ttyS1 | awk '/TB:/ { printf &amp;quot;scale=4; 4327/l( (4700/((3.3/(3.3*%i/4096))-1.0))/0.05306820342563400000) -273.15\n&amp;quot;, $3; fflush(); }' | bc -l | awk '{print strftime(&amp;quot;%k:%M:%S&amp;quot;), $0; fflush();}'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Reading Input Voltage===&lt;br /&gt;
To see voltage on the input, it can be converted like this: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /dev/ttyS3 | awk '/T:/ { printf &amp;quot;scale=4; (%i/4096)*3.3\n&amp;quot;, $3; fflush(); }' | bc -l&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Thermistor inputs===&lt;br /&gt;
To enable pull-up on input for using thermistors for temperature measurements: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gpioset 1 102=1&lt;br /&gt;
gpioset 1 120=1&lt;br /&gt;
gpioset 1 160=1&lt;br /&gt;
gpioset 1 161=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting Op-amp gain to 1:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gpioget 1 100&lt;br /&gt;
gpioget 1 235&lt;br /&gt;
gpioget 1 145&lt;br /&gt;
gpioget 1 34&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the device tree file, the gpio/ldos must be set to gpio input:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;gpio0_ldo {&lt;br /&gt;
  function = &amp;quot;gpio_in&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Thermocouple input===&lt;br /&gt;
Either a thermocouple or a thermistor can be used as input on the &lt;br /&gt;
T0-T3 inputs. &lt;br /&gt;
====Bias====&lt;br /&gt;
The thermocouple is set up to have a Bias of 0.7V/100 on the input which enables negative &lt;br /&gt;
values (lower than the board temperature) as input to the ADCs. &lt;br /&gt;
With the input short circuited, the bias can be recorded. Typical values are 750&lt;br /&gt;
This needs to be subtracted from the result.&lt;br /&gt;
====Cold junction compensation====&lt;br /&gt;
Another important aspect is cold junction compensation. &lt;br /&gt;
There is a thermistor connected on the board close to the thermocouple inputs&lt;br /&gt;
which can be used to measure the temperature close to the input junction. &lt;br /&gt;
This temperature must be added in software.&lt;br /&gt;
&lt;br /&gt;
For Rev A3, the cold junction compensation is actually located a bit away from the junction, so it might not be &lt;br /&gt;
accurate. The connected thermistor is a TDK [https://product.tdk.com/info/en/catalog/datasheets/503021/tpd_commercial_ntc-thermistor_ntcg_en.pdf NTCG104EF104FT1X]&lt;br /&gt;
The connected Thermocouple has a (25/100) beta value of 4327. &lt;br /&gt;
&lt;br /&gt;
In order to use the inputs for thermocouple, the pull-up resistors must be deactivated: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gpioget 1 102&lt;br /&gt;
gpioget 1 120&lt;br /&gt;
gpioget 1 160&lt;br /&gt;
gpioget 1 161&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also, the op-amp needs a gain of 100:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gpioset 1 100=0&lt;br /&gt;
gpioset 1 235=0&lt;br /&gt;
gpioset 1 145=0&lt;br /&gt;
gpioset 1 34=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, the input bias needs to be enabled. The following LDOs needs to be enabled:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
reg_ldo_io0&lt;br /&gt;
reg_ldo_io1&lt;br /&gt;
reg_dldo3&lt;br /&gt;
reg_dldo4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AR100 ===&lt;br /&gt;
See also: [[AR100]]&lt;br /&gt;
==== Loading a binary into SRAM A2 ====&lt;br /&gt;
Get Crust in order to load the AR100 bin file into memory&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://github.com/intelligent-agent/ar100-fw&lt;br /&gt;
cd ar100-fw&lt;br /&gt;
make defconfig&lt;br /&gt;
HOST_COMPILE= make tools&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Once the load program is compiled, an AR100 binary blob can be loaded with&lt;br /&gt;
&amp;lt;PRE&amp;gt;./ar100-fw/build/tools/load scp.bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
Please note that the AR100 binary file bust be 8 byte aligned, meaning that the size must be divisible by 8.&lt;br /&gt;
&lt;br /&gt;
=Performance=&lt;br /&gt;
==Start-up time==&lt;br /&gt;
With a maximum clock for MMC2 of 200 MHz, here is the start-up time: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@recore-3:~# systemd-analyze &lt;br /&gt;
Startup finished in 5.128s (kernel) + 11.567s (userspace) = 16.695s &lt;br /&gt;
graphical.target reached after 11.421s in userspace&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Measured voltages==&lt;br /&gt;
Instruments used: &lt;br /&gt;
* Siglent SDM3065X, 6.5 digit multimeter&lt;br /&gt;
* HP 3458A, 8.5 digit multimeter&lt;br /&gt;
* HP 3245A, Universal Source &lt;br /&gt;
&lt;br /&gt;
====Microcontroller voltages====&lt;br /&gt;
VDDA uC: 3.312 V&amp;lt;br&amp;gt;&lt;br /&gt;
VDD uC: 3.312 V&lt;br /&gt;
&lt;br /&gt;
Voltage from the PMIC supplied as bias:&amp;lt;br&amp;gt;&lt;br /&gt;
0.706 V &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Offset and Gain Measurements====&lt;br /&gt;
Input voltage measured with SDM3065X, output voltage measured with 3458A. &lt;br /&gt;
Programmable Voltage reference used was the DIY DAC cape made by Elias. &lt;br /&gt;
Measurements should be repeated with HP 3245A. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;|Op-amp gain measurements&lt;br /&gt;
|-&lt;br /&gt;
|Vin (mV)&lt;br /&gt;
|Vout (V)&lt;br /&gt;
|Gain&lt;br /&gt;
|-&lt;br /&gt;
|1.0103	&lt;br /&gt;
|0.754	&lt;br /&gt;
|95.73&lt;br /&gt;
|-&lt;br /&gt;
|2.0038	&lt;br /&gt;
|0.8492	&lt;br /&gt;
|95.78&lt;br /&gt;
|-&lt;br /&gt;
|3.013	&lt;br /&gt;
|0.9457	&lt;br /&gt;
|95.72&lt;br /&gt;
|-&lt;br /&gt;
|4.0032	&lt;br /&gt;
|1.04&lt;br /&gt;
|95.60&lt;br /&gt;
|-&lt;br /&gt;
|5.0108	&lt;br /&gt;
|1.1372	&lt;br /&gt;
|95.78&lt;br /&gt;
|-&lt;br /&gt;
|6.0016	&lt;br /&gt;
|1.232	&lt;br /&gt;
|95.76&lt;br /&gt;
|-&lt;br /&gt;
|7.0094	&lt;br /&gt;
|1.3285	&lt;br /&gt;
|95.76&lt;br /&gt;
|-&lt;br /&gt;
|8.0015	&lt;br /&gt;
|1.4235	&lt;br /&gt;
|95.76&lt;br /&gt;
|-&lt;br /&gt;
|9.0106	&lt;br /&gt;
|1.5201	&lt;br /&gt;
|95.76&lt;br /&gt;
|-&lt;br /&gt;
|10.0005	&lt;br /&gt;
|1.615	&lt;br /&gt;
|95.77&lt;br /&gt;
|-&lt;br /&gt;
|11.0102	&lt;br /&gt;
|1.7116	&lt;br /&gt;
|95.76&lt;br /&gt;
|-&lt;br /&gt;
|12.0042	&lt;br /&gt;
|1.8067	&lt;br /&gt;
|95.75&lt;br /&gt;
|-&lt;br /&gt;
|13.0142	&lt;br /&gt;
|1.9035	&lt;br /&gt;
|95.76&lt;br /&gt;
|-&lt;br /&gt;
|14.0056	&lt;br /&gt;
|1.9985	&lt;br /&gt;
|95.76&lt;br /&gt;
|-&lt;br /&gt;
|15.0145	&lt;br /&gt;
|2.095	&lt;br /&gt;
|95.76&lt;br /&gt;
|-&lt;br /&gt;
|16.0055	&lt;br /&gt;
|2.1899	&lt;br /&gt;
|95.76&lt;br /&gt;
|-&lt;br /&gt;
|17.0145	&lt;br /&gt;
|2.2865	&lt;br /&gt;
|95.75&lt;br /&gt;
|-&lt;br /&gt;
|18.0055	&lt;br /&gt;
|2.3813	&lt;br /&gt;
|95.75&lt;br /&gt;
|-&lt;br /&gt;
|19.0163	&lt;br /&gt;
|2.4783	&lt;br /&gt;
|95.76&lt;br /&gt;
|-&lt;br /&gt;
|20.0067	&lt;br /&gt;
|2.5723	&lt;br /&gt;
|95.72&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[File:Vin-vs-vout.png]]&lt;br /&gt;
&lt;br /&gt;
An experiment was done using an HP 3245A and a HP 3458A measuring the input and output voltages and calculating offset and gain. This will become a part of a calibration routine during final testing and flashing, values should be stored with the board. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Input 1	Vin	Vout	Offset	&lt;br /&gt;
	0.0003	0.6685	0.6685	&lt;br /&gt;
				&lt;br /&gt;
Vin set	Vin	Vout	Gain	Deviation&lt;br /&gt;
-5 mV	-4.9983	0.1840	96.93	0.16&lt;br /&gt;
0 mV	0.0003	0.6685	96.76	-0.01&lt;br /&gt;
5 mV	5.0000	1.1523	96.77	0.00&lt;br /&gt;
10 mV	10.0013	1.6355	96.69	-0.08&lt;br /&gt;
15 mV	15.0005	2.1198	96.75	-0.01&lt;br /&gt;
20 mV	20.0005	2.6025	96.70	-0.07&lt;br /&gt;
	Average gain		96.77	&lt;br /&gt;
				&lt;br /&gt;
				&lt;br /&gt;
				&lt;br /&gt;
Input 2	Vin	Vout	Offset	&lt;br /&gt;
	0.0017	0.6485	0.6483	&lt;br /&gt;
				&lt;br /&gt;
				&lt;br /&gt;
Vin set	Vin	Vout	Gain	Deviation&lt;br /&gt;
-5 mV	-4.9961	0.1722	95.30	-0.07&lt;br /&gt;
0 mV	0.0017	0.6485	95.37	-0.01&lt;br /&gt;
5 mV	5.0014	1.1253	95.37	-0.01&lt;br /&gt;
10 mV	10.003	1.6025	95.39	0.01&lt;br /&gt;
15 mV	15.0021	2.0793	95.38	0.01&lt;br /&gt;
20 mV	20.0023	2.5559	95.37	-0.01&lt;br /&gt;
	Average gain		95.38	&lt;br /&gt;
				&lt;br /&gt;
				&lt;br /&gt;
Input 3	Vin	Vout	Offset	&lt;br /&gt;
	0.0013	0.6560	0.6559	&lt;br /&gt;
				&lt;br /&gt;
				&lt;br /&gt;
Vin set	Vin	Vout	Gain	Deviation&lt;br /&gt;
-5 mV	-4.9969	0.1794	95.35	-0.02&lt;br /&gt;
0 mV	0.0013	0.6560	95.35	-0.03&lt;br /&gt;
5 mV	5.0012	1.1329	95.38	0.01&lt;br /&gt;
10 mV	10.0025	1.6098	95.37	-0.01&lt;br /&gt;
15 mV	15.0015	2.0864	95.36	-0.02&lt;br /&gt;
20 mV	20.0013	2.5631	95.35	-0.02&lt;br /&gt;
	Average gain		95.36	&lt;br /&gt;
				&lt;br /&gt;
				&lt;br /&gt;
Input 4	Vin	Vout	Offset	&lt;br /&gt;
	0.0024	0.6498	0.6496	&lt;br /&gt;
				&lt;br /&gt;
				&lt;br /&gt;
Vin set	Vin	Vout	Gain	Deviation&lt;br /&gt;
-5 mV	-4.9954	0.1714	96.98	1.18&lt;br /&gt;
0 mV	0.0024	0.6498	94.50	-1.31&lt;br /&gt;
5 mV	5.0015	1.1283	95.96	0.16&lt;br /&gt;
10 mV	10.0028	1.6069	95.83	0.02&lt;br /&gt;
15 mV	15.0024	2.0853	95.78	-0.02&lt;br /&gt;
20 mV	20.0022	2.5642	95.78	-0.02&lt;br /&gt;
	Average gain		95.81	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====5V Buck converter ripple and noise ====&lt;br /&gt;
The 5V step down/Buck converter is a AOZ2151PQI-10. It can provide 4A and has an input voltage range of 12-28V. &lt;br /&gt;
It is hard wired to be in PWM mode. PFM mode results in a loud whine.&lt;br /&gt;
&lt;br /&gt;
Below is a screenshot of the ripple and noise with a 4 A load across the 5V rail. An experiment was done with adding more capacitance. &lt;br /&gt;
The three examples below show 80 uF, 120 uF and 160 uF capacitor bank. &lt;br /&gt;
[[File:80uF.png]]&lt;br /&gt;
[[File:120uF.png]]&lt;br /&gt;
[[File:160uF-ripple-RevA2.png]]&lt;br /&gt;
&lt;br /&gt;
===Input stage===&lt;br /&gt;
An experiment with a constant current load drawing 20 A from the bed connector with and without a 92 mm fan on top of the board for forced convection. The temperature measured was with the on board thermistor. Using a thermal camera, the temperature displayed matches well with the temperature reported by the camera. However, in Rev A2, this is not the hottest point on the board. The MOSFET controlling the bed seems to consistently get the highest temperature. The reason for this is probably due to a 3.3 V VGS. &lt;br /&gt;
&lt;br /&gt;
[[File: Temperature-fan-off.pdf.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Temperature-fan.pdf.png]]&lt;br /&gt;
&lt;br /&gt;
====Inrush current====&lt;br /&gt;
During turn on of the high power stage, there will be an inrush current to charge up the bank of capacitors present on the board. &lt;br /&gt;
If no loads are turned on, the inrush current reaches 31 A at peak. This is important to consider when setting the current limit with device tree. &lt;br /&gt;
[[File:Inrush current A3.png]]&lt;br /&gt;
&lt;br /&gt;
===Temperature low pass filter===&lt;br /&gt;
A Low pass filter has been added on each of the temperature input channels. The cut-off frequency is below what my oscilloscope can handle, but a plot in the time domain verifies a 7 Hz -3dB point.&lt;br /&gt;
[[File:SDS5034X_PNG_66.png]]&lt;br /&gt;
&lt;br /&gt;
===ADC offset and gain measurements===&lt;br /&gt;
To measure the ADC offset error, measure the voltage on the uC input pin and record when the &lt;br /&gt;
transition from 0 to 1 occurs. It should occur at 0.5 LSB = 3.3/4096/2 = 0.4028 mV. &lt;br /&gt;
Offset: 55.35 mV - 0.4028 mV = 54.95 mV&lt;br /&gt;
&lt;br /&gt;
== Known Issues==&lt;br /&gt;
===Linux===&lt;br /&gt;
The default config option for Pine64 seems to be a maximum of 4 uarts. In order to increase that, it is necessary to compile a new kernel. &lt;br /&gt;
&lt;br /&gt;
===Rev A4===&lt;br /&gt;
High current draw on USB lines can cause instability in some devices. Specifically having a webcam or a wifi dongle and a Manga Screen 2 can cause flicker on the screen. &lt;br /&gt;
&lt;br /&gt;
===Rev A3===&lt;br /&gt;
====Ethernet slow at appearing, limited to 100 MB/s====&lt;br /&gt;
There is an issue with the ethernet connection, that both makes ethernet slow to come up, and only comes up as 100 MB/s. It looks like it is due to an error in the schematic where some of the connections are crossed. &lt;br /&gt;
Here is a typical dump of dmesg on a particularly long wait: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@recore-3:~# dmesg | grep eth&lt;br /&gt;
[    4.586525] dwmac-sun8i 1c30000.ethernet: IRQ eth_wake_irq not found&lt;br /&gt;
[    4.592983] dwmac-sun8i 1c30000.ethernet: IRQ eth_lpi not found&lt;br /&gt;
[    4.599124] dwmac-sun8i 1c30000.ethernet: PTP uses main clock&lt;br /&gt;
[    4.605035] dwmac-sun8i 1c30000.ethernet: supply phy not found, using dummy regulator&lt;br /&gt;
[    4.613054] dwmac-sun8i 1c30000.ethernet: supply phy-io not found, using dummy regulator&lt;br /&gt;
[    4.623598] dwmac-sun8i 1c30000.ethernet: Current syscon value is not the default 6 (expect 0)&lt;br /&gt;
[    4.634957] dwmac-sun8i 1c30000.ethernet: No HW DMA feature register supported&lt;br /&gt;
[    4.649102] dwmac-sun8i 1c30000.ethernet: RX Checksum Offload Engine supported&lt;br /&gt;
[    4.656372] dwmac-sun8i 1c30000.ethernet: COE Type 2&lt;br /&gt;
[    4.661378] dwmac-sun8i 1c30000.ethernet: TX Checksum insertion supported&lt;br /&gt;
[    4.668226] dwmac-sun8i 1c30000.ethernet: Normal descriptors&lt;br /&gt;
[    4.673920] dwmac-sun8i 1c30000.ethernet: Chain mode enabled&lt;br /&gt;
[   16.682181] dwmac-sun8i 1c30000.ethernet eth0: PHY [stmmac-0:07] driver [RTL8211E Gigabit Ethernet] (irq=POLL)&lt;br /&gt;
[   16.705860] dwmac-sun8i 1c30000.ethernet eth0: No Safety Features support found&lt;br /&gt;
[   16.713354] dwmac-sun8i 1c30000.ethernet eth0: No MAC Management Counters available&lt;br /&gt;
[   16.713366] dwmac-sun8i 1c30000.ethernet eth0: PTP not supported by HW&lt;br /&gt;
[   16.713387] dwmac-sun8i 1c30000.ethernet eth0: configuring for phy/rgmii link mode&lt;br /&gt;
[  249.157988] dwmac-sun8i 1c30000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx&lt;br /&gt;
[  249.166587] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@recore-3:~#  sudo ethtool eth0&lt;br /&gt;
Settings for eth0:&lt;br /&gt;
	Supported ports: [ TP MII ]&lt;br /&gt;
	Supported link modes:   10baseT/Half 10baseT/Full &lt;br /&gt;
	                        100baseT/Half 100baseT/Full &lt;br /&gt;
	                        1000baseT/Half 1000baseT/Full &lt;br /&gt;
	Supported pause frame use: Symmetric Receive-only&lt;br /&gt;
	Supports auto-negotiation: Yes&lt;br /&gt;
	Supported FEC modes: Not reported&lt;br /&gt;
	Advertised link modes:  10baseT/Half 10baseT/Full &lt;br /&gt;
	                        100baseT/Half 100baseT/Full &lt;br /&gt;
	                        1000baseT/Half 1000baseT/Full &lt;br /&gt;
	Advertised pause frame use: Symmetric Receive-only&lt;br /&gt;
	Advertised auto-negotiation: Yes&lt;br /&gt;
	Advertised FEC modes: Not reported&lt;br /&gt;
	Link partner advertised link modes:  10baseT/Half 10baseT/Full &lt;br /&gt;
	                                     100baseT/Half 100baseT/Full &lt;br /&gt;
	Link partner advertised pause frame use: Symmetric Receive-only&lt;br /&gt;
	Link partner advertised auto-negotiation: Yes&lt;br /&gt;
	Link partner advertised FEC modes: Not reported&lt;br /&gt;
	Speed: 100Mb/s&lt;br /&gt;
	Duplex: Full&lt;br /&gt;
	Port: MII&lt;br /&gt;
	PHYAD: 7&lt;br /&gt;
	Transceiver: internal&lt;br /&gt;
	Auto-negotiation: on&lt;br /&gt;
	Supports Wake-on: d&lt;br /&gt;
	Wake-on: d&lt;br /&gt;
	Current message level: 0x0000003f (63)&lt;br /&gt;
			       drv probe link timer ifdown ifup&lt;br /&gt;
	Link detected: yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@recore-3:~# mii-tool eth0 -v&lt;br /&gt;
eth0: negotiated 100baseTx-FD flow-control, link ok&lt;br /&gt;
  product info: vendor 00:07:32, model 17 rev 5&lt;br /&gt;
  basic mode:   autonegotiation enabled&lt;br /&gt;
  basic status: autonegotiation complete, link ok&lt;br /&gt;
  capabilities: 1000baseT-HD 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD&lt;br /&gt;
  advertising:  1000baseT-HD 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control&lt;br /&gt;
  link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An experiment was done with patching the wires on a board level and Gigabit ethernet seems to work fine in that instance.&lt;br /&gt;
&lt;br /&gt;
====Reset button not responding====&lt;br /&gt;
Simply pressing the reset button does not always cause a reset of the board.&lt;br /&gt;
 - Does not seem to be an issue for Rev A3, needs to be a part of the testing routine.&lt;br /&gt;
&lt;br /&gt;
====On-board thermistor source impedance====&lt;br /&gt;
The on-board thermistor chosen for A2 is 100 K, which in conjunction with the 4.7 K pull-up causes the &lt;br /&gt;
source impedance to be above the recommended 50 K external input impedance. (100 K sinking)&lt;br /&gt;
When sampling the value from the on-board thermistor, the ADC is loaded too much causing a &lt;br /&gt;
dip in the value. The result is that a lower value sampled than what is actually present on the ADC &lt;br /&gt;
pin. If the sample time is kept at minimum (1.5 cycles) the offset will be large. Increasing the sample time &lt;br /&gt;
fixes that problem. &lt;br /&gt;
[[File:SDS5034X_PNG_68.png]]&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
		
	</entry>
</feed>