<?xml version="1.0" encoding="UTF-8"?>        <rss version="2.0"
             xmlns:atom="http://www.w3.org/2005/Atom"
             xmlns:dc="http://purl.org/dc/elements/1.1/"
             xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
             xmlns:admin="http://webns.net/mvcb/"
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:content="http://purl.org/rss/1.0/modules/content/">
        <channel>
            <title>
									Geometrics Forum - Recent Topics				            </title>
            <link>https://www.geometrics.com/community/</link>
            <description>Geometrics Discussion Board</description>
            <language>en-US</language>
            <lastBuildDate>Mon, 11 May 2026 17:03:36 +0000</lastBuildDate>
            <generator>wpForo</generator>
            <ttl>60</ttl>
							                    <item>
                        <title>How to download or delete raw data from MagStation micro-SD card</title>
                        <link>https://www.geometrics.com/community/magex-magex-software/how-to-download-or-delete-raw-data-from-magstation-micro-sd-card/</link>
                        <pubDate>Wed, 22 Apr 2026 00:27:28 +0000</pubDate>
                        <description><![CDATA[1. Establish WIFI connection between your PC and the MagStation.
2. Open a web browser and type in

3. Click &quot;Delete project storage&quot; or &quot;Download survey data&quot; to delete or down raw data ...]]></description>
                        <content:encoded><![CDATA[<p>1. Establish WIFI connection between your PC and the MagStation.</p>
<p>2. Open a web browser and type in <span style="text-decoration: underline">http://192.168.1.1/supporttools.htm</span>. </p>
153
<p>3. Click "Delete project storage" or "Download survey data" to delete or down raw data from micro-SD card. We recommend deleting raw data files after 700 hours data collection. </p>
<p>4. The downloaded survey data is in .magdata format. To convert it to CSV, open Survey Manager and create a new MagStation project. Inside the project, create a new survey. Select the survey name, click "Import Data" and then choose the .magdata file. After successful import, click "Export CSV".</p>]]></content:encoded>
						                            <category domain="https://www.geometrics.com/community/"></category>                        <dc:creator>Rui Zhang</dc:creator>
                        <guid isPermaLink="true">https://www.geometrics.com/community/magex-magex-software/how-to-download-or-delete-raw-data-from-magstation-micro-sd-card/</guid>
                    </item>
				                    <item>
                        <title>Why does my mobile device sometimes disconnect from instrument WIFI?</title>
                        <link>https://www.geometrics.com/community/general-magnetometer/why-does-my-mobile-device-sometimes-disconnect-from-instrument-wifi/</link>
                        <pubDate>Tue, 21 Apr 2026 19:38:13 +0000</pubDate>
                        <description><![CDATA[Geometrics instruments, such as G-864, MagEx, MagArrow, MagStation et al, communicate with a mobile device via WIFI. But because the instrument WIFI has NO internet access, some Android devi...]]></description>
                        <content:encoded><![CDATA[<p>Geometrics instruments, such as G-864, MagEx, MagArrow, MagStation et al, communicate with a mobile device via WIFI. But because the instrument WIFI has NO internet access, some Android device, after connecting to the instrument for a while, will automatically start searching for another WIFI access point. To prevent this from happening, when the No Internet Access warning window pops up after first WiFi connection, choose "Tap for options". On the following window, check the “Don’t ask again for this network” box and press “Yes” .</p>]]></content:encoded>
						                            <category domain="https://www.geometrics.com/community/"></category>                        <dc:creator>Rui Zhang</dc:creator>
                        <guid isPermaLink="true">https://www.geometrics.com/community/general-magnetometer/why-does-my-mobile-device-sometimes-disconnect-from-instrument-wifi/</guid>
                    </item>
				                    <item>
                        <title>Teensy 4.1 with MFAM</title>
                        <link>https://www.geometrics.com/community/mfam/teensy-4-1-with-mfam/</link>
                        <pubDate>Wed, 25 Mar 2026 09:21:36 +0000</pubDate>
                        <description><![CDATA[Hi All,
&nbsp;
We are using the Teensy 4.1 as a logger (Adafruit GPS is linked with the Teensy) for the MFAM SX. Below is the code for the Arduino IDE (Teensy), for people who might find i...]]></description>
                        <content:encoded><![CDATA[<p>Hi All,</p>
<p>&nbsp;</p>
<p>We are using the Teensy 4.1 as a logger (Adafruit GPS is linked with the Teensy) for the MFAM SX. Below is the code for the Arduino IDE (Teensy), for people who might find it useful,</p>
<p>Roi</p>
<p>&nbsp;</p>
<div>
<div><span>#include</span><span> </span><span>&lt;NativeEthernet.h&gt;</span></div>
<div><span>#include</span><span> </span><span>&lt;SD.h&gt;</span></div>
<br />
<div><span>// ---- NETWORK CONFIGURATION ----</span></div>
<div><span>byte mac[] = </span><span>{</span><span> 0x</span><span>DE</span><span>, 0x</span><span>AD</span><span>, 0x</span><span>BE</span><span>, 0x</span><span>EF</span><span>, 0x</span><span>FE</span><span>, 0x</span><span>ED</span><span> </span><span>}</span><span>;</span></div>
<div><span>IPAddress </span><span>ip</span><span>(</span><span>192</span><span>, </span><span>168</span><span>, </span><span>2</span><span>, </span><span>10</span><span>)</span><span>;</span></div>
<div><span>IPAddress </span><span>mfamIP</span><span>(</span><span>192</span><span>, </span><span>168</span><span>, </span><span>2</span><span>, </span><span>2</span><span>)</span><span>;</span></div>
<div><span>uint16_t</span><span> mfamPort = </span><span>1000</span><span>;</span></div>
<br />
<div><span>EthernetClient client;</span></div>
<br />
<div><span>// ---- PACKET STRUCTURE ----</span></div>
<div><span>const</span><span> </span><span>int</span><span> PACKET_SIZE = </span><span>1380</span><span>;</span></div>
<div><span>const</span><span> </span><span>int</span><span> SAMPLE_SIZE = </span><span>32</span><span>;</span></div>
<div><span>const</span><span> </span><span>int</span><span> HEADER_SIZE = </span><span>16</span><span>;</span></div>
<div><span>const</span><span> </span><span>int</span><span> NUM_SAMPLES = </span><span>40</span><span>;</span></div>
<div><span>const</span><span> </span><span>int</span><span> SD_CHIP_SELECT = BUILTIN_SDCARD;</span></div>
<br />
<div><span>uint8_t</span><span> </span><span>buffer</span><span>;</span></div>
<div><span>int</span><span> bufferPos = </span><span>0</span><span>;</span></div>
<br />
<div><span>// ---- SD CARD ----</span></div>
<div><span>File logFile;</span></div>
<div><span>bool</span><span> sdReady = </span><span>false</span><span>;</span></div>
<div><span>unsigned</span><span> </span><span>long</span><span> sampleCount = </span><span>0</span><span>;</span></div>
<div><span>unsigned</span><span> </span><span>long</span><span> fileStartTime = </span><span>0</span><span>;</span></div>
<div><span>char</span><span> </span><span>filename</span><span>;</span></div>
<br />
<div><span>// ---- AUXILIARY CHANNEL STORAGE ----</span></div>
<div><span>double</span><span> gyroX = </span><span>0</span><span>, gyroY = </span><span>0</span><span>, gyroZ = </span><span>0</span><span>, gyroT = </span><span>0</span><span>;</span></div>
<div><span>double</span><span> accelX = </span><span>0</span><span>, accelY = </span><span>0</span><span>, accelZ = </span><span>0</span><span>, accelT = </span><span>0</span><span>;</span></div>
<div><span>double</span><span> compassX = </span><span>0</span><span>, compassY = </span><span>0</span><span>, compassZ = </span><span>0</span><span>, compassT = </span><span>0</span><span>;</span></div>
<br />
<div><span>// ---- GPS FROM ADAFRUIT MODULE ON SERIAL1 (Pin 0 = RX) ----</span></div>
<div><span>char</span><span> </span><span>gpsBuffer</span><span>;</span></div>
<div><span>int</span><span> gpsBufferPos = </span><span>0</span><span>;</span></div>
<div><span>char</span><span> </span><span>gpsString</span><span> = </span><span>""</span><span>;</span></div>
<div><span>char</span><span> </span><span>gpsDate</span><span> = </span><span>"00/00/00"</span><span>;</span></div>
<div><span>char</span><span> </span><span>gpsTime</span><span> = </span><span>"00:00:00.000"</span><span>;</span></div>
<div><span>bool</span><span> gpsFix = </span><span>false</span><span>;</span></div>
<div><span>uint8_t</span><span> tsStatus = </span><span>0</span><span>;</span></div>
<br />
<div><span>// ---- OUTPUT CONTROL ----</span></div>
<div><span>// Set to 1 to log every sample, 10 for 100Hz, 20 for 50Hz, etc.</span></div>
<div><span>const</span><span> </span><span>int</span><span> DOWNSAMPLE_FACTOR = </span><span>1</span><span>;</span><span> // 50 Hz output</span></div>
<div><span>int</span><span> downsampleCounter = </span><span>0</span><span>;</span></div>
<br />
<div><span>// How many minutes per file. Set to 10, 20, 60, etc.</span></div>
<div><span>const</span><span> </span><span>int</span><span> FILE_MINUTES = </span><span>10</span><span>;</span></div>
<br />
<div><span>// ---- LED INDICATOR ----</span></div>
<div><span>// Off = starting up</span></div>
<div><span>// Very slow blink (every 3 sec) = connected and logging</span></div>
<div><span>// Fast blink (4/sec) = connected but no data arriving</span></div>
<div><span>// Solid on = no SD card</span></div>
<div><span>// 3 quick flashes then pause = cannot connect to MFAM</span></div>
<div><span>const</span><span> </span><span>int</span><span> LED_PIN = </span><span>13</span><span>;</span></div>
<div><span>unsigned</span><span> </span><span>long</span><span> lastBlinkTime = </span><span>0</span><span>;</span></div>
<div><span>bool</span><span> ledState = </span><span>false</span><span>;</span></div>
<div><span>unsigned</span><span> </span><span>long</span><span> lastDataTime = </span><span>0</span><span>;</span></div>
<br />
<div><span>// ---- FUNCTION PROTOTYPES ----</span></div>
<div><span>void</span><span> </span><span>createNewFile</span><span>()</span><span>;</span></div>
<div><span>void</span><span> </span><span>parsePacket</span><span>(</span><span>uint8_t*</span><span> </span><span>pkt)</span><span>;</span></div>
<div><span>void</span><span> </span><span>parseAuxChannels</span><span>(</span><span>uint8_t*</span><span> </span><span>sample</span><span>, </span><span>uint16_t</span><span> </span><span>frameID)</span><span>;</span></div>
<div><span>void</span><span> </span><span>readGPS</span><span>()</span><span>;</span></div>
<div><span>void</span><span> </span><span>parseGPRMC</span><span>(</span><span>char*</span><span> </span><span>sentence)</span><span>;</span></div>
<div><span>void</span><span> </span><span>writeSample</span><span>(</span><span>unsigned</span><span> </span><span>long</span><span> </span><span>timestamp</span><span>, </span><span>uint16_t</span><span> </span><span>fiducial</span><span>, </span><span>double</span><span> </span><span>mag1</span><span>, </span><span>uint16_t</span><span> </span><span>mag1s</span><span>,</span></div>
<div><span> </span><span>double</span><span> </span><span>mag2</span><span>, </span><span>uint16_t</span><span> </span><span>mag2s</span><span>, </span><span>uint16_t</span><span> </span><span>sysStatus)</span><span>;</span></div>
<div><span>int16_t</span><span> </span><span>toSigned16</span><span>(</span><span>uint16_t</span><span> </span><span>val)</span><span>;</span></div>
<br />
<div><span>void</span><span> </span><span>createNewFile</span><span>()</span><span> </span><span>{</span></div>
<div><span> </span><span>static</span><span> </span><span>int</span><span> fileNumber = </span><span>0</span><span>;</span></div>
<div><span> // On first call, find the next available file number</span></div>
<div><span> </span><span>if</span><span> </span><span>(</span><span>fileNumber == </span><span>0</span><span>)</span><span> </span><span>{</span></div>
<div><span> </span><span>char</span><span> </span><span>testName</span><span>;</span></div>
<div><span> </span><span>for</span><span> </span><span>(</span><span>int</span><span> i = </span><span>1</span><span>; i &lt;= </span><span>99999</span><span>; i++</span><span>)</span><span> </span><span>{</span></div>
<div><span> </span><span>snprintf</span><span>(</span><span>testName, sizeof</span><span>(</span><span>testName</span><span>)</span><span>, </span><span>"MFAM_%05d.txt"</span><span>, i</span><span>)</span><span>;</span></div>
<div><span> </span><span>if</span><span> </span><span>(</span><span>!</span><span>SD</span><span>.</span><span>exists</span><span>(</span><span>testName</span><span>))</span><span> </span><span>{</span></div>
<div><span> fileNumber = i - </span><span>1</span><span>;</span><span> // Will be incremented below</span></div>
<div><span> </span><span>break</span><span>;</span></div>
<div><span> </span><span>}</span></div>
<div><span> </span><span>}</span></div>
<div><span> </span><span>}</span></div>
<br />
<div><span> fileNumber++;</span></div>
<div><span> </span><span>snprintf</span><span>(</span><span>filename, sizeof</span><span>(</span><span>filename</span><span>)</span><span>, </span><span>"MFAM_%05d.txt"</span><span>, fileNumber</span><span>)</span><span>;</span></div>
<br />
<div><span> logFile = </span><span>SD</span><span>.</span><span>open</span><span>(</span><span>filename, FILE_WRITE</span><span>)</span><span>;</span></div>
<div><span> </span><span>if</span><span> </span><span>(</span><span>logFile</span><span>)</span><span> </span><span>{</span></div>
<div><span> </span><span>logFile</span><span>.</span><span>println</span><span>(</span><span>"Mag 1,Mag 2,Fid,SysS,Mg1S,Mg2S,Gyro X,Gyro Y,Gyro Z,Gyro T,Accel X,Accel Y,Accel Z,Accel T,CompassX,CompassY,CompassZ,Comp T,Date,Time,TS Status,GPS"</span><span>)</span><span>;</span></div>
<div><span> </span><span>logFile</span><span>.</span><span>flush</span><span>()</span><span>;</span></div>
<div><span> fileStartTime = </span><span>millis</span><span>()</span><span>;</span></div>
<div><span> </span><span>Serial</span><span>.</span><span>print</span><span>(</span><span>"Logging to: "</span><span>)</span><span>;</span></div>
<div><span> </span><span>Serial</span><span>.</span><span>println</span><span>(</span><span>filename</span><span>)</span><span>;</span></div>
<div><span> </span><span>}</span><span> </span><span>else</span><span> </span><span>{</span></div>
<div><span> </span><span>Serial</span><span>.</span><span>print</span><span>(</span><span>"ERROR: Could not create "</span><span>)</span><span>;</span></div>
<div><span> </span><span>Serial</span><span>.</span><span>println</span><span>(</span><span>filename</span><span>)</span><span>;</span></div>
<div><span> </span><span>}</span></div>
<div><span>}</span></div>
<br />
<div><span>void</span><span> </span><span>setup</span><span>()</span><span> </span><span>{</span></div>
<div><span> </span><span>Serial</span><span>.</span><span>begin</span><span>(</span><span>115200</span><span>)</span><span>;</span></div>
<div><span> </span><span>delay</span><span>(</span><span>2000</span><span>)</span><span>;</span></div>
<br />
<div><span> // Start GPS serial port (Adafruit Ultimate GPS defaults to 9600 baud)</span></div>
<div><span> </span><span>Serial1</span><span>.</span><span>begin</span><span>(</span><span>9600</span><span>)</span><span>;</span></div>
<br />
<div><span> </span><span>pinMode</span><span>(</span><span>LED_PIN, OUTPUT</span><span>)</span><span>;</span></div>
<div><span> </span><span>digitalWrite</span><span>(</span><span>LED_PIN, LOW</span><span>)</span><span>;</span></div>
<br />
<div><span> </span><span>memset</span><span>(</span><span>gpsString, </span><span>0</span><span>, sizeof</span><span>(</span><span>gpsString</span><span>))</span><span>;</span></div>
<br />
<div><span> // Initialize SD card</span></div>
<div><span> </span><span>if</span><span> </span><span>(</span><span>SD</span><span>.</span><span>begin</span><span>(</span><span>SD_CHIP_SELECT</span><span>))</span><span> </span><span>{</span></div>
<div><span> sdReady = </span><span>true</span><span>;</span></div>
<div><span> </span><span>Serial</span><span>.</span><span>println</span><span>(</span><span>"SD card ready."</span><span>)</span><span>;</span></div>
<div><span> </span><span>}</span><span> </span><span>else</span><span> </span><span>{</span></div>
<div><span> </span><span>Serial</span><span>.</span><span>println</span><span>(</span><span>"WARNING: No SD card found. Serial output only."</span><span>)</span><span>;</span></div>
<div><span> </span><span>digitalWrite</span><span>(</span><span>LED_PIN, HIGH</span><span>)</span><span>;</span></div>
<div><span> </span><span>}</span></div>
<br />
<div><span> // Initialize Ethernet</span></div>
<div><span> </span><span>Ethernet</span><span>.</span><span>begin</span><span>(</span><span>mac, ip</span><span>)</span><span>;</span></div>
<br />
<div><span> </span><span>if</span><span> </span><span>(</span><span>Ethernet</span><span>.</span><span>hardwareStatus</span><span>()</span><span> == EthernetNoHardware</span><span>)</span><span> </span><span>{</span></div>
<div><span> </span><span>Serial</span><span>.</span><span>println</span><span>(</span><span>"ERROR: No Ethernet hardware found!"</span><span>)</span><span>;</span></div>
<div><span> </span><span>while</span><span> </span><span>(</span><span>true</span><span>)</span><span> </span><span>{}</span></div>
<div><span> </span><span>}</span></div>
<br />
<div><span> </span><span>Serial</span><span>.</span><span>print</span><span>(</span><span>"Teensy IP: "</span><span>)</span><span>;</span></div>
<div><span> </span><span>Serial</span><span>.</span><span>println</span><span>(</span><span>Ethernet</span><span>.</span><span>localIP</span><span>())</span><span>;</span></div>
<div><span> </span><span>Serial</span><span>.</span><span>print</span><span>(</span><span>"Connecting to MFAM at "</span><span>)</span><span>;</span></div>
<div><span> </span><span>Serial</span><span>.</span><span>print</span><span>(</span><span>mfamIP</span><span>)</span><span>;</span></div>
<div><span> </span><span>Serial</span><span>.</span><span>print</span><span>(</span><span>":"</span><span>)</span><span>;</span></div>
<div><span> </span><span>Serial</span><span>.</span><span>println</span><span>(</span><span>mfamPort</span><span>)</span><span>;</span></div>
<br />
<div><span> </span><span>if</span><span> </span><span>(</span><span>client</span><span>.</span><span>connect</span><span>(</span><span>mfamIP, mfamPort</span><span>))</span><span> </span><span>{</span></div>
<div><span> </span><span>Serial</span><span>.</span><span>println</span><span>(</span><span>"Connected to MFAM!"</span><span>)</span><span>;</span></div>
<div><span> </span><span>}</span><span> </span><span>else</span><span> </span><span>{</span></div>
<div><span> </span><span>Serial</span><span>.</span><span>println</span><span>(</span><span>"Connection failed!"</span><span>)</span><span>;</span></div>
<div><span> </span><span>}</span></div>
<br />
<div><span> </span><span>Serial</span><span>.</span><span>println</span><span>(</span><span>"Waiting for GPS fix..."</span><span>)</span><span>;</span></div>
<br />
<div><span> </span><span>if</span><span> </span><span>(</span><span>sdReady</span><span>)</span><span> </span><span>{</span></div>
<div><span> </span><span>createNewFile</span><span>()</span><span>;</span></div>
<div><span> </span><span>}</span></div>
<br />
<div><span> </span><span>Serial</span><span>.</span><span>println</span><span>(</span><span>"Mag 1,Mag 2,Fid,SysS,Mg1S,Mg2S,Gyro X,Gyro Y,Gyro Z,Gyro T,Accel X,Accel Y,Accel Z,Accel T,CompassX,CompassY,CompassZ,Comp T,Date,Time,TS Status,GPS"</span><span>)</span><span>;</span></div>
<div><span>}</span></div>
<br />
<div><span>void</span><span> </span><span>loop</span><span>()</span><span> </span><span>{</span></div>
<div><span> // Always read GPS data from Serial1</span></div>
<div><span> </span><span>readGPS</span><span>()</span><span>;</span></div>
<br />
<div><span> </span><span>if</span><span> </span><span>(</span><span>!</span><span>client</span><span>.</span><span>connected</span><span>())</span><span> </span><span>{</span></div>
<div><span> </span><span>Serial</span><span>.</span><span>println</span><span>(</span><span>"Disconnected. Reconnecting..."</span><span>)</span><span>;</span></div>
<div><span> </span><span>if</span><span> </span><span>(</span><span>sdReady &amp;&amp; logFile</span><span>)</span><span> </span><span>{</span></div>
<div><span> </span><span>logFile</span><span>.</span><span>flush</span><span>()</span><span>;</span></div>
<div><span> </span><span>}</span></div>
<div><span> </span><span>for</span><span> </span><span>(</span><span>int</span><span> i = </span><span>0</span><span>; i &lt; </span><span>3</span><span>; i++</span><span>)</span><span> </span><span>{</span></div>
<div><span> </span><span>digitalWrite</span><span>(</span><span>LED_PIN, HIGH</span><span>)</span><span>;</span></div>
<div><span> </span><span>delay</span><span>(</span><span>100</span><span>)</span><span>;</span></div>
<div><span> </span><span>digitalWrite</span><span>(</span><span>LED_PIN, LOW</span><span>)</span><span>;</span></div>
<div><span> </span><span>delay</span><span>(</span><span>100</span><span>)</span><span>;</span></div>
<div><span> </span><span>}</span></div>
<div><span> </span><span>delay</span><span>(</span><span>1400</span><span>)</span><span>;</span></div>
<div><span> </span><span>client</span><span>.</span><span>connect</span><span>(</span><span>mfamIP, mfamPort</span><span>)</span><span>;</span></div>
<div><span> </span><span>if</span><span> </span><span>(</span><span>client</span><span>.</span><span>connected</span><span>())</span><span> </span><span>{</span></div>
<div><span> lastDataTime = </span><span>millis</span><span>()</span><span>;</span></div>
<div><span> </span><span>}</span></div>
<div><span> </span><span>return</span><span>;</span></div>
<div><span> </span><span>}</span></div>
<br />
<div><span> </span><span>while</span><span> </span><span>(</span><span>client</span><span>.</span><span>available</span><span>())</span><span> </span><span>{</span></div>
<div><span> </span><span>buffer</span><span> = </span><span>client</span><span>.</span><span>read</span><span>()</span><span>;</span></div>
<div><span> bufferPos++;</span></div>
<br />
<div><span> </span><span>if</span><span> </span><span>(</span><span>bufferPos &gt;= PACKET_SIZE</span><span>)</span><span> </span><span>{</span></div>
<div><span> </span><span>parsePacket</span><span>(</span><span>buffer</span><span>)</span><span>;</span></div>
<div><span> bufferPos = </span><span>0</span><span>;</span></div>
<div><span> lastDataTime = </span><span>millis</span><span>()</span><span>;</span></div>
<div><span> </span><span>}</span></div>
<div><span> </span><span>}</span></div>
<br />
<div><span> // LED patterns</span></div>
<div><span> </span><span>if</span><span> </span><span>(</span><span>sdReady</span><span>)</span><span> </span><span>{</span></div>
<div><span> </span><span>if</span><span> </span><span>(</span><span>millis</span><span>()</span><span> - lastDataTime &gt; </span><span>3000</span><span>)</span><span> </span><span>{</span></div>
<div><span> </span><span>if</span><span> </span><span>(</span><span>millis</span><span>()</span><span> - lastBlinkTime &gt; </span><span>125</span><span>)</span><span> </span><span>{</span></div>
<div><span> ledState = !ledState;</span></div>
<div><span> </span><span>digitalWrite</span><span>(</span><span>LED_PIN, ledState ? HIGH : LOW</span><span>)</span><span>;</span></div>
<div><span> lastBlinkTime = </span><span>millis</span><span>()</span><span>;</span></div>
<div><span> </span><span>}</span></div>
<div><span> </span><span>}</span><span> </span><span>else</span><span> </span><span>{</span></div>
<div><span> </span><span>if</span><span> </span><span>(</span><span>millis</span><span>()</span><span> - lastBlinkTime &gt; </span><span>1500</span><span>)</span><span> </span><span>{</span></div>
<div><span> ledState = !ledState;</span></div>
<div><span> </span><span>digitalWrite</span><span>(</span><span>LED_PIN, ledState ? HIGH : LOW</span><span>)</span><span>;</span></div>
<div><span> lastBlinkTime = </span><span>millis</span><span>()</span><span>;</span></div>
<div><span> </span><span>}</span></div>
<div><span> </span><span>}</span></div>
<div><span> </span><span>}</span></div>
<br />
<div><span> // New file every FILE_MINUTES minutes</span></div>
<div><span> </span><span>if</span><span> </span><span>(</span><span>sdReady &amp;&amp; logFile &amp;&amp; </span><span>(</span><span>millis</span><span>()</span><span> - fileStartTime &gt; </span><span>(</span><span>unsigned</span><span> </span><span>long</span><span>)</span><span>FILE_MINUTES * </span><span>60</span><span>UL * </span><span>1000</span><span>UL</span><span>))</span><span> </span><span>{</span></div>
<div><span> </span><span>logFile</span><span>.</span><span>close</span><span>()</span><span>;</span></div>
<div><span> </span><span>createNewFile</span><span>()</span><span>;</span></div>
<div><span> </span><span>}</span></div>
<div><span>}</span></div>
<br />
<div><span>// ---- GPS READING FROM ADAFRUIT MODULE ON SERIAL1 ----</span></div>
<div><span>void</span><span> </span><span>readGPS</span><span>()</span><span> </span><span>{</span></div>
<div><span> </span><span>while</span><span> </span><span>(</span><span>Serial1</span><span>.</span><span>available</span><span>())</span><span> </span><span>{</span></div>
<div><span> </span><span>char</span><span> c = </span><span>Serial1</span><span>.</span><span>read</span><span>()</span><span>;</span></div>
<br />
<div><span> </span><span>if</span><span> </span><span>(</span><span>c == </span><span>'$'</span><span>)</span><span> </span><span>{</span></div>
<div><span> gpsBufferPos = </span><span>0</span><span>;</span></div>
<div><span> </span><span>}</span></div>
<br />
<div><span> </span><span>if</span><span> </span><span>(</span><span>gpsBufferPos &lt; </span><span>(</span><span>int</span><span>)</span><span>sizeof</span><span>(</span><span>gpsBuffer</span><span>)</span><span> - </span><span>1</span><span>)</span><span> </span><span>{</span></div>
<div><span> </span><span>gpsBuffer</span><span> = c;</span></div>
<div><span> gpsBufferPos++;</span></div>
<div><span> </span><span>}</span></div>
<br />
<div><span> </span><span>if</span><span> </span><span>(</span><span>c == </span><span>'</span><span>\n</span><span>'</span><span> || c == </span><span>'</span><span>\r</span><span>'</span><span>)</span><span> </span><span>{</span></div>
<div><span> </span><span>gpsBuffer</span><span> = </span><span>'</span><span>\0</span><span>'</span><span>;</span></div>
<br />
<div><span> </span><span>if</span><span> </span><span>(</span><span>strncmp</span><span>(</span><span>gpsBuffer, </span><span>"$GPRMC"</span><span>, </span><span>6</span><span>)</span><span> == </span><span>0</span><span> || </span><span>strncmp</span><span>(</span><span>gpsBuffer, </span><span>"$GNRMC"</span><span>, </span><span>6</span><span>)</span><span> == </span><span>0</span><span>)</span><span> </span><span>{</span></div>
<div><span> // Save full sentence for logging</span></div>
<div><span> </span><span>strncpy</span><span>(</span><span>gpsString, gpsBuffer, sizeof</span><span>(</span><span>gpsString</span><span>)</span><span> - </span><span>1</span><span>)</span><span>;</span></div>
<div><span> </span><span>gpsString</span><span> = </span><span>'</span><span>\0</span><span>'</span><span>;</span></div>
<br />
<div><span> // Remove trailing newline/carriage return</span></div>
<div><span> </span><span>int</span><span> slen = </span><span>strlen</span><span>(</span><span>gpsString</span><span>)</span><span>;</span></div>
<div><span> </span><span>while</span><span> </span><span>(</span><span>slen &gt; </span><span>0</span><span> &amp;&amp; </span><span>(</span><span>gpsString</span><span> == </span><span>'</span><span>\n</span><span>'</span><span> || </span><span>gpsString</span><span> == </span><span>'</span><span>\r</span><span>'</span><span>))</span><span> </span><span>{</span></div>
<div><span> </span><span>gpsString</span><span> = </span><span>'</span><span>\0</span><span>'</span><span>;</span></div>
<div><span> slen--;</span></div>
<div><span> </span><span>}</span></div>
<br />
<div><span> </span><span>parseGPRMC</span><span>(</span><span>gpsBuffer</span><span>)</span><span>;</span></div>
<div><span> </span><span>}</span></div>
<div><span> gpsBufferPos = </span><span>0</span><span>;</span></div>
<div><span> </span><span>}</span></div>
<div><span> </span><span>}</span></div>
<div><span>}</span></div>
<br />
<div><span>void</span><span> </span><span>parseGPRMC</span><span>(</span><span>char*</span><span> </span><span>sentence)</span><span> </span><span>{</span></div>
<div><span> // $GPRMC,HHMMSS.sss,A,lat,N,lon,W,speed,course,DDMMYY,...</span></div>
<div><span> </span><span>char</span><span> </span><span>copy</span><span>;</span></div>
<div><span> </span><span>strncpy</span><span>(</span><span>copy, sentence, sizeof</span><span>(</span><span>copy</span><span>)</span><span> - </span><span>1</span><span>)</span><span>;</span></div>
<div><span> </span><span>copy</span><span> = </span><span>'</span><span>\0</span><span>'</span><span>;</span></div>
<br />
<div><span> </span><span>char</span><span>* token = </span><span>strtok</span><span>(</span><span>copy, </span><span>","</span><span>)</span><span>;</span></div>
<div><span> </span><span>int</span><span> field = </span><span>0</span><span>;</span></div>
<br />
<div><span> </span><span>while</span><span> </span><span>(</span><span>token != </span><span>NULL</span><span> &amp;&amp; field &lt; </span><span>10</span><span>)</span><span> </span><span>{</span></div>
<div><span> </span><span>switch</span><span> </span><span>(</span><span>field</span><span>)</span><span> </span><span>{</span></div>
<div><span> </span><span>case</span><span> </span><span>1</span><span>:</span><span> // Time</span></div>
<div><span> </span><span>if</span><span> </span><span>(</span><span>strlen</span><span>(</span><span>token</span><span>)</span><span> &gt;= </span><span>6</span><span>)</span><span> </span><span>{</span></div>
<div><span> </span><span>snprintf</span><span>(</span><span>gpsTime, sizeof</span><span>(</span><span>gpsTime</span><span>)</span><span>, </span><span>"%c%c:%c%c:%s"</span><span>,</span></div>
<div><span> </span><span>token</span><span>, </span><span>token</span><span>, </span><span>token</span><span>, </span><span>token</span><span>, token + </span><span>4</span><span>)</span><span>;</span></div>
<div><span> </span><span>}</span></div>
<div><span> </span><span>break</span><span>;</span></div>
<div><span> </span><span>case</span><span> </span><span>2</span><span>:</span><span> // Fix status</span></div>
<div><span> gpsFix = </span><span>(</span><span>token</span><span> == </span><span>'A'</span><span>)</span><span>;</span></div>
<div><span> </span><span>break</span><span>;</span></div>
<div><span> </span><span>case</span><span> </span><span>9</span><span>:</span><span> // Date</span></div>
<div><span> </span><span>if</span><span> </span><span>(</span><span>strlen</span><span>(</span><span>token</span><span>)</span><span> &gt;= </span><span>6</span><span>)</span><span> </span><span>{</span></div>
<div><span> </span><span>snprintf</span><span>(</span><span>gpsDate, sizeof</span><span>(</span><span>gpsDate</span><span>)</span><span>, </span><span>"%c%c/%c%c/%c%c"</span><span>,</span></div>
<div><span> </span><span>token</span><span>, </span><span>token</span><span>, </span><span>token</span><span>, </span><span>token</span><span>, </span><span>token</span><span>, </span><span>token</span><span></span><span>)</span><span>;</span></div>
<div><span> </span><span>}</span></div>
<div><span> </span><span>break</span><span>;</span></div>
<div><span> </span><span>}</span></div>
<div><span> token = </span><span>strtok</span><span>(</span><span>NULL</span><span>, </span><span>","</span><span>)</span><span>;</span></div>
<div><span> field++;</span></div>
<div><span> </span><span>}</span></div>
<br />
<div><span> // Update GPS bits of tsStatus</span></div>
<div><span> tsStatus = </span><span>(</span><span>tsStatus &amp; 0x</span><span>0C</span><span>)</span><span>;</span><span> // Keep MFAM PPS bits (3,2)</span></div>
<div><span> tsStatus |= 0x</span><span>01</span><span>;</span><span> // Bit 0: RMC sentence received</span></div>
<div><span> </span><span>if</span><span> </span><span>(</span><span>gpsFix</span><span>)</span><span> </span><span>{</span></div>
<div><span> tsStatus |= 0x</span><span>02</span><span>;</span><span> // Bit 1: GPS fix valid</span></div>
<div><span> </span><span>}</span></div>
<div><span>}</span></div>
<br />
<div><span>// ---- MFAM DATA PARSING ----</span></div>
<div><span>int16_t</span><span> </span><span>toSigned16</span><span>(</span><span>uint16_t</span><span> </span><span>val)</span><span> </span><span>{</span></div>
<div><span> </span><span>if</span><span> </span><span>(</span><span>val &gt; </span><span>32767</span><span>)</span><span> </span><span>return</span><span> </span><span>(</span><span>int16_t</span><span>)(</span><span>val - </span><span>65536</span><span>)</span><span>;</span></div>
<div><span> </span><span>return</span><span> </span><span>(</span><span>int16_t</span><span>)</span><span>val;</span></div>
<div><span>}</span></div>
<br />
<div><span>void</span><span> </span><span>parseAuxChannels</span><span>(</span><span>uint8_t*</span><span> </span><span>sample</span><span>, </span><span>uint16_t</span><span> </span><span>frameID)</span><span> </span><span>{</span></div>
<div><span> </span><span>uint8_t</span><span> auxID = </span><span>(</span><span>frameID &gt;&gt; </span><span>11</span><span>)</span><span> &amp; 0x</span><span>07</span><span>;</span></div>
<br />
<div><span> </span><span>uint16_t</span><span> aux0 = </span><span>sample</span><span> | </span><span>(</span><span>sample</span><span> &lt;&lt; </span><span>8</span><span>)</span><span>;</span></div>
<div><span> </span><span>uint16_t</span><span> aux1 = </span><span>sample</span><span> | </span><span>(</span><span>sample</span><span> &lt;&lt; </span><span>8</span><span>)</span><span>;</span></div>
<div><span> </span><span>uint16_t</span><span> aux2 = </span><span>sample</span><span> | </span><span>(</span><span>sample</span><span> &lt;&lt; </span><span>8</span><span>)</span><span>;</span></div>
<div><span> </span><span>uint16_t</span><span> aux3 = </span><span>sample</span><span> | </span><span>(</span><span>sample</span><span> &lt;&lt; </span><span>8</span><span>)</span><span>;</span></div>
<br />
<div><span> </span><span>switch</span><span> </span><span>(</span><span>auxID</span><span>)</span><span> </span><span>{</span></div>
<div><span> </span><span>case</span><span> </span><span>1</span><span>:</span></div>
<div><span> compassX = </span><span>toSigned16</span><span>(</span><span>aux0</span><span>)</span><span> / </span><span>0.01333333</span><span>;</span></div>
<div><span> compassY = </span><span>toSigned16</span><span>(</span><span>aux1</span><span>)</span><span> / </span><span>0.01333333</span><span>;</span></div>
<div><span> compassZ = </span><span>toSigned16</span><span>(</span><span>aux2</span><span>)</span><span> / </span><span>0.01333333</span><span>;</span></div>
<div><span> compassT = </span><span>toSigned16</span><span>(</span><span>aux3</span><span>)</span><span> / </span><span>128.0</span><span> + </span><span>25.0</span><span>;</span></div>
<div><span> </span><span>break</span><span>;</span></div>
<div><span> </span><span>case</span><span> </span><span>2</span><span>:</span></div>
<div><span> gyroX = </span><span>toSigned16</span><span>(</span><span>aux0</span><span>)</span><span> / </span><span>16.384</span><span>;</span></div>
<div><span> gyroY = </span><span>toSigned16</span><span>(</span><span>aux1</span><span>)</span><span> / </span><span>16.384</span><span>;</span></div>
<div><span> gyroZ = </span><span>toSigned16</span><span>(</span><span>aux2</span><span>)</span><span> / </span><span>16.384</span><span>;</span></div>
<div><span> gyroT = </span><span>toSigned16</span><span>(</span><span>aux3</span><span>)</span><span> / </span><span>512.0</span><span> + </span><span>23.0</span><span>;</span></div>
<div><span> </span><span>break</span><span>;</span></div>
<div><span> </span><span>case</span><span> </span><span>4</span><span>:</span></div>
<div><span> accelX = </span><span>toSigned16</span><span>(</span><span>aux0</span><span>)</span><span> / </span><span>16384.0</span><span>;</span></div>
<div><span> accelY = </span><span>toSigned16</span><span>(</span><span>aux1</span><span>)</span><span> / </span><span>16384.0</span><span>;</span></div>
<div><span> accelZ = </span><span>toSigned16</span><span>(</span><span>aux2</span><span>)</span><span> / </span><span>16384.0</span><span>;</span></div>
<div><span> accelT = </span><span>toSigned16</span><span>(</span><span>aux3</span><span>)</span><span> / </span><span>512.0</span><span> + </span><span>23.0</span><span>;</span></div>
<div><span> </span><span>break</span><span>;</span></div>
<div><span> </span><span>default</span><span>:</span></div>
<div><span> </span><span>break</span><span>;</span></div>
<div><span> </span><span>}</span></div>
<div><span>}</span></div>
<br />
<div><span>void</span><span> </span><span>writeSample</span><span>(</span><span>unsigned</span><span> </span><span>long</span><span> </span><span>timestamp</span><span>, </span><span>uint16_t</span><span> </span><span>fiducial</span><span>, </span><span>double</span><span> </span><span>mag1</span><span>, </span><span>uint16_t</span><span> </span><span>mag1s</span><span>,</span></div>
<div><span> </span><span>double</span><span> </span><span>mag2</span><span>, </span><span>uint16_t</span><span> </span><span>mag2s</span><span>, </span><span>uint16_t</span><span> </span><span>sysStatus)</span><span> </span><span>{</span></div>
<br />
<div><span> </span><span>char</span><span> </span><span>tsStr</span><span>;</span></div>
<div><span> </span><span>snprintf</span><span>(</span><span>tsStr, sizeof</span><span>(</span><span>tsStr</span><span>)</span><span>, </span><span>"%d%d%d%d%d%d%d%d"</span><span>,</span></div>
<div><span> </span><span>(</span><span>tsStatus &gt;&gt; </span><span>7</span><span>)</span><span> &amp; </span><span>1</span><span>, </span><span>(</span><span>tsStatus &gt;&gt; </span><span>6</span><span>)</span><span> &amp; </span><span>1</span><span>, </span><span>(</span><span>tsStatus &gt;&gt; </span><span>5</span><span>)</span><span> &amp; </span><span>1</span><span>, </span><span>(</span><span>tsStatus &gt;&gt; </span><span>4</span><span>)</span><span> &amp; </span><span>1</span><span>,</span></div>
<div><span> </span><span>(</span><span>tsStatus &gt;&gt; </span><span>3</span><span>)</span><span> &amp; </span><span>1</span><span>, </span><span>(</span><span>tsStatus &gt;&gt; </span><span>2</span><span>)</span><span> &amp; </span><span>1</span><span>, </span><span>(</span><span>tsStatus &gt;&gt; </span><span>1</span><span>)</span><span> &amp; </span><span>1</span><span>, tsStatus &amp; </span><span>1</span><span>)</span><span>;</span></div>
<br />
<div><span> </span><span>char</span><span> </span><span>sysHex</span><span>, </span><span>m1sHex</span><span>, </span><span>m2sHex</span><span>;</span></div>
<div><span> </span><span>snprintf</span><span>(</span><span>sysHex, sizeof</span><span>(</span><span>sysHex</span><span>)</span><span>, </span><span>"%04X"</span><span>, sysStatus</span><span>)</span><span>;</span></div>
<div><span> </span><span>snprintf</span><span>(</span><span>m1sHex, sizeof</span><span>(</span><span>m1sHex</span><span>)</span><span>, </span><span>"%04X"</span><span>, mag1s</span><span>)</span><span>;</span></div>
<div><span> </span><span>snprintf</span><span>(</span><span>m2sHex, sizeof</span><span>(</span><span>m2sHex</span><span>)</span><span>, </span><span>"%04X"</span><span>, mag2s</span><span>)</span><span>;</span></div>
<br />
<div><span> </span><span>char</span><span> </span><span>line</span><span>;</span></div>
<div><span> </span><span>snprintf</span><span>(</span><span>line, sizeof</span><span>(</span><span>line</span><span>)</span><span>,</span></div>
<div><span> </span><span>"%10.4f,%10.4f,%4d,%s,%s,%s,%10.2f,%10.2f,%10.2f,%5.1f,%8.5f,%8.5f,%8.5f,%5.1f,%8.1f,%8.1f,%8.1f,%5.1f,%s,%s,%s,%s"</span><span>,</span></div>
<div><span> mag1, mag2, fiducial, sysHex, m1sHex, m2sHex,</span></div>
<div><span> gyroX, gyroY, gyroZ, gyroT,</span></div>
<div><span> accelX, accelY, accelZ, accelT,</span></div>
<div><span> compassX, compassY, compassZ, compassT,</span></div>
<div><span> gpsDate, gpsTime, tsStr, gpsString</span><span>)</span><span>;</span></div>
<br />
<div><span> </span><span>if</span><span> </span><span>(</span><span>sdReady &amp;&amp; logFile</span><span>)</span><span> </span><span>{</span></div>
<div><span> </span><span>logFile</span><span>.</span><span>println</span><span>(</span><span>line</span><span>)</span><span>;</span></div>
<div><span> </span><span>if</span><span> </span><span>(</span><span>sampleCount % </span><span>1000</span><span> == </span><span>0</span><span>)</span><span> </span><span>{</span></div>
<div><span> </span><span>logFile</span><span>.</span><span>flush</span><span>()</span><span>;</span></div>
<div><span> </span><span>}</span></div>
<div><span> </span><span>}</span></div>
<br />
<div><span> </span><span>if</span><span> </span><span>(</span><span>sampleCount % </span><span>500</span><span> == </span><span>0</span><span>)</span><span> </span><span>{</span></div>
<div><span> </span><span>Serial</span><span>.</span><span>println</span><span>(</span><span>line</span><span>)</span><span>;</span></div>
<div><span> </span><span>}</span></div>
<div><span>}</span></div>
<br />
<div><span>void</span><span> </span><span>parsePacket</span><span>(</span><span>uint8_t*</span><span> </span><span>pkt)</span><span> </span><span>{</span></div>
<div><span> // Get PPS bits from MFAM system status</span></div>
<div><span> </span><span>uint16_t</span><span> firstSysStatus = </span><span>pkt</span><span> | </span><span>(</span><span>pkt</span><span> &lt;&lt; </span><span>8</span><span>)</span><span>;</span></div>
<div><span> </span><span>uint8_t</span><span> mfamPPSbits = </span><span>(</span><span>firstSysStatus &gt;&gt; </span><span>12</span><span>)</span><span> &amp; 0x</span><span>0C</span><span>;</span></div>
<div><span> tsStatus = </span><span>(</span><span>tsStatus &amp; 0x</span><span>03</span><span>)</span><span> | mfamPPSbits;</span></div>
<br />
<div><span> </span><span>for</span><span> </span><span>(</span><span>int</span><span> i = </span><span>0</span><span>; i &lt; NUM_SAMPLES; i++</span><span>)</span><span> </span><span>{</span></div>
<div><span> </span><span>int</span><span> offset = HEADER_SIZE + </span><span>(</span><span>i * SAMPLE_SIZE</span><span>)</span><span>;</span></div>
<br />
<div><span> </span><span>uint16_t</span><span> frameID = </span><span>pkt</span><span> | </span><span>(</span><span>pkt</span><span> &lt;&lt; </span><span>8</span><span>)</span><span>;</span></div>
<div><span> </span><span>uint16_t</span><span> fiducial = frameID &amp; 0x</span><span>07FF</span><span>;</span></div>
<br />
<div><span> </span><span>uint16_t</span><span> sysStatus = </span><span>pkt</span><span> | </span><span>(</span><span>pkt</span><span> &lt;&lt; </span><span>8</span><span>)</span><span>;</span></div>
<br />
<div><span> </span><span>uint32_t</span><span> mag1raw = </span><span>pkt</span><span> | </span><span>(</span><span>pkt</span><span> &lt;&lt; </span><span>8</span><span>)</span><span> |</span></div>
<div><span> </span><span>((</span><span>uint32_t</span><span>)</span><span>pkt</span><span> &lt;&lt; </span><span>16</span><span>)</span><span> | </span><span>((</span><span>uint32_t</span><span>)</span><span>pkt</span><span> &lt;&lt; </span><span>24</span><span>)</span><span>;</span></div>
<div><span> </span><span>double</span><span> mag1 = mag1raw * </span><span>0.05</span><span> / </span><span>1000.0</span><span>;</span></div>
<br />
<div><span> </span><span>uint16_t</span><span> mag1status = </span><span>pkt</span><span> | </span><span>(</span><span>pkt</span><span> &lt;&lt; </span><span>8</span><span>)</span><span>;</span></div>
<br />
<div><span> </span><span>uint32_t</span><span> mag2raw = </span><span>pkt</span><span> | </span><span>(</span><span>pkt</span><span> &lt;&lt; </span><span>8</span><span>)</span><span> |</span></div>
<div><span> </span><span>((</span><span>uint32_t</span><span>)</span><span>pkt</span><span> &lt;&lt; </span><span>16</span><span>)</span><span> | </span><span>((</span><span>uint32_t</span><span>)</span><span>pkt</span><span> &lt;&lt; </span><span>24</span><span>)</span><span>;</span></div>
<div><span> </span><span>double</span><span> mag2 = mag2raw * </span><span>0.05</span><span> / </span><span>1000.0</span><span>;</span></div>
<br />
<div><span> </span><span>uint16_t</span><span> mag2status = </span><span>pkt</span><span> | </span><span>(</span><span>pkt</span><span> &lt;&lt; </span><span>8</span><span>)</span><span>;</span></div>
<br />
<div><span> </span><span>parseAuxChannels</span><span>(</span><span>pkt + offset, frameID</span><span>)</span><span>;</span></div>
<br />
<div><span> sampleCount++;</span></div>
<div><span> downsampleCounter++;</span></div>
<br />
<div><span> </span><span>if</span><span> </span><span>(</span><span>downsampleCounter &gt;= DOWNSAMPLE_FACTOR</span><span>)</span><span> </span><span>{</span></div>
<div><span> downsampleCounter = </span><span>0</span><span>;</span></div>
<div><span> </span><span>writeSample</span><span>(</span><span>millis</span><span>()</span><span>, fiducial, mag1, mag1status, mag2, mag2status, sysStatus</span><span>)</span><span>;</span></div>
<div><span> </span><span>}</span></div>
<div><span> </span><span>}</span></div>
<div><span>}</span></div>
</div>]]></content:encoded>
						                            <category domain="https://www.geometrics.com/community/"></category>                        <dc:creator>Roi Granot</dc:creator>
                        <guid isPermaLink="true">https://www.geometrics.com/community/mfam/teensy-4-1-with-mfam/</guid>
                    </item>
				                    <item>
                        <title>Survey Manager quits when exporting to Montaj/GDB format</title>
                        <link>https://www.geometrics.com/community/general-magnetometer/survey-manager-quits-when-exporting-to-montaj-gdb-format/</link>
                        <pubDate>Wed, 17 Dec 2025 18:26:02 +0000</pubDate>
                        <description><![CDATA[Survey Manager 3.5.1433 and earlier versions may exit unexpectedly after the user has selected &quot;Export GDB&quot; to export magnetometer survey data to a Montaj-compatible database.[&quot;Export GDB&quot; i...]]></description>
                        <content:encoded><![CDATA[<p>Survey Manager 3.5.1433 and earlier versions may exit unexpectedly after the user has selected "Export GDB" to export magnetometer survey data to a Montaj-compatible database..</p>
<p>Survey Manager may exit without notice or it may show some information about the failure, including steps to open a service request with Seequent.</p>
<p>On systems with Montaj 2025.1 or earlier, this issue may be fixed by updating Montaj to the most recent version (2025.2 at the time of this post) and verifying that Survey Manager is at its most recent version (3.5.1433 at the time of this post).</p>]]></content:encoded>
						                            <category domain="https://www.geometrics.com/community/"></category>                        <dc:creator>Magnetics SW</dc:creator>
                        <guid isPermaLink="true">https://www.geometrics.com/community/general-magnetometer/survey-manager-quits-when-exporting-to-montaj-gdb-format/</guid>
                    </item>
				                    <item>
                        <title>Quickstart Guide Now Available</title>
                        <link>https://www.geometrics.com/community/magarrow-magarrow-hardware/quickstart-guide-now-available-2/</link>
                        <pubDate>Wed, 29 Oct 2025 16:31:38 +0000</pubDate>
                        <description><![CDATA[Find the most recent version of the Quickstart Guide on the MagElement product page, or click the link here]]></description>
                        <content:encoded><![CDATA[Find the most recent version of the Quickstart Guide on the MagElement product page, or click the link <p><a href="https://www.geometrics.com/wp-content/uploads/2025/10/MagElement_Quickstart_Guide_RevA.pdf">here</a></p>]]></content:encoded>
						                            <category domain="https://www.geometrics.com/community/"></category>                        <dc:creator>Gretchen Schmauder</dc:creator>
                        <guid isPermaLink="true">https://www.geometrics.com/community/magarrow-magarrow-hardware/quickstart-guide-now-available-2/</guid>
                    </item>
				                    <item>
                        <title>Quickstart Guide Now Available</title>
                        <link>https://www.geometrics.com/community/magex-magex-application/quickstart-guide-now-available/</link>
                        <pubDate>Wed, 29 Oct 2025 16:24:06 +0000</pubDate>
                        <description><![CDATA[Find the most recent version of the Quickstart Guide on the MagStation product page, or click the link here]]></description>
                        <content:encoded><![CDATA[Find the most recent version of the Quickstart Guide on the MagStation product page, or click the link <p><a href="https://www.geometrics.com/wp-content/uploads/2025/10/MagStation_Quickstart_Guide_A0.pdf">here</a></p>]]></content:encoded>
						                            <category domain="https://www.geometrics.com/community/"></category>                        <dc:creator>Gretchen Schmauder</dc:creator>
                        <guid isPermaLink="true">https://www.geometrics.com/community/magex-magex-application/quickstart-guide-now-available/</guid>
                    </item>
				                    <item>
                        <title>Finding lost MagArrow II with a new MagArrow II</title>
                        <link>https://www.geometrics.com/community/magarrow-hardware/finding-lost-magarrow-ii-with-a-new-magarrow-ii/</link>
                        <pubDate>Wed, 24 Sep 2025 05:27:48 +0000</pubDate>
                        <description><![CDATA[Hello everyone, my name is Devan, and I would like to open a discussion about finding a lost MagArrow.
To give you some background, I lost my MagArrow II while it was mounted below the DJI ...]]></description>
                        <content:encoded><![CDATA[<p>Hello everyone, my name is Devan, and I would like to open a discussion about finding a lost MagArrow.</p>
<p>To give you some background, I lost my MagArrow II while it was mounted below the DJI M400 during a flight mission in a highly dense forest. We have the drone flight log, which indicates that it was stuck in a tree within a 50 m radius of the last known location. We have searched the whole area, but due to a highly dense forest and steep terrain, it was very difficult to find the MagArrow II and the drone on foot.<br /><br />For more than a month, I presume it was still perched within the tree canopy. And now we have bought a new MagArrow II to continue our survey. In this case, I desperately want to find and retrieve the lost MagArrow using the new device.<br /><br />I have an idea that if I conduct a 5 m spacing grid in both East-West and North-South directions within <span>a 100-meter radius of the last known location</span>, we could eventually narrow down our perimeter by finding an anomaly that indicates the lost device. Therefore, I have a few questions:<br />1. How magnetic is the drone and the MagArrow II?<br />2. Is it feasible to find the old MagArrow with the new MagArrow with the stated method? Alternatively, do you have any effective suggestions for a different approach?</p>
<p><span> I appreciate any insights you can provide. Thank you!</span></p>]]></content:encoded>
						                            <category domain="https://www.geometrics.com/community/"></category>                        <dc:creator>Muhammad Devandra</dc:creator>
                        <guid isPermaLink="true">https://www.geometrics.com/community/magarrow-hardware/finding-lost-magarrow-ii-with-a-new-magarrow-ii/</guid>
                    </item>
				                    <item>
                        <title>MagEditor instructional video is now online</title>
                        <link>https://www.geometrics.com/community/general-magnetometer/mageditor-instructional-video-is-now-online/</link>
                        <pubDate>Fri, 08 Aug 2025 18:21:14 +0000</pubDate>
                        <description><![CDATA[Follow this link to view the video on our YouTube channel.]]></description>
                        <content:encoded><![CDATA[Follow this link to view the video on our YouTube channel. 
https://youtu.be/-STSMt8jTJY]]></content:encoded>
						                            <category domain="https://www.geometrics.com/community/"></category>                        <dc:creator>Gretchen Schmauder</dc:creator>
                        <guid isPermaLink="true">https://www.geometrics.com/community/general-magnetometer/mageditor-instructional-video-is-now-online/</guid>
                    </item>
				                    <item>
                        <title>Request for Sample Data File</title>
                        <link>https://www.geometrics.com/community/magarrow-magarrow-software/request-for-sample-data-file/</link>
                        <pubDate>Fri, 01 Aug 2025 22:36:57 +0000</pubDate>
                        <description><![CDATA[Could you please provide me with a sample data file recorded from the MagElement?
Thank you in advance for your assistance!]]></description>
                        <content:encoded><![CDATA[<p>Could you please provide me with a sample data file recorded from the MagElement?</p>
<p>Thank you in advance for your assistance!</p>]]></content:encoded>
						                            <category domain="https://www.geometrics.com/community/"></category>                        <dc:creator>Shinji Matsuda</dc:creator>
                        <guid isPermaLink="true">https://www.geometrics.com/community/magarrow-magarrow-software/request-for-sample-data-file/</guid>
                    </item>
				                    <item>
                        <title>Data storage to the MagElement unit</title>
                        <link>https://www.geometrics.com/community/magarrow-magarrow-application/data-storage-to-the-magelement-unit/</link>
                        <pubDate>Mon, 28 Jul 2025 06:19:50 +0000</pubDate>
                        <description><![CDATA[Does the MagElement have the functionality to record the acquired data onto a device like an internal SD card?]]></description>
                        <content:encoded><![CDATA[<p><span data-teams="true">Does the MagElement have the functionality to record the acquired data onto a device like an internal SD card?</span></p>]]></content:encoded>
						                            <category domain="https://www.geometrics.com/community/"></category>                        <dc:creator>Shinji Matsuda</dc:creator>
                        <guid isPermaLink="true">https://www.geometrics.com/community/magarrow-magarrow-application/data-storage-to-the-magelement-unit/</guid>
                    </item>
							        </channel>
        </rss>
		