<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>g7ufo.radio</title><link>https://blog.g7ufo.radio/</link><description>The benchnotes and ramblings behind a small catalogue of homebrew gear</description><generator>Hugo</generator><language>en-gb</language><lastBuildDate>Sat, 22 Mar 2025 20:43:12 +0000</lastBuildDate><atom:link href="https://blog.g7ufo.radio/index.xml" rel="self" type="application/rss+xml"/><item><title>CTR2-Dial</title><link>https://blog.g7ufo.radio/posts/ctr2-dial/</link><pubDate>Sat, 22 Mar 2025 20:43:12 +0000</pubDate><guid>https://blog.g7ufo.radio/posts/ctr2-dial/</guid><category>lynovation</category><category>ctr2-midi</category><category>flexradio</category><category>smartsdr</category><category>ipad</category><category>midi</category><category>controller</category><category>cw</category><category>morse</category><category>3dprinting</category><description>The radio silence this year has been mirrored by actual radio silence. My logbook shows a distinct lack of airtime, something I need to remedy soon! I completed my CWOps beginners course last month which was great. I&amp;rsquo;ll write about that separately though.&#10;Other than starting to learn CW, I&amp;rsquo;ve been very busy with some 3D printing based projects. The TP-iii case has been very popular and was kindly reviewed by Thomas, K4SWL on qrper.com.&#10;</description><content:encoded><![CDATA[<p>The radio silence this year has been mirrored by actual radio silence. My logbook shows a distinct lack of airtime, something I need to remedy soon! I completed my CWOps beginners course last month which was great. I&rsquo;ll write about that separately though.</p>
<p>Other than starting to learn CW, I&rsquo;ve been very busy with some 3D printing based projects. The TP-iii case has been very popular and was kindly reviewed by <a href="https://qrper.com/2025/03/g7ufos-magnetic-case-for-the-bamakey-tp-iii-paddle/">Thomas, K4SWL on qrper.com</a>.</p>
<hr>
<p>As you my know from other blog posts, I make use of the Lynovation <a href="https://ctr2.lynovation.com/ctr2-midi/">CTR2-Midi</a> paired with my own <a href="https://g7ufo.radio/posts/ctr2-midi-battery-addon/">battery addon</a> mainly for physical controls when using my iPad (and SmartSDR) to drive my FlexRadio from the comfort of <em>whichever room I get chucked into by my kids</em>! I&rsquo;ve also used it a lot more of late for practising CW.</p>
<p>Earlier this month Lynn, KU7Q released a new revision, the <a href="https://ctr2.lynovation.com/ctr2-dial/">CTR2-Dial</a> which makes use of the M5 Stack Dial for display and input. I&rsquo;ll let his video below save me some typing!</p>
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
			<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/huCDlstv1Is?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"></iframe>
		</div>

<p>I was very keen to produce a case for this because I was excited about the product. Plus, much like what I did with the <a href="https://g7ufo.radio/posts/ctr2-midi-battery-addon/">CTR2-MIDI battery addon</a>, I wanted to use this without cables too.</p>
<p>So, to designing a case; I started off with something that roughly resembled my trusty Icom RC-28 which is connected to my MacBook Pro. From there, with feedback from Lynn we&rsquo;ve iterated over four major versions before hitting v5.</p>
<div class="sketchfab-collection-embed-wrapper">
   <iframe
      frameborder="0"
      allowfullscreen
      mozallowfullscreen="true"
      webkitallowfullscreen="true"
      allow="autoplay; fullscreen; xr-spatial-tracking"
      xr-spatial-tracking
      execution-while-out-of-viewport
      execution-while-not-rendered
      web-share
      width="640"
      height="480"
      src="https://sketchfab.com/playlists/embed?collection=ad698ce6cfaa489dad248a04d9a111eb">
    </iframe>
</div>

<p>Some of these were complete redesigns, some were more technical reworks and I&rsquo;ve learnt so much about CAD as each version was &ldquo;definitely the one I&rsquo;ll use&rdquo;.</p>
<p>And here&rsquo;s the in-printer camera capture of two of the shells printing, which I always find very pleasing!</p>

			<div
					style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
				<iframe
					src="https://player.vimeo.com/video/1068472363?dnt=0"
						style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allow="fullscreen">
				</iframe>
			</div>

<p>Of course, what those designs don&rsquo;t show is that there are seven variants depending on number of dials, the dial size and if a jack for a key/paddle is required. All very fun. Once I&rsquo;d started treating CAD like I would a development project (reuse and variable configuration) then it became a lot easer. v1-v3 are absolutely labeled with the &ldquo;legacy code - here be dragons&rdquo;.</p>
<p>If you&rsquo;d like one of these and are on the US side of &ldquo;the pond&rdquo; then its best to order from <a href="https://ctr2.lynovation.com/ctr2-dial-order/">Lynn directly</a>. Lynn will be printing my v5 case and making that available soon.</p>
<p>If you&rsquo;re in the UK or Europe then please checkout my <a href="https://shop.g7ufo.radio">shop</a> or see below!</p>


<div id='product-component-1742658099872'></div>
<script type="text/javascript">
/*<![CDATA[*/
(function () {
  var scriptURL = 'https://sdks.shopifycdn.com/buy-button/latest/buy-button-storefront.min.js';
  if (window.ShopifyBuy) {
    if (window.ShopifyBuy.UI) {
      ShopifyBuyInit();
    } else {
      loadScript();
    }
  } else {
    loadScript();
  }
  function loadScript() {
    var script = document.createElement('script');
    script.async = true;
    script.src = scriptURL;
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(script);
    script.onload = ShopifyBuyInit;
  }
  function ShopifyBuyInit() {
    var client = ShopifyBuy.buildClient({
      domain: 'a1m0dm-71.myshopify.com',
      storefrontAccessToken: '26085e0d64a151286ebfc7b6d735c13c',
    });
    ShopifyBuy.UI.onReady(client).then(function (ui) {
      ui.createComponent('product', {
        id: '9907927581010',
        node: document.getElementById('product-component-1742658099872'),
        moneyFormat: '%C2%A3%7B%7Bamount%7D%7D',
        options: {
  "product": {
    "styles": {
      "product": {
        "@media (min-width: 601px)": {
          "max-width": "calc(25% - 20px)",
          "margin-left": "20px",
          "margin-bottom": "50px"
        },
        "carousel-button": {
          "display": "none"
        }
      },
      "title": {
        "font-family": "Roboto, sans-serif",
        "color": "#888888"
      },
      "button": {
        "font-family": "Roboto, sans-serif",
        "font-size": "14px",
        "padding-top": "15px",
        "padding-bottom": "15px",
        ":hover": {
          "background-color": "#2d9a42"
        },
        "background-color": "#32ab49",
        ":focus": {
          "background-color": "#2d9a42"
        },
        "border-radius": "14px",
        "padding-left": "100px",
        "padding-right": "100px"
      },
      "quantityInput": {
        "font-size": "14px",
        "padding-top": "15px",
        "padding-bottom": "15px"
      },
      "price": {
        "font-family": "Roboto, sans-serif",
        "color": "#888888"
      },
      "compareAt": {
        "font-family": "Roboto, sans-serif",
        "color": "#888888"
      },
      "unitPrice": {
        "font-family": "Roboto, sans-serif",
        "color": "#888888"
      }
    },
    "contents": {
      "img": false,
      "imgWithCarousel": true
    },
    "width": "580px",
    "text": {
      "button": "Add to cart"
    },
    "googleFonts": [
      "Roboto"
    ]
  },
  "productSet": {
    "styles": {
      "products": {
        "@media (min-width: 601px)": {
          "margin-left": "-20px"
        }
      }
    }
  },
  "modalProduct": {
    "contents": {
      "img": false,
      "imgWithCarousel": true,
      "button": false,
      "buttonWithQuantity": true
    },
    "styles": {
      "product": {
        "@media (min-width: 601px)": {
          "max-width": "100%",
          "margin-left": "0px",
          "margin-bottom": "0px"
        }
      },
      "button": {
        "font-family": "Roboto, sans-serif",
        "font-size": "14px",
        "padding-top": "15px",
        "padding-bottom": "15px",
        ":hover": {
          "background-color": "#2d9a42"
        },
        "background-color": "#32ab49",
        ":focus": {
          "background-color": "#2d9a42"
        },
        "border-radius": "14px",
        "padding-left": "100px",
        "padding-right": "100px"
      },
      "quantityInput": {
        "font-size": "14px",
        "padding-top": "15px",
        "padding-bottom": "15px"
      },
      "title": {
        "font-family": "Helvetica Neue, sans-serif",
        "font-weight": "bold",
        "font-size": "26px",
        "color": "#4c4c4c"
      },
      "price": {
        "font-family": "Helvetica Neue, sans-serif",
        "font-weight": "normal",
        "font-size": "18px",
        "color": "#4c4c4c"
      },
      "compareAt": {
        "font-family": "Helvetica Neue, sans-serif",
        "font-weight": "normal",
        "font-size": "15.299999999999999px",
        "color": "#4c4c4c"
      },
      "unitPrice": {
        "font-family": "Helvetica Neue, sans-serif",
        "font-weight": "normal",
        "font-size": "15.299999999999999px",
        "color": "#4c4c4c"
      }
    },
    "googleFonts": [
      "Roboto"
    ],
    "text": {
      "button": "Add to cart"
    }
  },
  "option": {
    "styles": {
      "label": {
        "font-family": "Roboto, sans-serif"
      },
      "select": {
        "font-family": "Roboto, sans-serif"
      }
    },
    "googleFonts": [
      "Roboto"
    ]
  },
  "cart": {
    "styles": {
      "button": {
        "font-family": "Roboto, sans-serif",
        "font-size": "14px",
        "padding-top": "15px",
        "padding-bottom": "15px",
        ":hover": {
          "background-color": "#2d9a42"
        },
        "background-color": "#32ab49",
        ":focus": {
          "background-color": "#2d9a42"
        },
        "border-radius": "14px"
      }
    },
    "text": {
      "total": "Subtotal",
      "button": "Checkout"
    },
    "googleFonts": [
      "Roboto"
    ]
  },
  "toggle": {
    "styles": {
      "toggle": {
        "font-family": "Roboto, sans-serif",
        "background-color": "#32ab49",
        ":hover": {
          "background-color": "#2d9a42"
        },
        ":focus": {
          "background-color": "#2d9a42"
        }
      },
      "count": {
        "font-size": "14px"
      }
    },
    "googleFonts": [
      "Roboto"
    ]
  }
},
      });
    });
  }
})();
/*]]]]>>*/
&lt;/script>


