<p>I got myself the Ender 3. The Home position is about 1 mm left and 2 mm in front of the front left corner. Now, the hotend center axis is 11 mm from the carrier plate with the &quot;Mk 10&quot; cooler mounted right onto a pair of 5 mm pegs that are part of the plate. As I want to change to an e3D v6, which has a diameter of 22 mm, I will have to move out some distance (ca. 13 mm) to the current Z axis. This means, that any Y command will be off by this distance.</p>
<p><strong>How do I reconfigure the Home position to have an offset to the 0-positions gained from the limit switches?</strong></p>
<p>According to Repetier Host it runs on <strong>Marlin 1.0</strong>. Creality offers the firmware on <a href="https://www.creality3d.cn/download/firmware_c0001" rel="nofollow noreferrer">their website</a> as a <strong>.hex</strong> file - which is hard to edit.</p>

[{'answer_id': 6405, 'author': '0scar', 'author_id': 5740, 'author_profile': 'https://3dprinting.stackexchange.com/users/5740', 'pm_score': 3, 'selected': False, 'text': '<p>When homing the printer, the hot end carriage will be instructed to hit the (mechanical or optical) end stops. From this point a well configured firmware knows where to find the origin of the heat bed. </p>\n\n<p>For the printer to know the origin of the bed, offsets are defined in the firmware from the end stop locations to the actual origin of the heat bed. </p>\n\n<p>E.g. in Marlin Firmware this is defined by</p>\n\n<pre><code> #define X_MIN_POS -35 ; move the head 35 mm to the right to place the \n                       ; nozzle at X = 0\n #define Y_MIN_POS -8  ; move the head 8 mm to the back (or the plate\n                       ; forward) to place the nozzle at Y = 0\n</code></pre>\n\n<p>When you change the hardware (e.g. carriage), you need to re-calibrate the movement from the end stop location to the origin of the bed. Note that any arbitrary point on the heat bed can be used to re-calibrate this. E.g. the center of the bed can also be used, and is frequently much more easy to re-calibrate as the heated beds usually have rounded corners or are slightly larger than the actual print area (e.g. I have a 300 x 300 mm heat bed that actually measures 315 x 315 mm). Printing a large square on the heat bed will therefore give you a good impression of the offset of the nozzle due to your new carriage design. </p>\n\n<p>Note that, if you cannot or will not flash new firmware, an alternative solution exists to set new incremental offset values using the <a href="https://reprap.org/wiki/G-code#M206:_Offset_axes" rel="noreferrer"><code>M206</code></a> command <strong>IF</strong> <a href="https://reprap.org/wiki/G-code#M206:_Offset_axes" rel="noreferrer">your current firmware supports</a> this.</p>\n\n<p>A detailed description to re-calibrate is found in answer <a href="https://3dprinting.stackexchange.com/a/6376/5740">How to center my prints on the build platform?</a> or in external link <a href="https://www.thingiverse.com/thing:2280529" rel="noreferrer">Bed center calibration</a>.</p>\n'}, {'answer_id': 6648, 'author': 'Greenonline', 'author_id': 4762, 'author_profile': 'https://3dprinting.stackexchange.com/users/4762', 'pm_score': 2, 'selected': False, 'text': '<p><em>Following on from 0scar\'s answer</em></p>\n<hr />\n<p>To change or obtain your EEPROM settings you need to open Repetier Host (for Linux or Windows, v2.1.3 - the OSX version I tried, v1.1.0, didn\'t seem to have this functionality).</p>\n<h3>To change existing settings</h3>\n<p>From <a href="https://forum.repetier.com/discussion/4641/how-to-make-changes-to-the-eeprom-data" rel="nofollow noreferrer">How to make changes to the EEPROM data</a>. Apparently there is an EEPROM editor available (in Repetier Host). From <a href="https://forum.repetier.com/discussion/comment/18712/#Comment_18712" rel="nofollow noreferrer">this post</a>:</p>\n<blockquote>\n<p>If you see it in eeprom editor just change them. If it is repetier-firmware based it will store changes in eeprom on pressing &quot;ok&quot;.</p>\n</blockquote>\n<h3>To retrieve existing settings</h3>\n<p><a href="https://forum.repetier.com/discussion/comment/2817/#Comment_2817" rel="nofollow noreferrer">This post</a> from <a href="https://forum.repetier.com/discussion/933/retrieval-of-existing-settings" rel="nofollow noreferrer">retrieval of existing settings...</a>, shows how:</p>\n<blockquote>\n<p>To copy eeprom data:</p>\n<ul>\n<li>Connect with host</li>\n<li>Open eeprom settings</li>\n<li>Select export eeprom settings. That saves all data in a epr file and you can later use import eepsom settings to rewrite it.</li>\n</ul>\n</blockquote>\n<p>An example of the resulting file is shown in the question, <a href="https://3dprinting.stackexchange.com/questions/4184/help-with-repetier-firmware-variables-dimension-dual-delta-j-group-robotics">Help with Repetier firmware variables (Dimension Dual Delta - J Group Robotics)</a>, a sample of which I have included below:</p>\n<pre><code>&lt;Repetier-Firmware-EEPROM&gt;\n&lt;epr pos=&quot;1028&quot; type=&quot;0&quot; value=&quot;0&quot;&gt;Language&lt;/epr&gt;\n&lt;epr pos=&quot;75&quot; type=&quot;2&quot; value=&quot;115200&quot;&gt;Baudrate&lt;/epr&gt;\n&lt;epr pos=&quot;129&quot; type=&quot;3&quot; value=&quot;32.752&quot;&gt;Filament printed [m]&lt;/epr&gt;\n&lt;epr pos=&quot;125&quot; type=&quot;2&quot; value=&quot;21644&quot;&gt;Printer active [s]&lt;/epr&gt;\n&lt;epr pos=&quot;79&quot; type=&quot;2&quot; value=&quot;0&quot;&gt;Max. inactive time [ms,0=off]&lt;/epr&gt;\n</code></pre>\n<hr />\n<p>However, you would appear to have to be running Repetier firmware for these two solutions to work, and not Marlin (but I may be wrong).</p>\n'}, {'answer_id': 6660, 'author': 'Trish', 'author_id': 8884, 'author_profile': 'https://3dprinting.stackexchange.com/users/8884', 'pm_score': 3, 'selected': True, 'text': '<p><a href="https://3dprinting.stackexchange.com/users/4762/greenonline">Greenonline</a> and I spent this evening hacking/reverse engineering the Ender3 to solve this. <a href="https://gr33nonline.wordpress.com/2018/08/13/compiling-marlin-for-a-creality-ender-3/" rel="nofollow noreferrer">Greenonline also wrote about this in his blog</a>.</p>\n<h2>Step 1 - Get the Firmware</h2>\n<p>To do this, there are basically two ways:</p>\n<ol>\n<li>Find the a ready-to-use firmware</li>\n<li>Make your own</li>\n</ol>\n<p>Variant 1 would be to use the pre-supplied .hex files from Creality or some other manufacturer. Variant 2 means writing the settings yourself or using <a href="https://www.repetier.com/firmware/v100/" rel="nofollow noreferrer">Repetier firmware</a> to write the files for you. In the case of the Ender 3, the chip used sadly disqualified Repetier firmware, so writing it yourself is the only option.</p>\n<p>To write the firmware yourself or using Repetier firmware, you need the old settings. To get these, connect the printer via USB, connect it with a software like <a href="https://www.repetier.com/" rel="nofollow noreferrer">Repetier host</a> and send <a href="http://marlinfw.org/docs/gcode/M503.html" rel="nofollow noreferrer"><code>M503</code></a> to get all the settings.</p>\n<p>Now, either hack those into Repetier firmware or use a blank <a href="http://marlinfw.org/meta/download/" rel="nofollow noreferrer"><code>Marlin.ino</code></a> and the Arduino IDE to customise it. In the later case, you need to put the folder <code>Marlin-?.?.X.ZIP/Marlin-?.?.X/Marlin</code> into the <code>Arduino</code> folder in Documents (Windows) or Home (Mac). Now open the <code>Marlin.ino</code> in <a href="https://www.arduino.cc/en/Main/Software" rel="nofollow noreferrer">Arduino IDE</a>. Set up the new firmware with these base settings or adjust as needed.</p>\n<h2>Step 2 - Adjust</h2>\n<p>Now that we have our Configuration files (in the end we pretty much skipped step 1 and <a href="https://www.chaos-drucker.de/wp-content/uploads/2018/04/Marlin-Ender3-V1.zip" rel="nofollow noreferrer">grabbed a fitting (<strong>German!</strong>) one</a> from <a href="https://www.chaos-drucker.de/anleitungen-und-tutorials/creality-ender3-mit-marlin-ausstatten/" rel="nofollow noreferrer">Christian</a>, a German maker also known as &quot;Chaos-Drucker&quot;), we need to first adjust them as needed to fit our needs and then compile them properly (next step!). As an alternative (<strong>English!</strong>) base to work with, the <a href="https://www.th3dstudio.com/knowledge-base/th3d-unified-firmware/?seq_no=10" rel="nofollow noreferrer">TH3D firmware</a> is also available, provided by the Hooglands and team at TH3D.</p>\n<p>So, let\'s open your <code>Marlin.ino</code> with <a href="https://www.arduino.cc/en/Main/Software" rel="nofollow noreferrer">arduino</a> and find the <code>X_MIN_POS</code> (<code>CTRL</code>+<code>F</code> &gt; <code>X_MIN_POS</code> &gt; Search all sketches).</p>\n<p>In the configurations we grabbed the sketch file <code>Configuration.h</code> contains lines 786-789 <em>(might differ)</em>:</p>\n<pre><code>// Travel limits (mm) after homing, corresponding to endstop positions.\n#define X_MIN_POS -10\n#define Y_MIN_POS -15\n#define Z_MIN_POS 0\n</code></pre>\n<p>Adjust these till the wanted position is achieved - Repetier Host can help here to determine the right position.</p>\n<h2>Step 3 - Compile</h2>\n<p>The hardest step with the Ender3 was to get the code to actually compile, as it uses an <a href="http://www.technoblogy.com/show?19OV" rel="nofollow noreferrer">ATmega1284P 16Bit</a> which isn\'t supported by Arduino natively. While the <a href="https://github.com/MCUdude/MightyCore" rel="nofollow noreferrer">MightyCore</a> supports this chip, it doesn\'t compile with this hardware library. However, Christian did figure out that the <a href="https://github.com/Lauszus/Sanguino" rel="nofollow noreferrer">Sanguino</a> set to an ATmega 1284P 16bit does work. These belong as <em>extracted folders</em> into the <code>Arduino/hardware</code> folder, usually in your Documents (if you use Windows) or Home (on mac). Now, we did set <code>Tools&gt;Board:&gt; Sanguino</code> and <code>Tools&gt;Processor:&gt;ATmega1284 or ATmega1284P (16 MHz)</code></p>\n<p>It was also mandatory to have the <a href="https://github.com/olikraus/U8glib_Arduino" rel="nofollow noreferrer">U8glib.h for Arduino</a> installed. To do this, download the zip from github, then in the Arduino software <code>Sketch&gt;Include Library&gt;Add .ZIP Library...</code> and choose the whole zip repository to auto install.</p>\n<p>With these settings we were able to compile the settings.</p>\n<h2>Step 4 - Getting it on the machine</h2>\n<p>Most people would expect to read about bootloaders and flashing now, and indeed that is an option. But as I had just figured out <a href="https://3dprinting.stackexchange.com/questions/6654/how-to-install-a-hex-firmware">how to install firmware from .hex</a> and so I wondered: Can\'t we make .hex files from our settings? And yes, <a href="https://3dprinting.stackexchange.com/a/6658/8884">Arduino supports this</a>.</p>\n<p>So, in Arduino IDE press <code>Ctrl</code>+<code>Alt</code>+<code>S</code> (or <code>Sketch &gt; Export Compiled Binary</code>). This will result in two files:</p>\n<ul>\n<li><code>Marlin.ino.sanguino.hex</code></li>\n<li><code>Marlin.ino.with_bootloader.sanguino.hex</code></li>\n</ul>\n<p>Of these two, the <code>Marlin.ino.sanguino.hex</code> is the interesting one for &quot;direct flashing&quot; via CURA. Use this file with the process starting at Step 2 <a href="https://3dprinting.stackexchange.com/a/6655/8884">here</a> or use one of <a href="https://3dprinting.stackexchange.com/a/6656/8884">Greenonline\'s solutions</a> to get the firmware flashed - no bootloader needed!</p>\n'}]
['https://3dprinting.stackexchange.com/questions/6399', 'https://3dprinting.stackexchange.com', 'https://3dprinting.stackexchange.com/users/8884/']