</content:encoded></item><item><title>A battery addon for the Lynovation CTR2-MIDI and CTR2-Micro</title><link>https://blog.g7ufo.radio/posts/ctr2-midi-battery-addon/</link><pubDate>Fri, 06 Dec 2024 22:37:00 +0000</pubDate><guid>https://blog.g7ufo.radio/posts/ctr2-midi-battery-addon/</guid><category>lynovation</category><category>ctr2-midi</category><category>flexradio</category><category>smartsdr</category><category>ipad</category><category>midi</category><category>controller</category><category>cw</category><category>morse</category><category>3dprinting</category><description>Back in the now distant memory which is the summer I ordered a CTR2-MIDI from Lynn at Lynovation.&#10;Background from their website:&#10;If you already use a radio controller app like Marcus Roskosch’s (DL8MRE) apps for iOS and MacOS, Remote Ham Radio to operate contest quality remote radios, Thetis for your Apache ANAN or Hermes-Lite 2, or SDR-Console on Windows, CTR2-MIDI will provide an 8 function tuning knob, 6 programmable function buttons, and a multi-purpose paddle input jack. It’s small, only 60mm x 60mm x 20mm (2-3/8″ square and 7/8″ high) not counting the knob. This unit supports USB and Bluetooth-LE MIDI and is specifically designed with hams in mind.&#10;</description><content:encoded><![CDATA[<p>Back in the now distant memory which is the summer I ordered a <a href="https://ctr2.lynovation.com/ctr2-midi/">CTR2-MIDI</a> from Lynn at <a href="https://ctr2.lynovation.com">Lynovation</a>.</p>
<p>Background from their website:</p>
<blockquote>
<p>If you already use a radio controller app like Marcus Roskosch’s (DL8MRE) apps for iOS and MacOS, Remote Ham Radio to operate contest quality remote radios, Thetis for your Apache ANAN or Hermes-Lite 2, or SDR-Console on Windows, CTR2-MIDI will provide an 8 function tuning knob, 6 programmable function buttons, and a multi-purpose paddle input jack. It’s small, only 60mm x 60mm x 20mm (2-3/8″ square and 7/8″ high) not counting the knob. This unit supports USB and Bluetooth-LE MIDI and is specifically designed with hams in mind.</p>
</blockquote>
<p>On my desk, I use an Icom RC-28 to control my FlexRadio with the excellent <a href="https://roskosch.de/smartsdr-for-mac/">SmartSDR from Marcus Roskosch</a>. I was looking for a similar controller for use on my iPad (also using SmartSDR). The availablity of a port for a key/paddle was also very interesting to me as you&rsquo;ll note from <a href="https://blog.g7ufo.radio/posts/tp-iii-case/">this post</a>.</p>
<p>As I suspected when the CTR2-MIDI arrived from the US, it was a great, high quality solution. The only quibble was that I needed to grab a power bank or cable to attach it to the iPad to power it (in my use case, the data connection is performed via Bluetooth LE). I completely understand why a battery was not built into the CTR2-MIDI, something which Lynn has confirmed would have increased the size and expense of the unit.</p>
<p>As you may have <a href="https://g7ufo.radio/3d">noticed</a>, I&rsquo;m on a bit of a 3D printing/designing spree at the moment so I sat down to design an extension to the CTR2-MIDI. Lynn was very responsive to my emails and mentioned the board does have a LIPO charge controller which could be directly connected to a 3.7v battery. However, this connection is on the underside of the board. I wanted this to be a reversable and non-destructive addon, not a modification.</p>
<hr>
<p>My search for a solution didn&rsquo;t take too long as <a href="https://www.seeedstudio.com">Seeed Studio</a>, who make the <a href="https://www.seeedstudio.com/XIAO-ESP32S3-p-5627.html">ESP32-S3 board</a> used in the CTR2-MIDI also produce the <a href="https://www.seeedstudio.com/Lipo-Rider-Plus-p-4204.html">Lipo Rider Plus</a> board which will provide a suitable 5v output from a 3.7v LiPo battery, as well as allow the battery to be charged. I purchased one and mocked up a proof of concept.</p>
<p><img src="https://blog.g7ufo.radio/posts/ctr2-midi-battery-addon/test-prints.png" alt="Versions 1 through 8" title="Versions 1 through 8"></p>
<p>Fast forward a few weeks, more than a few test prints (which will be recycled) and I now have a nice compact non-destructive addon using a 1400mAh battery which will power the device for a at least 10 hours.</p>
<blockquote>
<p>As an added bonus Lynn has confirmed this is also compatible with the CTR2-Micro.</p>
</blockquote>
<p><img src="https://blog.g7ufo.radio/posts/ctr2-midi-battery-addon/sketchbook.png" alt="The completed design, annotated" title="The completed design, annotated"></p>
<hr>
<p>I have uploaded the files to <a href="https://www.printables.com/@g7ufo_845817">Printables</a> under the <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/?ref=chooser-v1">CC BY-NC-SA 4.0 licence</a> soon for anyone who wants to adapt for print their own for non-commerical purposes.</p>
<p>If you would prefer to purchase a working unit complete with the board, battery, switch and cabling enclosed in a high quality PLA print, then please check out <a href="https://shop.g7ufo.radio">shop.g7ufo.radio</a> or drop me an <a href="mailto:shop@g7ufo.radio">email</a>.</p>
]]></content:encoded></item><item><title>A case for the BaMaTech BaMaKeY TP-III</title><link>https://blog.g7ufo.radio/posts/tp-iii-case/</link><pubDate>Wed, 04 Dec 2024 22:28:00 +0000</pubDate><guid>https://blog.g7ufo.radio/posts/tp-iii-case/</guid><category>cw</category><category>morse</category><category>bamatech</category><category>bamakey</category><category>tp-iii</category><category>3dprints</category><category>magnets</category><description>Learning CW has been on my TODO list for a while. This tends to be a very long list with no signs of shrinking. Admittedly, I&amp;rsquo;ve never been able to put enough consistent effort into making it &amp;lsquo;stick&amp;rsquo;.&#10;During my last attempt a year ago, I purchased a Sonderedition BaMaKeY TP-III from BaMaTech. 2023&amp;rsquo;s colour was green (this years is blue). Its a fantastic key and I know its very popular for SOTA/POTA and portable ops.&#10;</description><content:encoded><![CDATA[<p>Learning CW has been on my TODO list for a while. This tends to be a very long list with no signs of shrinking. Admittedly, I&rsquo;ve never been able to put enough consistent effort into making it &lsquo;stick&rsquo;.</p>
<p>During my last attempt a year ago, I purchased a <a href="https://www.bamatech.net/morsetasten/bamakey-tp-iii-twin-paddle-key-sonderedition.html">Sonderedition BaMaKeY TP-III from BaMaTech</a>. 2023&rsquo;s colour was green (this years is blue). Its a fantastic key and I know its very popular for SOTA/POTA and portable ops.</p>
<p>As anyone who&rsquo;s trying to avoid doing something knows, the trick is to do something else. So, I started looking for a 3D printable case. I ended up <a href="https://www.printables.com/model/862888-bamatech-bamakey-tp-iii-paddle-holder">remixing</a> VK1HF&rsquo;s <a href="https://www.printables.com/model/647687-bamakey-tp-iii-tp-3-paddle-holder-bamatech">design</a> so it was a better fit for my print and also added some grooves to more easily retrieve the key.</p>
<hr>
<blockquote>
<p>I&rsquo;ve updated this article on the 6th December to reflect a design change.</p>
</blockquote>
<blockquote>
<p>Markus from BaMaTech noted that the polorisaion of the magnets in the TP-III keys aren&rsquo;t necessarily constant. To protect against this eventuality I&rsquo;ve updated the base to use two large steel washers in place of the magnets for the key to mount to. This will ensure universal fitment and still provide a strong bond.</p>
</blockquote>
<p>Fast forward to this year and I&rsquo;ve topped that by desinging a new case which leverages no less than eight magnets - because everyone knows magnets are cool!</p>
<p><img src="https://blog.g7ufo.radio/posts/tp-iii-case/magnet-layout.png" alt="The layout of the magnets in the case" title="The layout of the magnets in the case"></p>

			<div
					style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
				<iframe
					src="https://player.vimeo.com/video/1036291933?dnt=0"
						style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allow="fullscreen">
				</iframe>
			</div>

<p>I have uploaded the files to <a href="https://www.printables.com/@g7ufo_845817">Printables</a> under the <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/?ref=chooser-v1">CC BY-NC-SA 4.0 licence</a> soon for anyone who wants to adapt for print their own for non-commerical purposes. You&rsquo;ll require 8 8x3mm magnets and 2 M10x2.5mm steel washers (these will be avalable in <a href="https://shop.g7ufo.radio">my shop</a> soon). You will need to pause your print at the appropriate layers in order to fit these before restarting the print.</p>
<p>If you would prefer to purchase a high quality PLA print, prefitted with all the magnets then please check out <a href="https://shop.g7ufo.radio">shop.g7ufo.radio</a> or drop me an <a href="mailto:shop@g7ufo.radio">email</a>.</p>
<p><img src="https://blog.g7ufo.radio/posts/tp-iii-case/ufo-print.png" alt="A UFO logo on the top of the case" title="A UFO logo on the top of the case"></p>
<p>My CW is coming along, thanks to a two week streak. My secret trick is the sheer number of clubs by kids go to and as a result the time I spend in the car waiting for them!</p>
]]></content:encoded></item><item><title>RAKwireless Unity enclosure mounts</title><link>https://blog.g7ufo.radio/posts/untiy-enclosure-mounts/</link><pubDate>Sat, 13 Jul 2024 00:00:00 +0000</pubDate><guid>https://blog.g7ufo.radio/posts/untiy-enclosure-mounts/</guid><category>meshtastic</category><category>rak</category><category>enclosure</category><description>I&amp;rsquo;ve been delving into the interesting world of Meshtastic of late, on the 868MHz as this is where most of the activity is in the north east of England.&#10;Thankfully it looks like there is a now UK provider of RAKwireless components but prior to that I&amp;rsquo;ve been hitting up Aliexpress for the various boards.&#10;While perusing I noticed a Solar Enclosure with integrated antenna which I thought I&amp;rsquo;d grab and try out. I like the idea of mounting a node up high and not having to worry about a power supply.&#10;</description><content:encoded><![CDATA[<p>I&rsquo;ve been delving into the interesting world of <a href="https://meshtastic.org">Meshtastic</a> of late, on the 868MHz as this is where most of the activity is in the north east of England.</p>
<p><img src="https://blog.g7ufo.radio/posts/untiy-enclosure-mounts/meshtastic-868mhz-north-east-england.png" alt="Meshtastic nodes in north east England" title="Meshtastic nodes in north east England"></p>
<p>Thankfully it looks like there is a now <a href="https://mpowered247.com/collections/all">UK provider</a> of RAKwireless components but prior to that I&rsquo;ve been hitting up Aliexpress for the various boards.</p>
<p>While perusing I noticed a <a href="https://store.rakwireless.com/products/unify-enclosure-ip65-100x75x38-solar">Solar Enclosure with integrated antenna</a> which I thought I&rsquo;d grab and try out. I like the idea of mounting a node up high and not having to worry about a power supply.</p>
<p><img src="https://blog.g7ufo.radio/posts/untiy-enclosure-mounts/solar-node-outside.png" alt="The RAKwireless Unity Solar node sitting outside in the UK sun" title="The RAKwireless Unity Solar node sitting outside in the UK sun"></p>
<blockquote>
<p>To be honest, I don&rsquo;t think the solar panel on there provides much power from the meager rays we get here, even in the UK &ldquo;summer&rdquo; - I&rsquo;ll leave that for another post.</p>
</blockquote>
<p>In haste I hadn&rsquo;t realised that the <a href="https://store.rakwireless.com/collections/unify-enclosure-accessories">mounts</a> used to attach to the enclosure were available only as extras. They&rsquo;re not expensive but the lead-time on these from the US or China can be long. I ordered a <a href="https://store.rakwireless.com/products/unify-magnet-mounting-kit-type-g">&ldquo;Type G&rdquo; Magnet Mounting Kit</a> (magnets not included!).</p>
<p><img src="https://blog.g7ufo.radio/posts/untiy-enclosure-mounts/rak-type-g-magnetic-mount.png" alt="RAKwireless Type G Magnetic Mount" title="RAKwireless Type G Magnetic Mount"></p>
<p>What I found was that the 20mm magnets which fit in the provided slots were not strong enough. I increased my magnet size to 30mm which were much better but they kept detaching from the mount.</p>
<blockquote>
<p>There was only one thing for it - print my own!</p>
</blockquote>
<p>A look at <a href="https://www.thingiverse.com">Thingiverse</a> and <a href="https://printables.com">Printables</a> found that someone hadn&rsquo;t already done this work for me - boo!</p>
<p>I mocked up a few initial versions to get the size and spacing right but this is version 1 alongside the RAKwireless one.</p>
<p><img src="https://blog.g7ufo.radio/posts/untiy-enclosure-mounts/version-1-alongside-rak-type-g.png" alt="Version 1 of my mount alongside the RAKwireless mount" title="Version 1 of my mount alongside the RAKwireless mount"></p>
<p>After a day of being attached to my metal bookshelf the enclosure fell off, leaving the two magnets attached to the bookshelf. Time for version 2. I decided that the magnet should be on the other side of the mount so I didn&rsquo;t need to worry about adhesive or them detaching.</p>
<p><img src="https://blog.g7ufo.radio/posts/untiy-enclosure-mounts/version-2-back.png" alt="Version 2 of my mount from the back" title="Version 2 of my mount from the back"></p>
<p><img src="https://blog.g7ufo.radio/posts/untiy-enclosure-mounts/version-2-mounted.png" alt="Version 2 attached to the node" title="Version 2 attached to the node"></p>
<p><img src="https://blog.g7ufo.radio/posts/untiy-enclosure-mounts/version-2-bookshelf.png" alt="RAKwireless Unity Solar node mounted on my bookshelf" title="RAKwireless Unity Solar node mounted on my bookshelf"></p>
<blockquote>
<p>I&rsquo;ve not yet, made these available to download while I figure out how likely I am to get sued if I do. Watch this space.</p>
</blockquote>
]]></content:encoded></item><item><title>How I run Cloudlog</title><link>https://blog.g7ufo.radio/posts/how-i-run-cloudlog/</link><pubDate>Sun, 24 Mar 2024 00:00:00 +0000</pubDate><guid>https://blog.g7ufo.radio/posts/how-i-run-cloudlog/</guid><category>logging</category><category>cloudlog</category><category>docker</category><category>selfhosting</category><description>This is one of the admittedly not too uncommon occasions in amateur radio where what I do for a living intersects with one of my hobbies. I&amp;rsquo;ve been working in &amp;lsquo;development and cloud infrastructure&amp;rsquo; for a while now and tend to favour containers to run my workloads.&#10;I&amp;rsquo;ve tried a few logging systems and Cloudlog is the one which I&amp;rsquo;ve settled on for the last two or three years. It&amp;rsquo;s an excellent piece of software and is under constant development by Peter, 2M0SQL and many contributors.&#10;</description><content:encoded><![CDATA[<p>This is one of the admittedly not too uncommon occasions in amateur radio where what I do for a living intersects with one of my hobbies. I&rsquo;ve been working in &lsquo;development and cloud infrastructure&rsquo; for a while now and tend to favour containers to run my workloads.</p>
<p>I&rsquo;ve tried a few logging systems and Cloudlog is the one which I&rsquo;ve settled on for the last two or three years. It&rsquo;s an excellent piece of software and is under <a href="https://github.com/magicbug/Cloudlog">constant development</a> by Peter, 2M0SQL and many <a href="https://github.com/magicbug/Cloudlog/graphs/contributors">contributors</a>.</p>
<p>I&rsquo;m not going to go into detail here about the <a href="https://www.magicbug.co.uk/cloudlog/">many reasons</a> you should consider using it, there are plenty of other articles for that. This is a technical article which does require some basic knowledge about running a service in Linux. If this isn&rsquo;t for you I&rsquo;d recommend purchasing a <a href="https://www.magicbug.co.uk/cloudlog/#subscription">subscription</a> and let Peter run and maintain it for you.</p>
<h1 id="the-fun-part">The Fun Part</h1>
<p>OK, to the fun part! Lets start with some basic assumptions. You have:</p>
<ul>
<li>Some basic Linux knowledge</li>
<li>A server with Docker (and the compose addon) <a href="https://docs.docker.com/engine/install/">installed</a> on it</li>
<li>A connection to the internet</li>
<li>Access to DNS settings for the domain name you&rsquo;re planning to use (eg: <code>log.m9abc.radio</code>).</li>
</ul>
<p>I&rsquo;ve used this setup in one variation or another for a couple of years now without any issues, however:</p>
<blockquote>
<p>I&rsquo;m not to be held responsible for any data loss, servers catching fire or bad signal reports as a result of setting up or using this setup.</p>
</blockquote>
<p>If you&rsquo;re happy with all that, lets start!</p>
<h2 id="background">Background</h2>
<p>Until recently there was an official Docker image for Cloudlog but due to the amount of support requests this created, it was removed. I used to use this image as a basis for my own which also added a helper to make configuration easier (and the container truly disposable).</p>
<p>The source to produce the image can be found in <a href="https://github.com/g7ufo/cloudlog">my repo</a> and each time a new version of Cloudlog is released I build an image which will end up in <a href="https://github.com/g7ufo/cloudlog/pkgs/container/cloudlog">this repository</a>.</p>
<p>I&rsquo;ve re-used the base of what was the official Docker image (as I&rsquo;ve got not got much experience with PHP).</p>
<p>The original image ran Cloudlog as it would on a non containerised fashion. After starting up for the first time you would run through the in-app install steps.</p>
<p>I much prefer my containers to be configured at runtime (see <a href="https://12factor.net/config">12 Factor App - III</a>) so each time my Cloudlog container is started it writes to the configuration files based on environment variables provided. This will make sense when we configure it.</p>
<h2 id="dns">DNS</h2>
<p>I use <a href="https://www.cloudflare.com">Cloudflare</a> for my DNS but any can be used. Lets start by configuring DNS to point at our server.</p>
<blockquote>
<p>If you&rsquo;re self-hosting this you should either use a Dynamic DNS server or if you&rsquo;re lucky and have a static IP, hook that up. You&rsquo;ll also need to setup port forwarding as well. An alternative to self hosting is setting up a VPS somewhere like <a href="https://www.digitalocean.com">DigitalOcean</a>.</p>
</blockquote>
<p>For this example lets use the domain <code>log.m9abc.radio</code> as our host and <code>123.123.123.123</code> as our IPv4 address.</p>
<p><img src="https://blog.g7ufo.radio/posts/how-i-run-cloudlog/dns.png" alt="Configuration of DNS in Cloudflare" title="Configuration of DNS in Cloudflare"></p>
<p>Note for Cloudflare, initially the &lsquo;Proxy&rsquo; feature should be turned off as we&rsquo;ll be using LetsEncrypt to grab an SSL cert. It can be turned on afterwards if you like.</p>
<h2 id="docker-compose-configuration">Docker Compose Configuration</h2>
<p>Create a new <code>docker-compose.yml</code> file and lets add services section by section.</p>
<p>For the sake of this walkthrough we&rsquo;ll be installing v2.6.9 of Cloudlog.</p>
<h3 id="caddy">Caddy</h3>
<p>This will be our web server which will handle requests to the Cloudlog container.</p>
<p>The great feature of <a href="https://caddyserver.com">Caddy</a> is that it will also magically request and renew <a href="https://letsencrypt.org">Let&rsquo;s Encrypt</a> TLS (SSL) certificates for us.</p>
<pre tabindex="0"><code>services:
  caddy:
    container_name: caddy-gen
    image: wemakeservices/caddy-gen:latest
    restart: unless-stopped
    ports:
      - 443:443
      - 80:80
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - caddy:/data/caddy
</code></pre><p>The last line <code>caddy:/data/caddy</code> references a Docker <code>volume</code>, we&rsquo;ll define those in the final step.</p>
<h3 id="database">Database</h3>
<p>We&rsquo;re using <a href="https://mariadb.com">MariaDB</a> which is fully compatible with MySQL.</p>
<p>Please update the <code>MARIADB_DATABASE</code> and <code>MARIADB_ROOT_PASSWORD</code> values!</p>
<pre tabindex="0"><code>  mariadb:
    container_name: mariadb
    image: mariadb:10.11
    restart: unless-stopped
    environment:
      MARIADB_DATABASE: cloudlog
      MARIADB_ROOT_PASSWORD: supersecretrootpassword
    volumes:
      - mariadb:/var/lib/mysql
</code></pre><p>We do need to perform some initial setup on the database before we run any of the other services. This is only required before the first run.</p>
<ol>
<li>Start the mariadb container.</li>
<li>Create our user.</li>
<li>Set permissions for our user against our <code>cloudlog</code> database.</li>
<li>Grab the database schema for the version of Cloudlog we&rsquo;re running. This will match the version we&rsquo;re installing (in this case, v2.6.9).</li>
<li>Create the schema in the <code>cloudlog</code> database.</li>
<li>Remove the schema file we downloaded.</li>
<li>Stop the mariadb container.</li>
</ol>
<p>From your console:</p>
<pre tabindex="0"><code>docker compose up -d mariadb

echo &#34;CREATE USER &#39;m9abc&#39;@&#39;%&#39; IDENTIFIED BY &#39;supersecretlogpassword&#39;&#34; |  docker compose exec -T mariadb mariadb -uroot -psupersecretrootpassword

echo &#34;GRANT ALL PRIVILEGES ON cloudlog.* TO &#39;m9abc&#39;@&#39;%&#39;&#34; | docker compose exec -T mariadb mariadb -uroot -psupersecretrootpassword

curl -O install.sql https://raw.githubusercontent.com/magicbug/Cloudlog/2.6.7/install/assets/install.sql

cat install.sql | docker compose exec -T mariadb mariadb -uroot -psupersecretrootpassword

rm install.sql

docker compose down
</code></pre><h3 id="cloudlog">Cloudlog</h3>
<pre tabindex="0"><code>  cloudlog:
    container_name: cloudlog
    image: ghcr.io/g7ufo/cloudlog:2.6.7
    restart: unless-stopped
    environment:
      LOCATOR: IO94XX
      BASE_URL: https://log.m9abc.radio/
      CALLBOOK: qrz
      CALLBOOK_USERNAME: m9abc
      CALLBOOK_PASSWORD: supersecretcallbookpassword
      DATABASE_HOSTNAME: mariadb
      DATABASE_NAME: cloudlog
      DATABASE_USERNAME: m9abc
      DATABASE_PASSWORD: supersecretlogpassword
      DATABASE_IS_MARIADB: yes
      DEVELOPER_MODE: no
    volumes:
      - cloudlog-eqsl:/var/www/html/images/eqsl_card_images
      - cloudlog-backup:/var/www/html/backup
      - cloudlog-uploads:/var/www/html/uploads
    labels:
      virtual.host: log.m9abc.radio
      virtual.port: 80
      virtual.tls: op@m9abc.radio
</code></pre><p>As you can see we&rsquo;re into configuration now.</p>
<h4 id="environment"><code>environment</code></h4>
<p>This section provides values for for Cloudlog configuration and is picked up by my helper script.</p>
<p>Most of these are self explanatory.</p>
<ul>
<li><code>DEVELOPER_MODE</code>: As it suggests it disables developer mode. Set this to &ldquo;yes&rdquo; if you&rsquo;d like to enable. Not specifying this in the file will default to &ldquo;no&rdquo;.</li>
<li><code>CALLBOOK</code>: Can be <code>qrz</code> or <code>hamqth</code> only. The <code>CALLBOOK_USERNAME</code> and <code>CALLBOOK_PASSWORD</code> should be set appropriately.</li>
<li><code>DATABASE_HOSTNAME</code>: Because we&rsquo;re running MariaDB in this file we can refer to it as its service name, which is <code>mariadb</code>.</li>
<li><code>DATABASE_NAME</code>: This should match the value in the <code>mariadb</code> service <code>MARIADB_DATABASE</code>.</li>
<li><code>DATABASE_USERNAME</code> and <code>DATABASE_PASSWORD</code>: set as we did above.</li>
<li><code>DATABASE_IS_MARIADB</code>: We&rsquo;re using MariaDB so the helper script will make a minor adjustment to be compatible.</li>
</ul>
<h4 id="labels"><code>labels</code></h4>
<p>This section configures Caddy to serve content from Cloudlog and also to go and grab a Let&rsquo;s Encrypt certificate for your log domain.</p>
<ul>
<li><code>virtual.host</code>: This should be the domain of your log which we set up in the DNS section above. Do not include <code>https://</code>.</li>
<li><code>virtual.tls</code>: This will need to be a valid email address.</li>
</ul>
<h3 id="cron-jobs">Cron Jobs</h3>
<pre tabindex="0"><code>  cron:
    container_name: ofelia-cron
    image: mcuadros/ofelia:latest
    depends_on:
      - cloudlog
    command: daemon --docker
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    labels:
      ofelia.job-local.dummy.schedule: &#34;@weekly&#34;
      ofelia.job-local.dummy.command: date
</code></pre><p>Alongside this we also need to add the following to the <code>labels</code> section of the <code>cloudlog</code> service:</p>
<pre tabindex="0"><code>      ofelia.enabled: true
      ofelia.job-exec.dummy-cl.schedule: &#34;@every 60m&#34;
      ofelia.job-exec.dummy-cl.command: touch /tmp/cron-dummy
      ofelia.job-exec.upload-qsos-clublog.schedule: 0 */6 * * *
      ofelia.job-exec.upload-qsos-clublog.command: curl --silent http://localhost/index.php/clublog/upload
      ofelia.job-exec.upload-qsos-lotw.schedule: 0 */1 * * *
      ofelia.job-exec.upload-qsos-lotw.command: curl --silent http://localhost/index.php/lotw/lotw_upload
      ofelia.job-exec.upload-qsos-qo100dx.schedule: 0 19 * * *
      ofelia.job-exec.upload-qsos-qo100dx.command: curl --silent http://localhost/index.php/webadif/export
      ofelia.job-exec.upload-qsos-qrz.schedule: 6 */6 * * *
      ofelia.job-exec.upload-qsos-qrz.command: curl --silent http://localhost/index.php/qrz/upload
      ofelia.job-exec.sync-qsos-eqsl.schedule: 9 */6 * * *
      ofelia.job-exec.sync-qsos-eqsl.command: curl --silent http://localhost/index.php/eqsl/sync
      ofelia.job-exec.update-lotw-users-db.schedule: &#34;@weekly&#34;
      ofelia.job-exec.update-lotw-users-db.command: curl --silent http://localhost/index.php/lotw/load_users
      ofelia.job-exec.update-lotw-users-activity.schedule: 10 1 * * 1
      ofelia.job-exec.update-lotw-users-activity.command: curl --silent http://localhost/index.php/update/lotw_users
      ofelia.job-exec.update-clublog-scp-database.schedule: &#34;@weekly&#34;
      ofelia.job-exec.update-clublog-scp-database.command: curl --silent http://localhost/index.php/update/update_clublog_scp
      ofelia.job-exec.update-dok.schedule: &#34;@monthly&#34;
      ofelia.job-exec.update-dok.command: curl --silent http://localhost/index.php/update/update_dok
      ofelia.job-exec.update-sota.schedule: &#34;@monthly&#34;
      ofelia.job-exec.update-sota.command: curl --silent http://localhost/index.php/update/update_sota
      ofelia.job-exec.update-wwff.schedule: &#34;@monthly&#34;
      ofelia.job-exec.update-wwff.command: curl --silent http://localhost/index.php/update/update_wwff
      ofelia.job-exec.update-pota.schedule: &#34;@monthly&#34;
      ofelia.job-exec.update-pota.command: curl --silent http://localhost/index.php/update/update_pota
</code></pre><h3 id="volumes">Volumes</h3>
<pre tabindex="0"><code>volumes:
  caddy:
  cloudlog-eqsl:
  cloudlog-backup:
  cloudlog-uploads:
  mariadb:
</code></pre><p>Remember I mentioned we&rsquo;d set up volumes earlier? Well, here they are!</p>
<h3 id="the-finished-file">The Finished File</h3>
<p>The finished file should look like the one I&rsquo;ve prepared <a href="https://github.com/g7ufo/cloudlog/blob/main/example/docker-compose.yml">here</a>.</p>
<h3 id="fire-it-up">Fire it up!</h3>
<pre tabindex="0"><code>docker compose up -d
</code></pre><p>This will start all the services and you should then be able to access using your domain.</p>
<p>The default user is <code>m0abc</code> and password is <code>demo</code>.</p>
<h3 id="updating">Updating</h3>
<p>Updating is as simple as updating the image version (<code>ghcr.io/g7ufo/cloudlog:2.6.7</code> in the example above) to the new version and restarting with:</p>
<pre tabindex="0"><code>docker compose down
docker compose up -d
</code></pre><h4 id="caveat">Caveat</h4>
<p>If the configuration file has changed upstream it may fail to configure properly. This hasn&rsquo;t happened yet and I will do my best to keep on top of this. If you find this is the case, please raise an [issue[(https://github.com/g7ufo/cloudlog/issues)] in the repo.</p>
<h3 id="disaster-recovery">Disaster Recovery</h3>
<p>I&rsquo;m currently using a script to perform a database dump and create an archive of the three cloudlog volumes. I&rsquo;m working on a better solution which I&rsquo;ll share in <a href="https://github.com/g7ufo/cloudlog/">the repo</a> and on this blog.</p>
]]></content:encoded></item><item><title>QO-100 on FlexRadio</title><link>https://blog.g7ufo.radio/posts/flexradio-qo100/</link><pubDate>Tue, 15 Aug 2023 22:14:57 +0000</pubDate><guid>https://blog.g7ufo.radio/posts/flexradio-qo100/</guid><category>qo100</category><category>dxpatrol</category><category>groundstation</category><category>flexradio</category><description>I really like my FlexRadio! I had a 6400 for a year before an opportunity arose in 2022 to purchase a used 6700. I&amp;rsquo;m a MacOS user so I use the excellent SmartSDR from Marcus Roskosch with an Icom RC-28 controller and a Heil PR781 microphone. This setup has served me well on HF, even with my restricted antenna setup on those bands.&#10;Since getting on to QO-100 I&amp;rsquo;ve used an Icom IC-9700 with my DX Patrol Full Duplex Groundstation (1.0) before building an SDR setup (Pluto+ and SG Labs amplifier).&#10;</description><content:encoded><![CDATA[<p>I really like my FlexRadio! I had a 6400 for a year before an opportunity arose in 2022 to purchase a used 6700. I&rsquo;m a MacOS user so I use the excellent <a href="https://roskosch.de/smartsdr-for-mac/">SmartSDR from Marcus Roskosch</a> with an Icom RC-28 controller and a Heil PR781 microphone. This setup has served me well on HF, even with my restricted antenna setup on those bands.</p>
<p>Since getting on to QO-100 I&rsquo;ve used an Icom IC-9700 with my <a href="https://dxpatrol.pt/produto/dxpatrol-full-duplex-qo-100-groundstation/">DX Patrol Full Duplex Groundstation (1.0)</a> before building an SDR setup (Pluto+ and SG Labs amplifier).</p>
<p>With my &lsquo;SDR Box&rsquo; I used <a href="https://www.sdr-radio.com">SDR Console</a>, another fantastic piece of software and was the only thing which has managed to convince me to run Windows (in a VM on my Mac) in decades.</p>
<p>I missed using my FlexRadio though so I decided to figure out how I could use it with my Groundstation.</p>
<p>The groundstation will accept inputs on 10m, 6m, 2m, 70cm and 23cm with a minimum of 500mW (optimal is 1W) and a maximum of 5W. I could use one of the two ANT ports on the FlexRadio to drive this but I didn&rsquo;t want to risk sending 100W into the Groundstation and frying it. This left me with the XVTR ports on the FlexRadio which output a typical 0dBm (15dBm max on frequencies below 72MHz and 8dBm above 135MHz).</p>
<h1 id="i-need-a-really-low-power-to-low-power-amp">I need a really low power to low power amp</h1>
<p><img src="https://blog.g7ufo.radio/posts/flexradio-qo100/mastodon.png" alt="Mastodon post asking if anyone knows of a low power amplifier for the FlexRadio transverter output" title="Mastodon post asking if anyone knows of a low power amplifier for the FlexRadio transverter output"></p>
<p>First up, I dropped a <a href="https://mastodon.radio/@g7ufo/109772706579756773">&rsquo;toot&rsquo; on Mastodon</a> and then on the <a href="https://community.flexradio.com/discussion/comment/20603668">FlexRadio Community Forum</a>. Thanks to everyone who replied.</p>
<p><img src="https://blog.g7ufo.radio/posts/flexradio-qo100/flexradio-community.png" alt="Post on FlexRadio community asking if anyone knows of a low power amplifier for the FlexRadio transverter output" title="Post on FlexRadio community asking if anyone knows of a low power amplifier for the FlexRadio transverter output"></p>
<p>Charlie, <a href="https://www.qrz.com/db/KB8CR">KB8CR</a> suggested the <a href="https://www.downeastmicrowave.com/product-p/1wtr.htm">Downeast Microwave 1WTR</a>. I ordered one of these but unfortunately DEM were not able to fulfil the order at that time.</p>
<p>Fortunately Boyan, <a href="https://www.qrz.com/db/LZ2BE">LZ2BE</a> posted that they were using the <a href="https://www.60dbm.com/product/10w-broadband-hf-1-55mhz-power-amplifier/">10W broadband HF/6M RF power amplifier from 60dbm.com</a> from their FlexRadio into a DX Patrol. Boyan explained they were under-driving the amp with 10dBm which supplies around 1W which is perfect. I dropped Paul, UU0JR at <a href="https://www.60dbm.com">60dbm.com</a> an email and they were very helpful. An order was placed for the <a href="https://www.60dbm.com/product/10w-broadband-hf-6m-1-55mhz-rf-power-amplifier-cased/">cased version</a> and it arrived a few weeks later from Ukraine - while I was on holiday!</p>
<p>Interestingly Hans Christian, <a href="https://www.qrz.com/db/LA9AKA">LA9AKA</a> mentioned that when ordering their Groundstation from DX Patrol they mentioned to António they were going to use it with a FlexRadio and &ldquo;he just removed an attenuator in the signal path&rdquo;. I didn&rsquo;t hear back about enquiring if I could make this mod myself but it would have been very handy.</p>
<h1 id="cables-cables-cables">Cables, cables, cables</h1>
<p><img src="https://blog.g7ufo.radio/posts/flexradio-qo100/60dbm-amp.png" alt="The back of the 60dbm 10W amplifier showing labels for the various ports" title="The back of the 60dbm 10W amplifier showing labels for the various ports"></p>
<p>The 60dbm amplifier requires the usual 13.8V power, input and output cables. It also needs a TX trigger which is easily supplied from the back of the FlexRadio. The lead is a simple RCA to TRS lead connecting ground to the outer connector and the other cable to the middle pin.</p>
<p>The input to the amplifier comes from the XVTR port on the FlexRadio via a BNC to SMA RG316 short patch cable. The output goes into the Groundstation IF-TX/RX port via a SMA to SMA RG316 short patch cable. On my setup I&rsquo;ve assigned TX2 to provide the TX trigger which is connected appropriately via a RCA to TRS cable.</p>
<p>The RX port (remember, full duplex) from the Groundstation is connected to the RX_A port on the FlexRadio using another BNC to SMA RG316 short patch cable.</p>
<p><img src="https://blog.g7ufo.radio/posts/flexradio-qo100/connections.png" alt="Annotated image showing connections between FlexRadio, 60dbm amplifier and Groundstation" title="Annotated image showing connections between FlexRadio, 60dbm amplifier and Groundstation"></p>
<h1 id="groundstation">Groundstation</h1>
<p>The groundstation is set to TX on 6m (50.5MHz) and RX on 2m (144.5MHz).</p>
<p><img src="https://blog.g7ufo.radio/posts/flexradio-qo100/groundstation.png" alt="Image showing frequency configuration of the DX Patrol Groundstation" title="Image showing frequency configuration of the DX Patrol Groundstation"></p>
<h1 id="configuring-smartsdr">Configuring SmartSDR</h1>
<h2 id="transverters">Transverters</h2>
<p>We need to create two transverters. One for TX and one for RX. The TX transverter will ensure we send 6m to the Groundstation and the RX one is a &lsquo;fake&rsquo; but, like the TX transverter config, will allow us to display the real frequencies we&rsquo;re working at.</p>
<p><img src="https://blog.g7ufo.radio/posts/flexradio-qo100/smartsdr-transverter.png" alt="Transverter setup on the FlexRadio" title="Transverter setup on the FlexRadio"></p>
<table>
	<thead>
			<tr>
					<th>Name</th>
					<th>RF Freq</th>
					<th>IF Freq</th>
					<th>Max Power</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>QOTX</td>
					<td>2400.000000</td>
					<td>50.500000</td>
					<td>-10</td>
			</tr>
			<tr>
					<td>QORX</td>
					<td>10489.500000</td>
					<td>144.500000</td>
					<td>0</td>
			</tr>
	</tbody>
</table>
<blockquote>
<p><code>LO Error</code> is something which is unique to every setup. See the &lsquo;Offset&rsquo; section below for how I calculated this.</p>
</blockquote>
<h2 id="tx-band-settings">TX Band Settings</h2>
<p>The image below is an edited version to show only the relevant bands. The two transverters we added above will appear here.</p>
<p><code>RCA TX2</code> is the PTT trigger which is grounded when we transmit. I&rsquo;ve also set power to 0 and checked <code>PTT inhibit</code> on the QORX profile to help ensure we don&rsquo;t accidentally transmit into the RX port of the Groundstation.</p>
<p><img src="https://blog.g7ufo.radio/posts/flexradio-qo100/smartsdr-tx-band-settings.png" alt="TX Band Settings on the FlexRadio" title="TX Band Settings on the FlexRadio"></p>
<h2 id="band-plan">Band Plan</h2>
<p>SmartSDR offers to overlay band plans on the panadapter. This is available for QO-100 TX (2.4GHz) but not RX (10.4GHz). Lets enable what we have by selecting <code>Sat QO-100</code> and checking <code>Visible</code>.</p>
<p>I&rsquo;ve emailed the developer of SmartSDR to add this for RX</p>
<p><img src="https://blog.g7ufo.radio/posts/flexradio-qo100/smartsdr-band-plan.png" alt="Band plans on the FlexRadio" title="Band plans on the FlexRadio"></p>
<p>To add a bit more context to my panadapter, I&rsquo;ve added a bunch of memories which better denote parts of the transponder (uplink and downlink). If you&rsquo;d like to merge these with your existing memories then please grab the <a href="https://blog.g7ufo.radio/posts/flexradio-qo100/qo-100-memories.csv">CSV file here</a>.</p>
<h2 id="profiles">Profiles</h2>
<p>Before we setup panadapters its worth creating a Global Profile for the QO-100 setup. I&rsquo;ve named mine
<code>QO-100 Groundstation Mac</code>. Once we&rsquo;ve set up the panadapters below we&rsquo;ll save this so we can easily get to the same setup again.</p>
<p><img src="https://blog.g7ufo.radio/posts/flexradio-qo100/smartsdr-global-profile.png" alt="Band plans on the FlexRadio" title="Band plans on the FlexRadio"></p>
<h2 id="panadapters">Panadapters</h2>
<p><img src="https://blog.g7ufo.radio/posts/flexradio-qo100/smartsdr-panadapter.png" alt="Band plans on the FlexRadio" title="Band plans on the FlexRadio"></p>
<p>Now we&rsquo;re using the <code>QO-100 Groundstation Mac</code> profile, create two panadapters and configure them as below.</p>
<table>
	<thead>
			<tr>
					<th>Panadapter</th>
					<th>Band</th>
					<th>TX Antenna</th>
					<th>RX Antenna</th>
					<th>TX</th>
					<th>Muted?</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>1</td>
					<td>QOTX</td>
					<td>XVTR</td>
					<td>XVTR</td>
					<td>Enabled</td>
					<td>Yes</td>
			</tr>
			<tr>
					<td>2</td>
					<td>QORX</td>
					<td>XVTR</td>
					<td>RX_A</td>
					<td>Disabled</td>
					<td>No</td>
			</tr>
	</tbody>
</table>
<p>Don&rsquo;t forget to ensure you have <code>FDX</code> (Full Duplex) enabled.</p>
<p><img src="https://blog.g7ufo.radio/posts/flexradio-qo100/smartsdr-fdx.png" alt="Enabling Full Duplex in SmartSDR" title="Enabling Full Duplex in SmartSDR"></p>
<p>Now, go back to Global Profiles and save these updates.</p>
<h2 id="offset">Offset</h2>
<p>The Groundstation is GPSDO locked so TX should be at least consistent. If you find its slightly off-frequency then you can update the <code>LO Error</code> in the Transverters section.</p>
<p><img src="https://blog.g7ufo.radio/posts/flexradio-qo100/smartsdr-transverter.png" alt="Transverter setup on the FlexRadio" title="Transverter setup on the FlexRadio"></p>
<h3 id="tx">TX</h3>
<ol>
<li>Navigate to the <a href="https://eshail.batc.org.uk/nb/">Goonhilly QO-100 WebSDR</a> and pick a clear frequency.</li>
<li>Tune the TX of your FlexRadio to that frequency and transmit your callsign and that you are testing.</li>
<li>Mute the FlexRadio so you can only hear the WebSDR.</li>
<li>Note how far off frequency you are and make adjustments in the Transverter panel for QOTX until you&rsquo;re on frequency. <strong>Always check the frequency on the panadapter as updating in the Transverter panel updates this</strong>.</li>
</ol>
<h3 id="rx">RX</h3>
<ol>
<li>Ensure your RX downlink matches your TX uplink eg: 10489.950GHz and 2400.450GHz.</li>
<li>Transmit your callsign and that you are testing Ensure you can hear yourself on the downlink.</li>
<li>Note how far off frequency you are and make adjustments in the Transverter panel for QORX until you&rsquo;re on frequency. <strong>Always check the frequency on the panadapter as updating in the Transverter panel updates this</strong>.</li>
</ol>
<p>If you&rsquo;re using a DX Patrol LNB (or any other LNB which accepts the 25MHz LO from the Groundstation) then this shouldn&rsquo;t need to be adjusted again.</p>
<p>I&rsquo;m currently using a Bullseye LNB which is pretty stable but on occasion it needs a readjustment.</p>
<h2 id="slice-lock">Slice Lock</h2>
<p>In SmartSDR you can set two slices to track each other. This is useful when you&rsquo;re working cross-band as we are here. The RX will track your TX frequency.</p>
<p>The downside of this is that you&rsquo;ll need to manually disable this when you&rsquo;re not using QO-100 as its a global setting and not configurable per-profile. I don&rsquo;t use this, instead favouring a Node Red flow do do this.</p>
<p>The value for <code>Offset (Hz)</code> is <code>8089500000</code> (<code>10489500000 - 2400000000</code>).</p>
<p><img src="https://blog.g7ufo.radio/posts/flexradio-qo100/smartsdr-slice.png" alt="Slice configuration on the FlexRadio" title="Slice configuration on the FlexRadio"></p>
<h2 id="node-red">Node Red</h2>
<p>As mentioned above I&rsquo;ve put together a Node Red flow to manage the following when I&rsquo;m using the FlexRadio on QO-100.</p>
<ul>
<li>Sync slice A and B (TX and RX).</li>
<li>When tranmitting, reduce the RX volume slighly. I can&rsquo;t concentrate hearing myself with a few milliseconds difference at full volume!</li>
<li>Some config confirmation like:
<ul>
<li>Mute slice A (TX)</li>
<li>Ensure slice B (RX) is not muted</li>
<li>More stuff to come (eg: ensuring TX is enabled on slice A and disabled on slice B)</li>
</ul>
</li>
<li>Send a &lsquo;Radio&rsquo; API call to my Cloudlog instance with current TX frequency, RX frequency, mode, SAT mode details.</li>
</ul>
<p>I&rsquo;ll put a post together detailing that soon!</p>
]]></content:encoded></item><item><title>DX Patrol Full Duplex Groundstation 1.5</title><link>https://blog.g7ufo.radio/posts/dxpatrol-groundstation-1-5/</link><pubDate>Sun, 13 Aug 2023 10:03:12 +0000</pubDate><guid>https://blog.g7ufo.radio/posts/dxpatrol-groundstation-1-5/</guid><category>qo100</category><category>dxpatrol</category><category>groundstation</category><description>I purchased my DX Patrol Full Duplex Groundstation (1.0) back in October 2022 when I was first getting set up on QO-100. I didn&amp;rsquo;t have much of an idea of how to do that so I went for a &amp;ldquo;all in one&amp;rdquo; setup. I used this with am IC-9700 for a while until I had the itch to build an SDR setup which I&amp;rsquo;ve used to date.&#10;One of the things I&amp;rsquo;d noticed with my 1.0 Groundstation is that it tended to get a bit warm which triggered a warning on its screen (I&amp;rsquo;m no stranger to a long, rambling over). I&amp;rsquo;d dug out an old USB powered fan to &amp;lsquo;point&amp;rsquo; at it which seemed to help with that.&#10;</description><content:encoded><![CDATA[<p>I purchased my <a href="https://dxpatrol.pt/produto/dxpatrol-full-duplex-qo-100-groundstation/">DX Patrol Full Duplex Groundstation (1.0)</a> back in October 2022 when I was first getting set up on QO-100. I didn&rsquo;t have much of an idea of how to do that so I went for a &ldquo;all in one&rdquo; setup. I used this with am IC-9700 for a while until I had the itch to build an SDR setup which I&rsquo;ve used to date.</p>
<p>One of the things I&rsquo;d noticed with my 1.0 Groundstation is that it tended to get a bit warm which triggered a warning on its screen (I&rsquo;m no stranger to a long, rambling over). I&rsquo;d dug out an old USB powered fan to &lsquo;point&rsquo; at it which seemed to help with that.</p>
<p><img src="https://blog.g7ufo.radio/posts/dxpatrol-groundstation-1-5/gs-fan.png" alt="My groundstation with a USB fan pointed at it to keep it cool" title="My groundstation with a USB fan pointed at it to keep it cool"></p>
<p>I&rsquo;m a big fan of my FlexRadio and really wanted to use that to drive a setup for QO-100, so out came the Groundstation again (I&rsquo;ve detailed how I set up the FlexRadio for QO-100 in <a href="https://blog.g7ufo.radio/posts/flexradio-qo100/">this post</a>). On checking for firmware updates on the page I notice that the actual Groundstation had had a hardware bump to 2.0.</p>
<h1 id="groundstation-20">Groundstation 2.0</h1>
<p>The Groundstation 2.0 has a few additions, grills on the front and a fan at the rear as well as adjustments for RX gain and Vox Delay.</p>
<p><img src="https://blog.g7ufo.radio/posts/dxpatrol-groundstation-1-5/gs-2-0-front.jpg" alt="Groundstation 2.0 from the front - taken from DX Patrol product page" title="Groundstation 2.0 from the front - taken from DX Patrol product page">
<img src="https://blog.g7ufo.radio/posts/dxpatrol-groundstation-1-5/gs-2-0-rear.jpg" alt="Groundstation 2.0 from the rear - taken from DX Patrol product page" title="Groundstation 2.0 from the rear - taken from DX Patrol product page"></p>
<p>I dropped DX Patrol an email to see if it would be possible to retrofit my Groundstation. António replied and said he&rsquo;d be able to send out the replacement plates for the front and back, I promptly took them up on that offer. After a few weeks they arrived.</p>
<p><img src="https://blog.g7ufo.radio/posts/dxpatrol-groundstation-1-5/gs-2-0-plates-and-fan.png" alt="Groundstation 2.0 plates and fan from António at DX Patrol" title="Groundstation 2.0 plates and fan from António at DX Patrol"></p>
<p>Taking the Groundstation apart was scary - mainly because I wanted to make sure it went back together again!</p>
<h1 id="groundstation-15">Groundstation 1.5</h1>
<h2 id="front">Front</h2>
<p>The front was probably the easiest part (and it seems I didn&rsquo;t take photos) but there isn&rsquo;t anything really of note here.</p>
<ul>
<li>The four outer screws come out which releases the panel.</li>
<li>Menu POT has a small grub screw on it with another nut underneath.</li>
<li>LCD removal is logical, albeit with a few extra screws and nuts.</li>
<li>Most difficult was the power switch as it was glued firmly in place. Removal of the glue was performed with pliers, screwdrivers a little bit of blood and swearing!</li>
</ul>
<p>Putting the new plate on fitted without any issues and I tested it turned on as expected.</p>
<h2 id="rear">Rear</h2>
<p>This was a bit more fiddly, because there is a wire to cut and some soldering to do.</p>
<ul>
<li>The four outer screws come out, all of the nuts and washers are removed from the top row, which releases the panel without pulling the PCB out.</li>
</ul>
<p><img src="https://blog.g7ufo.radio/posts/dxpatrol-groundstation-1-5/gs-1-5-rear-1.png" alt="Removing the rear panel from the Groundstation" title="Removing the rear panel from the Groundstation"></p>
<ul>
<li>The female N-Type is removed using a pair of spanners.</li>
<li>The TX Send female phono is removed using a spanner from the rear, the green wire will need to be cut and the white wire will need to be removed from the plug in order to remove it. See next picture which shows them put back together after being fitted to the new panel.</li>
</ul>
<p><img src="https://blog.g7ufo.radio/posts/dxpatrol-groundstation-1-5/gs-1-5-rear-2.png" alt="Reattaching the TX Send cables to the Groundstation" title="Reattaching the TX Send cables to the Groundstation"></p>
<ul>
<li>The fan will need to be fitted to the board. Notice the positive wire goes to a switched pin - so that it doesn&rsquo;t run even when the Groundstation is powered off.</li>
</ul>
<p><img src="https://blog.g7ufo.radio/posts/dxpatrol-groundstation-1-5/gs-1-5-rear-3.png" alt="Attaching the fan to switched power on the Groundstation" title="Attaching the fan to switched power on the Groundstation"></p>
<ul>
<li><strong>Unexpected hardware modification ahead!</strong></li>
<li>When I came to refit the rear panel I found that the soldering from the GPS antenna PCB mounted SMA was stopping the panel from fitting.</li>
</ul>
<p><img src="https://blog.g7ufo.radio/posts/dxpatrol-groundstation-1-5/gs-1-5-fan-mod-1.png" alt="The fan sits too low when retrofitting to the board on the Groundstation 1.0" title="The fan sits too low when retrofitting to the board on the Groundstation 1.0">
<img src="https://blog.g7ufo.radio/posts/dxpatrol-groundstation-1-5/gs-1-5-fan-mod-2.png" alt="Closer picture showing the fan sitting too low when retrofitting to the board on the Groundstation 1.0" title="Closer picture showing the fan sitting too low when retrofitting to the board on the Groundstation 1.0"></p>
<ul>
<li>I was able to get this to fit (safely) by removing a bit of the fan casing using a dremel (OK, fine - I was too lazy to go and get the dremel from the garage so I used my pliers!).</li>
</ul>
<p><img src="https://blog.g7ufo.radio/posts/dxpatrol-groundstation-1-5/gs-1-5-fan-mod-3.png" alt="Expertly and carefully modified fan to fit the Groundstation" title="Expertly and carefully modified fan to fit the Groundstation"></p>
<ul>
<li>Refit all of the nuts and screws.</li>
<li>One minor issue is that the rear panel seems to be ever so slightly larger then the existing panel. I expect some minor sanding could have helped with this but I&rsquo;m happy enough with it as is.</li>
</ul>
<p><img src="https://blog.g7ufo.radio/posts/dxpatrol-groundstation-1-5/gs-1-5-rear-4.png" alt="Attaching the fan to switched power on the Groundstation" title="Attaching the fan to switched power on the Groundstation"></p>
]]></content:encoded></item><item><title>Quick /P operation in North Yorkshire</title><link>https://blog.g7ufo.radio/posts/io94ml-fail/</link><pubDate>Tue, 30 May 2023 00:00:00 +0000</pubDate><guid>https://blog.g7ufo.radio/posts/io94ml-fail/</guid><category>fail</category><category>hf</category><category>portable</category><description>We have a static caravan in North Yorkshire, which is about a hour from the QTH. Less than 10 minutes car drive from there I can be sitting on top of the North Yorkshire Moors National Park which is POTA G-0003.&#10;It&amp;rsquo;s not often I get the opportunity to disappear for a hour or so and set up a /P station but today was one of rare those days Accompanied by my eldest daughter who was keen to be on logbook duty we drove to IO94ML and chose a spot next to a solid road sign (262 metres above sea level).&#10;</description><content:encoded><![CDATA[<p>We have a static caravan in North Yorkshire, which is about a hour from the QTH. Less than 10 minutes car drive from there I can be sitting on top of the <a href="https://www.northyorkmoors.org.uk/">North Yorkshire Moors National Park</a> which is <a href="https://pota.app/#/park/G-0003">POTA G-0003</a>.</p>
<p><img src="https://blog.g7ufo.radio/posts/io94ml-fail/map.png" alt="A map showing the location of the operation" title="A map showing the location of the operation"></p>
<p>It&rsquo;s not often I get the opportunity to disappear for a hour or so and set up a /P station but today was one of rare those days Accompanied by my eldest daughter who was keen to be on logbook duty we drove to IO94ML and chose a spot next to a solid road sign (262 metres above sea level).</p>
<p>The equipment I&rsquo;d packed in the hope of getting on the air was:</p>
<ul>
<li><a href="https://icomuk.co.uk/IC-705/Mobile_Amateur_Radio_Ham">Icom IC-705</a> (not fully charged 😬 - I&rsquo;d planned to use the car battery)</li>
<li><a href="https://www.diy599.com/">DIY599 PA500</a> (amplifier and tuner)</li>
<li><a href="https://www.sotabeams.co.uk/bandspringerMidi40m30m20m/">SotaBeams Bandspringer Midi</a> (10m-60m)</li>
<li><a href="https://www.sotabeams.co.uk/tactical-mini-compact-ultra-portable-6-m-19-6-ft-mast/">SotaBeams Tactical Mini</a> (mast)</li>
<li>Various cables and a power splitter</li>
</ul>
<p>This was my first proper usage of everything apart from my IC-705. It was also my first operation in my &rsquo;new&rsquo; car - an VW ID4 (EV) - what could go wrong?</p>
<p>The mast was strapped to the road sign with the end fed antenna without any issue. All the various cables I&rsquo;d packed were just what I needed.</p>
<p><img src="https://blog.g7ufo.radio/posts/io94ml-fail/banddpringer-midi.png" alt="An end fed antenna mounted on a portable mast strapped to a road sign" title="An end fed antenna mounted on a portable mast strapped to a road sign"></p>
<p>I connected the PA500 and after a quick on-the-fly refresher of how to turn it on I tuned to 10m and supplied some drive, it found a match quickly and then all the lights on the unit went off. A quick check showed that the fuse in the &lsquo;cigarette lighter&rsquo; power cable had blown. The PA500 must have drawn more than I&rsquo;d anticipated.</p>
<p>All the spare fuses I had are the newer style &lsquo;spade&rsquo; fuses so I was stuck with my partially charged IC-705 battery and a non-resonant antenna. Fortunately 10m was showing an SWR of 1:1.3 so with my 5w I gave a few calls to stations without too much luck.</p>
<p>I managed a single contact with OE6GBG (Gerald) who was a great 59 signal with me. My 5w did well to receive a 55 after covering the 1444km (897 miles) between us.</p>
<p>All in all not that successful but it was great to get at least one contact.</p>
<p>As always, there are plenty of lessons to be learnt. First off, I&rsquo;ll check the draw of the PA500 <em>[update: At TX its 8A]</em> and see if that suitable to be hooked up to my car. Having that working would have given me both a bit more power (up to 40w at 12v) as well as access to all the bands below 28MHz (to 7MHz), which of course seemed much busier than 10m.</p>
<p>The mast performed well, it wasn&rsquo;t windy. I&rsquo;ve ordered a <a href="https://www.sotabeams.co.uk/drive-on-car-stand-for-masts-sleeve/">Drive-on car stand</a> which should give me a bit more freedom for setup.</p>
<p>Hopefully next time I&rsquo;ll be able to devote some more time and things will be a bit more finely tuned. It might be worth reactivating my stored LifePo4 battery as well.</p>
<p><em>I&rsquo;d love to do a /P operation for the QO-100 satellite from North Yorkshire in the future as well.</em></p>
]]></content:encoded></item></channel></rss>