<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Self-hosted Archives - CloudRF</title>
	<atom:link href="https://cloudrf.com/category/self-hosted/feed/" rel="self" type="application/rss+xml" />
	<link>https://cloudrf.com/category/self-hosted/</link>
	<description>Radio planning today</description>
	<lastBuildDate>Tue, 31 Mar 2026 16:37:16 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://cloudrf.com/wp-content/uploads/2021/05/CloudRF_logo_70px.png</url>
	<title>Self-hosted Archives - CloudRF</title>
	<link>https://cloudrf.com/category/self-hosted/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>SOOTHSAYER 1.11 released</title>
		<link>https://cloudrf.com/soothsayer-1-11-released/</link>
		
		<dc:creator><![CDATA[CloudRF]]></dc:creator>
		<pubDate>Tue, 31 Mar 2026 16:04:59 +0000</pubDate>
				<category><![CDATA[Self-hosted]]></category>
		<guid isPermaLink="false">https://cloudrf.com/?p=61209</guid>

					<description><![CDATA[<p>The first feature release of 2026 brings new MANET APIs with receiver antenna patterns, a major container refactor, offline 3D terrain, high accuracy tree canopy data and simpler licensing. Multi link API This API is designed for mesh and MANET networks and has already replaced the points API for the MANET tool on CloudRF. The [&#8230;]</p>
<p>The post <a href="https://cloudrf.com/soothsayer-1-11-released/">SOOTHSAYER 1.11 released</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading has-large-font-size">The first feature release of 2026 brings new MANET APIs with receiver antenna patterns, a major container refactor, offline 3D terrain, high accuracy tree canopy data and simpler licensing.</h2>



<h2 class="wp-block-heading">Multi link API</h2>



<p>This API is designed for mesh and MANET networks and has already replaced the points API for the MANET tool on CloudRF. The Points API will endure for modelling an array of transmitters to a single receiver, like a route, but Multi-link takes it up a gear and tests <em>all </em>radios to each other, at once.</p>



<p>By passing in the entire network in a single API request, this is much more efficient than recursive requests and because of this it is able to model hundreds of bi-directional links in milliseconds without a GPU.</p>



<p>In the example below, 10 S-Band mesh radios around the Isle of Wight were modelled using Bullington diffraction with a single API request in 0.14s. </p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://cloudrf.com/wp-content/uploads/2026/03/multilink-manet-1.jpg" rel="lightbox[61209]"><img fetchpriority="high" decoding="async" width="1000" height="592" src="https://cloudrf.com/wp-content/uploads/2026/03/multilink-manet-1.jpg" alt="" class="wp-image-61344" srcset="https://cloudrf.com/wp-content/uploads/2026/03/multilink-manet-1.jpg 1000w, https://cloudrf.com/wp-content/uploads/2026/03/multilink-manet-1-300x178.jpg 300w, https://cloudrf.com/wp-content/uploads/2026/03/multilink-manet-1-768x455.jpg 768w, https://cloudrf.com/wp-content/uploads/2026/03/multilink-manet-1-416x246.jpg 416w" sizes="(max-width: 1000px) 100vw, 1000px" /></a></figure>
</div>


<p>Multi-link can be called with an array of &#8220;radios&#8221; which have distinct features and noise levels making this well suited to mixed networks with different systems and antennas. Each radio is tested to the others and antenna patterns and orientation are considered for both the origin and destination.</p>



<pre class="wp-block-code"><code>{
  "site": "Site",
  "ui": 3,
  "network": "test",
  "radios": &#91;
    {
      "lat": 50.67579947194087,
      "lon": -1.5873429660824838,
      "alt": 3,
      "frq": 2220,
      "txw": 2,
      "bwi": 2,
      "nf": "-110",
      "antenna": {
        "txg": 3,
        "txl": 0,
        "ant": 0,
        "azi": 0,
        "tlt": "0",
        "hbw": 360,
        "vbw": 25,
        "fbr": 3,
        "pol": "v"
      }
    },
   {...},
   {...},
   {...},
   {...}
  ],
  "model": {
    "pm": 10,
    "pe": 2,
    "ked": 2,
    "rel": "50"
  },
  "environment": {
    "elevation": 2,
    "landcover": 0,
    "buildings": 0,
    "obstacles": 0,
    "clt": "Temperate.clt"
  },
  "output": {
    "units": "m",
    "out": 2,
    "res": "30"
  }
}</code></pre>



<h3 class="wp-block-heading">Receiver antenna patterns</h3>



<p>Receiver antenna patterns are important when working with directional antennas.</p>



<p>Historically we&#8217;ve answered this with receive antenna gain only with the assumption that the antenna is orientated toward the transmitter. This worked for omni-directional antennas and directional antennas which move, but most don&#8217;t.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><a href="https://cloudrf.com/wp-content/uploads/2026/03/beam-alignment.jpg" rel="lightbox[61209]"><img decoding="async" width="647" height="696" src="https://cloudrf.com/wp-content/uploads/2026/03/beam-alignment.jpg" alt="" class="wp-image-61365" style="aspect-ratio:0.9296169907054016;width:369px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2026/03/beam-alignment.jpg 647w, https://cloudrf.com/wp-content/uploads/2026/03/beam-alignment-279x300.jpg 279w, https://cloudrf.com/wp-content/uploads/2026/03/beam-alignment-416x448.jpg 416w" sizes="(max-width: 647px) 100vw, 647px" /></a></figure>
</div>


<p>By popular demand we&#8217;ve added this capability to the Multi link API but will not be adding another polar plot selector to the web interface as it is complex enough. If you are working with directional antennas the MANET tool will now allow you to model the impact of <strong>receive antenna nulls which are not obvious </strong>even with a clear line of sight.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://cloudrf.com/wp-content/uploads/2026/03/multi-azimith-receive-antennas.png" rel="lightbox[61209]"><img decoding="async" width="1024" height="540" src="https://cloudrf.com/wp-content/uploads/2026/03/multi-azimith-receive-antennas-1024x540.png" alt="" class="wp-image-61302" srcset="https://cloudrf.com/wp-content/uploads/2026/03/multi-azimith-receive-antennas-1024x540.png 1024w, https://cloudrf.com/wp-content/uploads/2026/03/multi-azimith-receive-antennas-300x158.png 300w, https://cloudrf.com/wp-content/uploads/2026/03/multi-azimith-receive-antennas-768x405.png 768w, https://cloudrf.com/wp-content/uploads/2026/03/multi-azimith-receive-antennas-416x219.png 416w, https://cloudrf.com/wp-content/uploads/2026/03/multi-azimith-receive-antennas.png 1069w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Multi-azimuth and receive antennas demonstrating alignment and misalignment</figcaption></figure>
</div>


<h2 class="wp-block-heading">Container refactor</h2>



<p>We have <strong>consolidated 7 containers into 4 </strong>to reduce the size, complexity and management of multiple containers. The benefit is immediate from a much reduced download time for only 2GB of packed images (65% reduction) to a faster install and lower overall CVE score when scanned with vulnerability scanners.</p>



<p>The two GPU containers have been absorbed by a new &#8220;core&#8221; container, which is the largest. It&#8217;s logging has had work so you can filter for messages from a component (gpu_engine, 3d_engine, api) like the 3D engine for example:</p>



<pre class="wp-block-code"><code>$ docker logs --tail 100 --follow soothsayer-docker-core | grep 3d

&#91;3d_engine] starting...
&#91;3d_engine] Input path: /data/3D/input/
&#91;3d_engine] Data path: /data/
&#91;3d_engine] Output path: /data/
&#91;3d_engine] Number of CPU workers: 2
&#91;3d_engine] Number of GPU workers: 2
&#91;3d_engine] Checking license...</code></pre>



<p>The two web server containers (API and Frontend) have been consolidated into a single &#8220;httpd&#8221; container with a single .conf file making configuration changes simpler and improving visibility. Once installed the images are under 7GB.</p>



<pre class="wp-block-code"><code>$ docker image ls

soothsayer-loaded-image.localhost/soothsayer-docker-core:latest             c260a5993051       4.09GB          909MB        
soothsayer-loaded-image.localhost/soothsayer-docker-httpd:latest            e326003d5aff        145MB         36.8MB         
soothsayer-loaded-image.localhost/soothsayer-docker-map-proxy:latest        a1c286f0adb8       1.73GB          388MB   U         
postgres:16.13-bookworm                                                     7858a1a43bb2        616MB          155MB    U  </code></pre>



<h2 class="wp-block-heading">CVE scan reports </h2>



<p>We have integrated automated CVE scanning in our pipeline now to improve security visibility for procurement. </p>



<p>The HTML reports will live in a SBOM folder along with our XML Software Bill Of Materials for third party libraries. We know customers are struggling with approving software so we&#8217;re hoping to educate and assist with this process where we can. In the age of AI slop it has never been easier to spin up a 3D map with widgets but it&#8217;s much harder to maintain and assure that through the development life cycle.</p>



<p>SOOTHSAYER is built on Linux so it has bugs&#8230;.but they&#8217;re not all ours. Our goal is to detect and fix as many as possible before release and issue regular updates so customers can upgrade their software and remain protected.</p>



<p>For details on CVEs please email support@cloudrf.com</p>



<p>For bug fixes in our own software, see the full change log at the bottom of this blog.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><a href="https://cloudrf.com/wp-content/uploads/2026/03/image-10.png" rel="lightbox[61209]"><img loading="lazy" decoding="async" width="817" height="189" src="https://cloudrf.com/wp-content/uploads/2026/03/image-10.png" alt="" class="wp-image-61440" style="aspect-ratio:4.323140353891084;width:760px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2026/03/image-10.png 817w, https://cloudrf.com/wp-content/uploads/2026/03/image-10-300x69.png 300w, https://cloudrf.com/wp-content/uploads/2026/03/image-10-768x178.png 768w, https://cloudrf.com/wp-content/uploads/2026/03/image-10-416x96.png 416w" sizes="auto, (max-width: 817px) 100vw, 817px" /></a><figcaption class="wp-element-caption">Example CVE report summary</figcaption></figure>
</div>


<p></p>



<h2 class="wp-block-heading">Offline 3D terrain</h2>



<p>Go to any industry trade show and you&#8217;ll see beautiful 3D maps with 3D terrain and 3D buildings. <strong>Very few are running offline</strong> and need to stream these layers from a commercial third party service, with third party terms and conditions.</p>



<p>We have invested in our own Quantized mesh generator so we can finally cut the cord with third party providers and offer 3D terrain, on Cesium, <strong>offline</strong>. We&#8217;re able to do this on the fly using local DEM data so if you want to improve the resolution, replace the GeoTIFF data in your folders.</p>



<p>This development is the first of several offline 3D layers with buildings and trees already in production. Keep an eye out for these on CloudRF this year.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://cloudrf.com/wp-content/uploads/2026/03/offline-3d-terrain.jpg" rel="lightbox[61209]"><img loading="lazy" decoding="async" width="1000" height="566" src="https://cloudrf.com/wp-content/uploads/2026/03/offline-3d-terrain.jpg" alt="" class="wp-image-61386" srcset="https://cloudrf.com/wp-content/uploads/2026/03/offline-3d-terrain.jpg 1000w, https://cloudrf.com/wp-content/uploads/2026/03/offline-3d-terrain-300x170.jpg 300w, https://cloudrf.com/wp-content/uploads/2026/03/offline-3d-terrain-768x435.jpg 768w, https://cloudrf.com/wp-content/uploads/2026/03/offline-3d-terrain-416x235.jpg 416w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></a><figcaption class="wp-element-caption">Developer console showing terrain files served from localhost</figcaption></figure>
</div>


<h2 class="wp-block-heading">Accurate tree canopy data</h2>



<p>Last year we processed 2M tiles of tree canopy data from Meta into CloudRF. This is now available on SOOTHSAYER for Europe, the US and other regions on demand either online as streamed data or offline via a data package.</p>



<p>The precision data improves accuracy in areas which previously had only 10m Land Cover data with a mean height for the tree canopy. The screenshot below is from Scotland where previously trees were sampled at a consistent height eg. 10m. Trees are permeable and using the clutter profiles, users can set the density for species and seasons.</p>



<p>For more information on the tree data and Machine Learning model used see this Meta <a href="https://sustainability.atmeta.com/blog/2024/04/22/using-artificial-intelligence-to-map-the-earths-forests/" type="post" id="49327">blog post. </a></p>



<p>For some bedtime reading about vegetation attenuation values see <a href="https://www.itu.int/rec/R-REC-P.833">ITU-R P.833</a></p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://cloudrf.com/wp-content/uploads/2026/03/tree-canopy-heights.png" rel="lightbox[61209]"><img loading="lazy" decoding="async" width="900" height="363" src="https://cloudrf.com/wp-content/uploads/2026/03/tree-canopy-heights.png" alt="" class="wp-image-61392" srcset="https://cloudrf.com/wp-content/uploads/2026/03/tree-canopy-heights.png 900w, https://cloudrf.com/wp-content/uploads/2026/03/tree-canopy-heights-300x121.png 300w, https://cloudrf.com/wp-content/uploads/2026/03/tree-canopy-heights-768x310.png 768w, https://cloudrf.com/wp-content/uploads/2026/03/tree-canopy-heights-416x168.png 416w" sizes="auto, (max-width: 900px) 100vw, 900px" /></a></figure>
</div>


<h3 class="wp-block-heading">Tree tiles by country</h3>



<p class="has-text-align-left">   2600 BELGIUM<br>   4560 DENMARK<br>  60360 France<br>  37640 GERMANY<br>   6780 IRELAND<br>  30100 ITALY<br>   8140 LATVIA<br>    520 LUXEMBOURG<br>   4720 NETHERLANDS<br>  63856 NORWAY<br>  33140 POLAND<br>   1530 PORTUGAL<br>  66480 SWEDEN<br>  27560 UK<br> 918080 USA</p>



<h2 class="wp-block-heading">Simpler licensing</h2>



<p>We&#8217;ve enjoyed handing out lots of SOOTHSAYER keys over the last year but our edge customers have had difficulty with the pseudo-random device ID for the host changing. The reason this changes is because it was based upon the physical MAC addresses on the host system. When these change, because the customer added a USB Ethernet adapter, the license must be re-issued which is frustrating when SOOTHSAYER has been prepared in one location then connected to a network elsewhere only to then stop.</p>


<div class="wp-block-image">
<figure class="alignright size-full is-resized"><a href="https://cloudrf.com/wp-content/uploads/2026/03/licensing-form.png" rel="lightbox[61209]"><img loading="lazy" decoding="async" width="566" height="402" src="https://cloudrf.com/wp-content/uploads/2026/03/licensing-form.png" alt="" class="wp-image-61416" style="aspect-ratio:1.4079760562832822;width:391px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2026/03/licensing-form.png 566w, https://cloudrf.com/wp-content/uploads/2026/03/licensing-form-300x213.png 300w, https://cloudrf.com/wp-content/uploads/2026/03/licensing-form-416x295.png 416w" sizes="auto, (max-width: 566px) 100vw, 566px" /></a></figure>
</div>


<p>This issue was becoming a regular ticket for edge users on laptops especially but not users in Cloud environments with a static NIC so we have taken the decision to relax the MAC address requirement.</p>



<p>Users can now use a license key on different computers without fear of the device ID changing. It is still using public key cryptography so they cannot grant themselves extra time or more seats on a server as we&#8217;re not completely daft!</p>



<p>A license key now describes a customer, and expiry and a number of permitted seats for that server instance only.</p>



<h2 class="wp-block-heading">Changelog</h2>



<h2 class="wp-block-heading">1.11.0 03/2026</h2>



<ul class="wp-block-list">
<li>Deprecation: Removed <code>debian:bookworm-slim</code> container for testing GPU. Instead now uses the <code>soothsayer-docker-core</code> container.</li>



<li>Deprecation: Prompt to set database password during <code>install.sh</code> removed. Password is now always automatically set to a randomised string.</li>



<li>Deprecation: Removes unused and confusing <code>LICENSE_SEATS_LIMIT</code>, <code>LICENSE_EXPIRY</code> and <code>LICENSE_CUSTOMER_ID</code> keys from <code>.env</code>.</li>



<li>Deprecation: Device ID has been relaxed.</li>



<li>Feature: Added 3D tree coverage data for several European countries (Belgium, Denmark, France, Germany, Ireland, Italy, Latvia, Luxembourg, Netherlands, Norway, Poland, Portugal, Sweden, UK), and for the USA.</li>



<li>Feature: Considerably reduced container footprint, reducing to 4 total containers with a total disk size of <code>~5GB</code>.</li>



<li>Feature: All containers, excluding database, adjusted to use common <code>ubuntu:24.04</code> base image.</li>



<li>Feature: Added <code>SHARED_MEMORY_SIZE</code> option to change the DEM tile cache size.</li>



<li>Feature: Added optional <code>DB_SHM_SIZE</code> option to allow configurable shared buffer for PostgreSQL database.</li>



<li>Feature: Added <code>SKIP_SSL_CERTIFICATE_RESPIN</code> option to skip SSL certificate respin.</li>



<li>Feature: Added a check that the core container can reach the database.</li>



<li>Feature: Added RAM/disk usage checks to <code>start.sh</code>.</li>



<li>Feature: Added <code>scripts/install-custom-dem.sh</code> helper script.</li>



<li>Fix: Phase-tracing made non-interactive in <code>install.sh</code> with <code>ENABLE_PHASE_TRACING</code> variable.</li>



<li>Fix: Removed dependency for SOOTHSAYER to be installed when executing <code>system-details.sh</code> script.</li>



<li>Fix: Automatically set <code>data/license</code> directory permissions during each start.</li>



<li>Fix: Added maximum attempt catch when configuring GPU in <code>install.sh</code>.</li>



<li>Fix: MapProxy container adjusted to deploy using with production-ready configuration, rather than <code>serve-develop</code>.</li>



<li>Fix: Renames <code>LICENSE_MAX_RADIUS</code>, <code>LICENSE_MAX_POINTS_LIMIT</code> and <code>LICENSE_MAX_BSA_RADIUS</code> keys in <code>.env</code> to <code>MAX_RADIUS</code>, <code>MAX_POINT_COUNT</code> and <code>MAX_BSA_RADIUS</code>, respectively. This change was made to better reflect their usecase as they are not tied to licensing.</li>



<li>Fix: Improved error handling within database migration files.</li>



<li>Fix: Create GPU device nodes by running <code>nvidia-smi</code> in <code>start.sh</code> before bringing the containers up.</li>



<li>Update: API <code>3.33.0</code>, UI <code>3.26.0</code>, CPU Engine <code>1.20.0</code>, GPU Engine <code>1.15.0</code>, 3D Engine <code>0.2.4</code>, Midgard <code>1.0.0</code>, Bouncyball <code>0.4.4</code>, AntennaWizard <code>2.1.1</code>, Analysis Utilities (QRM2, SuperTool &amp; NoiseGen) <code>1.1.1</code>, Documentation <code>2.11.0</code>.</li>



<li>Update: Database container updated to <code>postgres:16.13-bookworm</code>.</li>
</ul>



<h3 class="wp-block-heading">API</h3>



<h4 class="wp-block-heading">3.33.0 (2026-03-31)</h4>



<ul class="wp-block-list">
<li>Deprecation: Legacy antenna validator and endpoints removed.</li>



<li>Deprecation: <code>html</code> key no longer included in calculation responses.</li>



<li>Improvement: Improved error logging for analysis utils.</li>



<li>Fix: Tilt validation forced as an integer for some calculation endpoints. Should instead be a numeric to allow for floating point values.</li>



<li>Fix: Missing noise data should return HTTP code <code>409</code> not <code>500</code>.</li>



<li>Fix: Custom clutter tiles not found by GPU engine.</li>



<li>Fix: Broken transmitter icon within <code>multisite</code> public links.</li>



<li>Fix: Fix issues with null noise names and group names.</li>



<li>Fix: <code>multilink</code> API ignoring multiple azimuths.</li>
</ul>



<h4 class="wp-block-heading">3.32.0 (2026-02-11)</h4>



<ul class="wp-block-list">
<li>Feature: Added <code>frequency</code> and <code>partial</code> to <code>/noise/clear</code> endpoint.</li>



<li>Feature: <code>multilink</code> endpoint includes receiver antenna pattern.</li>



<li>Feature: Added new <code>multilink</code> API for scalable mesh networks.</li>



<li>Improvement: Replaced public URL Google maps with Leaflet and CloudRF map layer</li>



<li>Fix: Set <code>output.mod</code> and <code>output.ber</code> to <code>nullable</code> when saving templates or MANET networks.</li>



<li>Fix: When retrieving a template which is not using BER units, set <code>output.mod</code> and <code>output.ber</code> values to <code>null</code> to avoid them being used and causing issues in subsequent requests.</li>



<li>Fix: Site and network names with numeric-only values are not being correctly interpreted as string length values.</li>



<li>Fix: Handle upper-case and lower-case values for antenna polarity.</li>
</ul>



<h4 class="wp-block-heading">3.31.0 (2026-01-23)</h4>



<ul class="wp-block-list">
<li>Feature: Antenna beamwidth (<code>antenna.hbw</code> and <code>antenna.vbw</code>) for <code>area</code> requests extended to lower limit of <code>1.0e-11</code>.</li>



<li>Feature: Improved azimuth validation failure message to highlight both single and multi-azimuth acceptance.</li>



<li>Feature: Standardised validation messages of <code>area</code>, <code>path</code>, <code>points</code> and <code>bsa</code>.</li>



<li>Fix: BER colour schema is unable to be used correctly for some <code>area</code> calls.</li>



<li>Fix: Azimuth validation allows <code>0</code> through to <code>360</code>, when it should be <code>0</code> to <code>359</code>.</li>



<li>Fix: Improved noise floor data-type casting for <code>path</code> and <code>points</code> requests.</li>



<li>Fix: Improved <code>points</code> inversion to handle multi-azimuth for MANET requests.</li>



<li>Fix: Added tilt inversion on <code>points</code> when using MANET requests.</li>



<li>Fix: PPA calls not correctly appending <code>_PPA</code> to site name.</li>



<li>Fix: Multisite calculations not applying <code>txl</code>.</li>



<li>Fix: <code>txl</code> only applied when <code>txg</code> is present fpr <code>path</code>, <code>points</code>, and <code>BSA</code> requests.</li>



<li>Fix: Fresnel zone incorrect when using imperial units</li>



<li>Fix: Path calcs erroring without <code>output.rad</code> present in the request.</li>



<li>Change: Path and points endpoints return an error, rather than a warning, if the receiver is underground.</li>
</ul>



<h4 class="wp-block-heading">3.30.1 (2025-12-30)</h4>



<ul class="wp-block-list">
<li>Fix: Path API noise floor not handling strings</li>



<li>Fix: Points API noise floor not handling strings</li>



<li>Fix: Points API azimuth reversed to align with MANET tool</li>
</ul>



<h4 class="wp-block-heading">3.30.0 (2025-12-15)</h4>



<ul class="wp-block-list">
<li>Fix: Reduced upper limit of BSA radius.</li>



<li>Fix: BSA units can incorrectly be used with <code>path</code> and <code>points</code> requests.</li>



<li>Fix: Removes acceptance of <code>output.rad</code> for <code>path</code> and <code>points</code> requests. Distance between points is used.</li>



<li>Fix: Using <code>output.out</code> value of <code>5</code> (BER) with <code>path</code> and <code>points</code> requests leads to mismatched validations for <code>output.mod</code> and <code>output.ber</code>.</li>



<li>Fix: Improved validation errors for <code>points</code> requests when missing <code>receiver.lat</code>, <code>receiver.lon</code> and <code>points</code>.</li>



<li>Fix: Removed support for <code>output.col</code> on <code>points</code> as colour schema is not necessary.</li>



<li>Fix: Removed required <code>transmitter.lat</code>, <code>transmitter.lon</code> and <code>transmitter.alt</code> values with <code>points</code> requests as they&#8217;re not needed.</li>



<li>Fix: HF skywave endpoint always placing receiver in the eastern hemisphere.</li>



<li>Fix: Noise endpoint incorrectly applying frequency filter.</li>



<li>Fix: Public link layer export not centering on calcs with negative values.</li>



<li>Enhancement: Added SNR21.dB colour key in support of ATAK plugin</li>
</ul>



<h4 class="wp-block-heading">3.29.0 (2025-11-10)</h4>



<ul class="wp-block-list">
<li>Deprecation: Removes support for <code>output.out</code>, <code>receiver.lat</code>, <code>receiver.lon</code>, and <code>receiver.rxs</code> for BSA. BSA has its own measured units, and the receiver location and some radio settings are not necessary for BSA calculations.</li>



<li>Feature: P.1546 replaced with P.1812 model.</li>



<li>Feature: Added <code>TREE</code> tile type to support high resolution 3D trees.</li>



<li>Feature: Opens up BSA calculations to all propagation and diffraction models, with the exception of FSPL.</li>



<li>Fix: Using BSA without a colour schema was returning a received power colour schema. Default schema of <code>BESTSITE.bsa</code> is used as a default.</li>



<li>Fix: Using BSA with an unknown clutter file doesn&#8217;t throw a validation error.</li>



<li>Fix: Give <code>calculation_adjusted</code> message if radius is increased to be able to cover <code>edges</code>.</li>



<li>Fix: Latitude and longitude values stored in the archive can lose precision in some circumstances.</li>



<li>Fix: Requesting reprojected images with malformed metadata can result in source images being deleted.</li>



<li>Fix: ERP is incorrectly calculated on a public link export.</li>



<li>Fix: Network name always gets stored as <code>BSA</code> in the archive when running BSA. Now uses the network name.</li>



<li>Fix: Return a 500 if there&#8217;s an issue with creating custom clutter.</li>
</ul>



<h4 class="wp-block-heading">3.28.0 (2025-09-04)</h4>



<ul class="wp-block-list">
<li>Feature: Improved documentation on SOOTHSAYER DEM Manager.</li>



<li>Feature: Added support for <code>frequency</code> filter on <code>/noise</code> endpoint.</li>



<li>Feature: Default location updated to Ibiza.</li>



<li>Feature: SOOTHSAYER system status page now shows services which are online but require a license.</li>



<li>Fix: Public link export is returning a HTTP 500.</li>



<li>Fix: SOOTHSAYER system status page is slow to load in offline environments.</li>



<li>Fix: Increased maximum timeout for <code>/merge</code> and <code>/mesh</code> to be able to handle larger requests.</li>



<li>Fix: Refreshed the warning message when clicking &#8220;Reset Database&#8221; in the administrator dashboard for SOOTHSAYER.</li>



<li>Fix: Antenna favourite button is not obvious in the antenna manager.</li>
</ul>



<h3 class="wp-block-heading">UI</h3>



<h4 class="wp-block-heading">3.26.0 (2026-03-31)</h4>



<ul class="wp-block-list">
<li>Feature: Add terrain selection to imagery layer selection.</li>



<li>Feature: Noise manager improvements including a refresh button and a filtered delete.</li>



<li>Feature: Loading templates with unfavourited antenna patterns will be be automatically favourited.</li>



<li>Fix: Clear password field after submitting login form.</li>



<li>Fix: Console error from requesting unavailable imagery levels.</li>



<li>Fix: Signal tooltip missing for image layers larger than 16MP.</li>



<li>Fix: Loading a template with a custom antenna pattern sometimes produces an incorrect antenna plot.</li>



<li>Fix: Loading a calculation with a custom antenna pattern doesn&#8217;t change the antenna mode.</li>



<li>Fix: HF Skywave templates unable to be saved.</li>



<li>Fix: Loading calculations from the archive didn&#8217;t set receiver sensitivity and noise floor correctly.</li>



<li>Fix: Loading AMSL calculations from the archive set the units to AGL.</li>



<li>Fix: Very high feeder loss efficiency considered &#8220;Good&#8221;.</li>



<li>Fix: Erroneous receiver sensitivity warnings when changing measured units.</li>



<li>Fix: Missing calculations from network when opening archive.</li>



<li>Fix: Noise floor and receiver sensitivity are no longer auto-adjusted when bandwidth is changed.</li>



<li>Fix: Disabling MANET during calculation can result in rogue layers being left on the map.</li>
</ul>



<h4 class="wp-block-heading">3.25.1 (2026-02-25)</h4>



<ul class="wp-block-list">
<li>Fix: Saving a template with a RCS value of 0 when not using RADAR</li>



<li>Fix: Elapsed time in console rounded off</li>
</ul>



<h4 class="wp-block-heading">3.25.0 (2026-02-12)</h4>



<ul class="wp-block-list">
<li>Feature: MANET links now calculated with a single Multilink request.</li>



<li>Fix: Retrieving a layer from archive with the default colour schema.</li>



<li>Fix: MANET link sensitivity mismatch when mixing units.</li>



<li>Fix: MANET using stale values for reports when links disabled.</li>
</ul>



<h4 class="wp-block-heading">3.24.3 (2026-02-09)</h4>



<ul class="wp-block-list">
<li>Fix: Added spin-lock to calculate button for GPU calculations.</li>



<li>Fix: RCS value not sent for points API requests using RADAR.</li>



<li>Fix: Multipoint links and route analysis imperial ASL logic moved to API</li>



<li>Fix: Loading MANET network from archive reporting missing <code>site</code>.</li>



<li>Fix: Improved handling of <code>output.mod</code> and <code>output.ber</code> when using BER units</li>
</ul>



<h4 class="wp-block-heading">3.24.2 (2026-01-15)</h4>



<ul class="wp-block-list">
<li>Feature: Add automatic validation for noise floor input.</li>



<li>Fix: MANET allows adding nodes with broken settings.</li>



<li>Fix: API validation failure for <code>output.ber</code> and <code>output.mod</code> when using MANET.</li>



<li>Fix: View reset working with D.M.S and MGRS</li>
</ul>



<h4 class="wp-block-heading">3.24.1 (2025-12-30)</h4>



<ul class="wp-block-list">
<li>Fix: MANET marker offset when dragging</li>



<li>Enhancement: fxaa smoothing applied to 3D terrain</li>
</ul>



<h4 class="wp-block-heading">3.24.0 (2025-12-29)</h4>



<ul class="wp-block-list">
<li>Fix: Map resolution uses devicePixelRatio to fix aliasing</li>



<li>Fix: FBR and RCS not being sent for PPA requests.</li>



<li>Fix: BER and modulation shouldn&#8217;t be sent for PPA requests if not using BER units.</li>



<li>Fix: Receiver sensitivity not necessary for PPA requests if using BER units.</li>



<li>Fix: BER units not using BER colour schemas.</li>
</ul>



<h4 class="wp-block-heading">3.23.1 (2025-12-11)</h4>



<ul class="wp-block-list">
<li>Fix: Units other than received power are not allowed with Best Server tool.</li>



<li>Fix: HF skywave path profile tool ignore reliability and context.</li>
</ul>



<h4 class="wp-block-heading">3.23.0 (2025-11-10)</h4>



<ul class="wp-block-list">
<li>Feature: Throw warning when receiver sensitivity lower than the selected colour schema.</li>



<li>Feature: Improved guidance for how to get details of failed calculations during auto-processing.</li>



<li>Fix: Auto-processing doesn&#8217;t support multi-azimuth.</li>



<li>Fix: Auto-processing not correctly validating non-numerical values.</li>



<li>Fix: Auto-processing incorrectly attempting to process values which have failed validation.</li>



<li>Fix: &#8220;Antenna ID not favourited&#8221; link during auto-processing doesn&#8217;t work when using antenna name.</li>



<li>Fix: Removed a phantom path profile legend entry with buildings, but not landcover, enabled.</li>



<li>Fix: Separates RSRP and received power in chart as both use dBm</li>
</ul>



<h4 class="wp-block-heading">3.22.0 (2025-10-26)</h4>



<ul class="wp-block-list">
<li>Feature: Organic 3D quantized terrain for CesiumJS</li>



<li>Feature: Import noise manager.</li>



<li>Improvement: Organic Geocoder for CesiumJS</li>



<li>Fix: Disabling bounds leaves behind small artifacts on the map.</li>
</ul>



<h4 class="wp-block-heading">3.21.0 (2025-10-02)</h4>



<ul class="wp-block-list">
<li>Improvement: ITU-R P.1546 superseded by ITU-R P.1812.</li>



<li>Deprecated: Cesium ion data to be removed in October 2025 following hostile ToS update threatening audits</li>



<li>Deprecated: Removed Cesium ion imagery for a selection of four including two user defined</li>



<li>Fix: Using altitudes with fractional values on <code>path</code> calls ignores the decimals.</li>
</ul>



<p></p>
<p>The post <a href="https://cloudrf.com/soothsayer-1-11-released/">SOOTHSAYER 1.11 released</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Live network mapping endurance test</title>
		<link>https://cloudrf.com/live-network-mapping-endurance-test/</link>
		
		<dc:creator><![CDATA[CloudRF]]></dc:creator>
		<pubDate>Wed, 11 Feb 2026 09:26:52 +0000</pubDate>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Modelling]]></category>
		<category><![CDATA[Self-hosted]]></category>
		<guid isPermaLink="false">https://cloudrf.com/?p=56021</guid>

					<description><![CDATA[<p>Summary We conducted a field test in the mountains with SOOTHSAYER focused on automation and endurance. The test generated quality data and revealed altitude issues with our plugin we have since fixed. We conducted a field test in the mountains with SOOTHSAYER focused on automation and endurance. The test generated quality data and revealed altitude [&#8230;]</p>
<p>The post <a href="https://cloudrf.com/live-network-mapping-endurance-test/">Live network mapping endurance test</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Summary</h2>



<blockquote class="wp-block-quote has-medium-font-size is-layout-flow wp-block-quote-is-layout-flow">
<p>We conducted a field test in the mountains with SOOTHSAYER focused on automation and endurance. The test generated quality data and revealed altitude issues with our plugin we have since fixed.</p>
</blockquote>



<p>We conducted a field test in the mountains with SOOTHSAYER focused on automation and endurance. The test generated quality data and revealed altitude issues with our plugin we have since fixed.</p>



<p>During the test we created <strong>925 multi-site coverage heat maps</strong> and 4625 links to maintain a live map of the network. We previously established model accuracy on <a href="https://cloudrf.com/accuracy/" type="post" id="49327">previous field tests</a> so the focus here was on <strong>endurance</strong>.</p>



<p>Live network mapping is radio planning without user interaction where radio locations and coverage are updated dynamically via an API. It requires fast and economical edge compute like our <a href="https://cloudrf.com/soothsayer/" type="page" id="6612">SOOTHSAYER</a> API to be effective and is not possible with legacy desktop tools.</p>



<p>This offline edge capability is implemented in our ATAK plugin via the Co-Opt feature. This new feature updates network coverage automatically using live map data to provide a current view of communications problems and opportunities, akin to a moving weather layer. <strong>It is useful for deploying radio networks into challenging terrain.</strong></p>



<h2 class="wp-block-heading">Test objectives</h2>



<ul class="wp-block-list">
<li class="has-medium-font-size">Collect performance data</li>



<li class="has-medium-font-size">Prove software stability</li>



<li class="has-medium-font-size">Test altitude logic</li>
</ul>



<h2 class="wp-block-heading">Test setup</h2>



<h3 class="wp-block-heading">Hardware</h3>



<p>The edge compute used was a Nvidia Jetson NX 16GB onboard a <a href="https://www.carnegierobotics.com/cardshark">Cardshark rugged computer </a>with an external Wi-Fi adaptor to provide an access point for the phone client. </p>



<p>The computer was powered by budget USB-C powerbanks rated at <a href="https://www.amazon.co.uk/JUOVI-20000mAh-Portable-Charger-Charging/dp/B0D6378L2B/?th=1">13000mAh</a> and <a href="https://www.amazon.co.uk/INIU-25000mAh-Portable-Charging-Powerbank/dp/B0CB1BVHTK/">25000mAh</a> respectively.</p>



<p>The test phone was a Samsung Galaxy S23 connected via the Jetson&#8217;s Wi-Fi.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><a href="https://cloudrf.com/wp-content/uploads/2026/02/carshark-batteries-phone.jpg" rel="lightbox[56021]"><img loading="lazy" decoding="async" width="1024" height="768" src="https://cloudrf.com/wp-content/uploads/2026/02/carshark-batteries-phone-1024x768.jpg" alt="" class="wp-image-56033" style="aspect-ratio:1.333342163823249;width:674px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2026/02/carshark-batteries-phone-1024x768.jpg 1024w, https://cloudrf.com/wp-content/uploads/2026/02/carshark-batteries-phone-300x225.jpg 300w, https://cloudrf.com/wp-content/uploads/2026/02/carshark-batteries-phone-768x576.jpg 768w, https://cloudrf.com/wp-content/uploads/2026/02/carshark-batteries-phone-416x312.jpg 416w, https://cloudrf.com/wp-content/uploads/2026/02/carshark-batteries-phone.jpg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Cardshark computer with USB-C power cable, batteries and phone</figcaption></figure>
</div>


<p></p>



<h3 class="wp-block-heading">Software</h3>



<p>The offline software running on the Jetson&#8217;s Jetpack 6.1 OS was <a href="https://cloudrf.com/soothsayer">SOOTHSAYER</a> v1.10, deployed as Docker containers. <em>The resource intensive 3D engine container was not needed here so was disabled.</em></p>



<p>Services for a <a href="https://github.com/Cloud-RF/cotroutesim">CoT simulator</a>, a low power 5GHz Wi-Fi access point and a performance logging utility were running.</p>



<p>On the phone we ran ATAK 5.6.0.12 (Play store) with our <a href="https://play.google.com/store/apps/details?id=com.cloudrf.android.soothsayer.plugin">SOOTHSAYER ATAK plugin</a> version 2.7a.</p>



<h3 class="wp-block-heading">Reference data</h3>



<p>The Jetson was pre-loaded with 30m SRTM1 DTM and 10m ESA Land cover data for the mountainous test area. The phone used cached Openstreetmap mapping and 30m SRTM1 terrain data.</p>



<h3 class="wp-block-heading">Test route</h3>



<p>The area chosen was the Glenshee ski resort in the Cairgngorms national park, Scotland during early February where temperatures up the mountain were -10°C (14°F). A 16km circular route was followed which provided challenging conditions to meet the objectives.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://cloudrf.com/wp-content/uploads/2026/02/glenshee-winter-plateau.jpg" rel="lightbox[56021]"><img loading="lazy" decoding="async" width="1024" height="768" src="https://cloudrf.com/wp-content/uploads/2026/02/glenshee-winter-plateau-1024x768.jpg" alt="" class="wp-image-56042" srcset="https://cloudrf.com/wp-content/uploads/2026/02/glenshee-winter-plateau-1024x768.jpg 1024w, https://cloudrf.com/wp-content/uploads/2026/02/glenshee-winter-plateau-300x225.jpg 300w, https://cloudrf.com/wp-content/uploads/2026/02/glenshee-winter-plateau-768x576.jpg 768w, https://cloudrf.com/wp-content/uploads/2026/02/glenshee-winter-plateau-416x312.jpg 416w, https://cloudrf.com/wp-content/uploads/2026/02/glenshee-winter-plateau.jpg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<h1 class="wp-block-heading">Test data</h1>



<p>Using the onboard Tegrastats utility we collected detailed data about workload, temperature and power consumption which will inform future designs and recommendations.</p>



<p>The day was split between two test profiles for the morning (0900 to 1300) and the afternoon (1345 to 1600).</p>



<p>Each profile used 0.5 megapixel resolution which for a multi-site request with 5 nodes would require the analysis of 2.5 million points using the ITU-R P.1812 VHF/UHF propagation model which includes diffraction.</p>



<p>In the first test profile, a calculation was triggered<strong> if a radio moved more than 200m</strong>. This is an economical way of working designed to extend battery life and reduce bandwidth if working across a network.</p>



<p>In the second test profile, a calculation was triggered on a <strong>10 second interval</strong>. This is a more intensive way of working which provides regular updates.</p>



<h2 class="wp-block-heading">Processor load</h2>



<p>As expected, the CPU and GPU load was more intense for the fixed interval than the responsive profile. The spacing during the responsive profile in the morning shows our slower progress on the ascent followed by rapid progress as we moved across the plateau and the server worked harder to keep up with us.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-44.png" rel="lightbox[56021]"><img loading="lazy" decoding="async" width="1024" height="523" src="https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-44-1024x523.png" alt="" class="wp-image-56093" srcset="https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-44-1024x523.png 1024w, https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-44-300x153.png 300w, https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-44-768x392.png 768w, https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-44-1536x784.png 1536w, https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-44-416x212.png 416w, https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-44.png 1798w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">GPU load</figcaption></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-53.png" rel="lightbox[56021]"><img loading="lazy" decoding="async" width="1024" height="523" src="https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-53-1024x523.png" alt="" class="wp-image-56096" srcset="https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-53-1024x523.png 1024w, https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-53-300x153.png 300w, https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-53-768x392.png 768w, https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-53-1536x784.png 1536w, https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-53-416x212.png 416w, https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-53.png 1798w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">CPU load</figcaption></figure>
</div>


<h2 class="wp-block-heading">SOC Temperature</h2>



<p>The internal SOC temperature chart was also predictable as the unit was inside a waterproof bag inside a rucksack. It climbed steadily during the ascent, then dropped sharply as we stopped to make a video where it was removed from the rucksack briefly.</p>



<p>The unit temperature leveled out at 53 degrees Celsius inside the rucksack. It was not an ideal place to achieve cooling but given the winter conditions, quite acceptable judging by the data. A temperature of 80 degrees would be hot.</p>



<p>In the afternoon the unit was attached outside the rucksack in the waterproof bag where it leveled out at 32 degrees Celsius. The moment the rucksack was placed inside the vehicle before 1600 is evident as the temperature climbed steadily. This coincided with it being placed under an intense load during a <a href="https://www.youtube.com/watch?v=5tAwou7Rg4E">driving demonstration</a> we have published on our Youtube channel.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-41-10.png" rel="lightbox[56021]"><img loading="lazy" decoding="async" width="1024" height="523" src="https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-41-10-1024x523.png" alt="" class="wp-image-56102" srcset="https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-41-10-1024x523.png 1024w, https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-41-10-300x153.png 300w, https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-41-10-768x392.png 768w, https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-41-10-1536x784.png 1536w, https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-41-10-416x212.png 416w, https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-41-10.png 1798w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">SOC Temperature</figcaption></figure>
</div>


<h2 class="wp-block-heading">Power consumption</h2>



<p>The most valuable data was power consumption which showed some interesting features and very encouraging mean values. The afternoon profile was more intense but did not increase peak power consumption which was actually lower than the morning for reasons which were not immediately obvious. </p>



<p>Following inspection of memory consumption (~25%), the reason was assessed to be a GPU memory leak triggered by unplanned &#8220;Above Sea Level&#8221; (ASL) calculations which occurred on the ascent. <em>A large calculation needs more memory, which draws more power</em>. Unlike the CPU engine which is called on-demand, the GPU engine runs continuously and its memory consumption can grow with use. In this case power consumption grew by 250mW whilst delivering 925 heat maps which we&#8217;re happy with.</p>



<p>The afternoon was not affected by the ASL memory leak so we maintained a steady even profile at around <strong>7.5W power consumption</strong>, well within the range of a phone power bank.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-59-1.png" rel="lightbox[56021]"><img loading="lazy" decoding="async" width="1024" height="523" src="https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-59-1-1024x523.png" alt="" class="wp-image-56105" srcset="https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-59-1-1024x523.png 1024w, https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-59-1-300x153.png 300w, https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-59-1-768x392.png 768w, https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-59-1-1536x784.png 1536w, https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-59-1-416x212.png 416w, https://cloudrf.com/wp-content/uploads/2026/02/Screenshot-from-2026-02-10-14-40-59-1.png 1798w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Power consumption throughout the day</figcaption></figure>
</div>


<h2 class="wp-block-heading">Test videos</h2>



<p>A video of select moments from the edge compute field test has been published on our Youtube channel. Following the field test, we created a bonus video of the drive home as the server was still running in the vehicle. This second video demonstrates the Co-Opt feature running with a 5 second refresh on a vehicle moving at up to 50 mph.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Live network mapping endurance test" width="980" height="551" src="https://www.youtube.com/embed/pCFMegeGMb8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="SOOTHSAYER ATAK plugin: Live RF mapping from a vehicle" width="980" height="551" src="https://www.youtube.com/embed/5tAwou7Rg4E?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">Issues</h2>



<h3 class="wp-block-heading">Plugin altitude logic</h3>



<p>During the ascent we noted our own position marker, sourced from GPS, jumped from Above-Ground-Level (AGL) defined within our template to Above-Sea-Level (ASL). This was due to logic inside our plugin designed to handle aircraft.</p>



<p>The logic compares reported (GPS) altitude, measured in WGS-84 Height Above Ellipsoid (HAE), which is known to be inaccurate, with (ATAK) terrain height and if the difference exceeds 120m / 400ft, it uses ASL units and overrides the template&#8217;s receiver altitude to the local terrain altitude.</p>



<p>For more information on Height Above Ellipsoid see <a href="https://nextnav.com/hae/">this article</a>.</p>



<pre class="wp-block-code"><code>// If Height AGL is &gt; 120m / 400ft, this is probably flying so we switch units to meters AMSL and use GPS altitude

if (altitude - terrain &gt; 120.0) {

  marker.markerDetails.transmitter?.alt = altitude.toDouble()

  marker.markerDetails.receiver.alt = terrain + 1

  marker.markerDetails.output.units = "m_amsl"

} else {

  marker.markerDetails.output.units = "m"

}</code></pre>



<p></p>



<p>This risky logic made sense from the comfort of the office with a GPS simulator but was a mess on the mountain with real GPS altitudes. <em>The synthetic CoT markers were unaffected as they report a height above ground level.</em></p>



<p>As we went on to find, we were comparing an inaccurate GPS altitude with an inaccurate terrain altitude. Not exactly a recipe for success :/</p>



<figure class="wp-block-gallery aligncenter has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><a href="https://cloudrf.com/wp-content/uploads/2026/02/glenshee-coverage-at-0901.jpg" rel="lightbox[56021]"><img loading="lazy" decoding="async" width="1000" height="462" data-id="56114" src="https://cloudrf.com/wp-content/uploads/2026/02/glenshee-coverage-at-0901.jpg" alt="" class="wp-image-56114" srcset="https://cloudrf.com/wp-content/uploads/2026/02/glenshee-coverage-at-0901.jpg 1000w, https://cloudrf.com/wp-content/uploads/2026/02/glenshee-coverage-at-0901-300x139.jpg 300w, https://cloudrf.com/wp-content/uploads/2026/02/glenshee-coverage-at-0901-768x355.jpg 768w, https://cloudrf.com/wp-content/uploads/2026/02/glenshee-coverage-at-0901-416x192.jpg 416w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></a></figure>



<figure class="wp-block-image size-large"><a href="https://cloudrf.com/wp-content/uploads/2026/02/glenshee-coverage-at-1033.jpg" rel="lightbox[56021]"><img loading="lazy" decoding="async" width="1000" height="462" data-id="56117" src="https://cloudrf.com/wp-content/uploads/2026/02/glenshee-coverage-at-1033.jpg" alt="" class="wp-image-56117" srcset="https://cloudrf.com/wp-content/uploads/2026/02/glenshee-coverage-at-1033.jpg 1000w, https://cloudrf.com/wp-content/uploads/2026/02/glenshee-coverage-at-1033-300x139.jpg 300w, https://cloudrf.com/wp-content/uploads/2026/02/glenshee-coverage-at-1033-768x355.jpg 768w, https://cloudrf.com/wp-content/uploads/2026/02/glenshee-coverage-at-1033-416x192.jpg 416w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></a></figure>
<figcaption class="blocks-gallery-caption wp-element-caption">Screenshots of a regular and large above sea level calculation during the ascent</figcaption></figure>



<p></p>



<p></p>



<h3 class="wp-block-heading">ATAK API inconsistencies</h3>



<p>Whilst on the mountain we noted a disagreement between our GPS altitude and ATAK&#8217;s reported altitude which warranted a deeper investigation. During the investigation we discovered inconsistencies with ATAK Elevation data.</p>



<p>The ElevationData class we, and no doubt other developers, were using was deprecated and apparently removed in 5.6 despite being in the <a href="https://github.com/TAK-Product-Center/atak-civ/blob/9f6893dd657feacc35ec5de03dad721c2e44170e/plugin-examples/helloworld/app/src/main/java/com/atakmap/android/helloworld/HelloWorldDropDownReceiver.java#L183">Hello World demo</a> for that release. We were using this with the <strong>getElevation()</strong> method which returns the height in meters above the WGS-84 ellipsoid (HAE).</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://cloudrf.com/wp-content/uploads/2026/02/image-2.png" rel="lightbox[56021]"><img loading="lazy" decoding="async" width="873" height="324" src="https://cloudrf.com/wp-content/uploads/2026/02/image-2.png" alt="" class="wp-image-56153" srcset="https://cloudrf.com/wp-content/uploads/2026/02/image-2.png 873w, https://cloudrf.com/wp-content/uploads/2026/02/image-2-300x111.png 300w, https://cloudrf.com/wp-content/uploads/2026/02/image-2-768x285.png 768w, https://cloudrf.com/wp-content/uploads/2026/02/image-2-416x154.png 416w" sizes="auto, (max-width: 873px) 100vw, 873px" /></a><figcaption class="wp-element-caption">Deprecation warning on ElevationData</figcaption></figure>
</div>


<pre class="wp-block-code"><code>val dtmFilter = ElevationManager.QueryParameters().apply {

  elevationModel = ElevationData.MODEL_TERRAIN

}
val terrain = ElevationManager.getElevation(currentMarker.point.latitude, currentMarker.point.longitude, dtmFilter)</code></pre>



<h3 class="wp-block-heading"></h3>



<p>The recommended replacement for <strong>ElevationData</strong> based upon public source code for 5.5 is the <a href="https://github.com/TAK-Product-Center/atak-civ/blob/9f6893dd657feacc35ec5de03dad721c2e44170e/takkernel/engine/src/main/java/com/atakmap/map/elevation/ElevationData.java#L11">ElevationChunk</a> API. <em>There are no public examples for implementing the recommended alternative at the time of writing although references were noted in documentation <span style="text-decoration: underline;">before</span> it was deprecated in 5.3</em> <em>which needs clarification.</em></p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://cloudrf.com/wp-content/uploads/2026/02/image-4.png" rel="lightbox[56021]"><img loading="lazy" decoding="async" width="668" height="110" src="https://cloudrf.com/wp-content/uploads/2026/02/image-4.png" alt="" class="wp-image-56171" srcset="https://cloudrf.com/wp-content/uploads/2026/02/image-4.png 668w, https://cloudrf.com/wp-content/uploads/2026/02/image-4-300x49.png 300w, https://cloudrf.com/wp-content/uploads/2026/02/image-4-416x69.png 416w" sizes="auto, (max-width: 668px) 100vw, 668px" /></a><figcaption class="wp-element-caption">Version 5.5.1 recommends ElevationChunk</figcaption></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><a href="https://cloudrf.com/wp-content/uploads/2026/02/image-3.png" rel="lightbox[56021]"><img loading="lazy" decoding="async" width="503" height="105" src="https://cloudrf.com/wp-content/uploads/2026/02/image-3.png" alt="" class="wp-image-56168" style="width:631px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2026/02/image-3.png 503w, https://cloudrf.com/wp-content/uploads/2026/02/image-3-300x63.png 300w, https://cloudrf.com/wp-content/uploads/2026/02/image-3-416x87.png 416w" sizes="auto, (max-width: 503px) 100vw, 503px" /></a><figcaption class="wp-element-caption">Documentation for 5.6 does not contain elevationchunk</figcaption></figure>
</div>


<h3 class="wp-block-heading">DTED or SRTM?</h3>



<p>The deprecated method used was evidently returning a value based upon low resolution DTED0 data at 1km resolution. This was less accurate than the 30m SRTM1 (DTED2) data which ATAK tools like the range-bearing elevation profile or cross marker (X) use. <em>SOOTHSAYER uses SRTM1 also.</em></p>



<p>ATAK 5.6 was found to be referencing different datasets for the same position between its interface tools and programming API which was frustrating. To prove this we pulled both the raster tiles and used GDAL&#8217;s location info utility to plot the differences for the route.</p>



<p>At location <strong>56.875932, -3.377869</strong> we experienced a large height error when the plugin fetched a height of 879m HAE yet the GPS reported 997m HAE (visible in the screenshot above). The massive 118m difference is just shy of the 120m needed to trigger our &#8220;airborne&#8221; logic. </p>



<p>The GPS measurement accuracy in the z-axis was measured to be inaccurate by at least 10m as the real altitude was 1007m ASL so it appears we had an altitude error greater than 120m during the ascent. A notable error which <a href="https://github.com/meshtastic/firmware/issues/359">affects other GPS apps</a>.</p>



<pre class="wp-block-code"><code>gdallocationinfo n56.dt0 -wgs84 -3.377869 56.875932
Report:
  Location: (37P,15L)
  Band 1:
    Value: 879</code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://cloudrf.com/wp-content/uploads/2026/02/image-1.png" rel="lightbox[56021]"><img loading="lazy" decoding="async" width="1024" height="301" src="https://cloudrf.com/wp-content/uploads/2026/02/image-1-1024x301.png" alt="" class="wp-image-56054" srcset="https://cloudrf.com/wp-content/uploads/2026/02/image-1-1024x301.png 1024w, https://cloudrf.com/wp-content/uploads/2026/02/image-1-300x88.png 300w, https://cloudrf.com/wp-content/uploads/2026/02/image-1-768x226.png 768w, https://cloudrf.com/wp-content/uploads/2026/02/image-1-416x122.png 416w, https://cloudrf.com/wp-content/uploads/2026/02/image-1.png 1283w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<p>Digging into ATAK&#8217;s preferences we found validation for our theory via the &#8220;Pull Elevation Mode&#8221; option within Elevation Overlays Preferences. The choice between DTED and Highest Resolution suggests this was implemented to support better than DTED data eg. SRTM1. It is not clear if it references DTED0 or SRTM1, which as we&#8217;ve shown could be a +100m error.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><a href="https://cloudrf.com/wp-content/uploads/2026/02/image-5.png" rel="lightbox[56021]"><img loading="lazy" decoding="async" width="870" height="440" src="https://cloudrf.com/wp-content/uploads/2026/02/image-5.png" alt="" class="wp-image-56177" style="aspect-ratio:1.977331657106938;width:754px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2026/02/image-5.png 870w, https://cloudrf.com/wp-content/uploads/2026/02/image-5-300x152.png 300w, https://cloudrf.com/wp-content/uploads/2026/02/image-5-768x388.png 768w, https://cloudrf.com/wp-content/uploads/2026/02/image-5-416x210.png 416w" sizes="auto, (max-width: 870px) 100vw, 870px" /></a></figure>
</div>


<p></p>



<h3 class="wp-block-heading">Some batteries are better than others</h3>



<p>Our goal was to use flight-safe USB power banks which can easily provide the <strong>7-8W of power</strong> needed to run the capability. We ran soak tests in the office to establish a battery life of 6 hours for the smaller 45wH battery. We expected this to be reduced on the mountain so purchased a larger 92wH battery but it failed after 4 hours despite being kept warm inside an insulated jacket.</p>



<p>The smaller battery proved its worth and ran for two hours with only 35% consumption suggesting it would have lasted longer than the larger battery.</p>



<p>During subsequent charging of the large battery it reported unexpected levels suggesting it was likely defective and under performing. </p>



<p><strong>Our conclusion was that you can live-map a network for more than four hours on a small battery, but it must be a reliable one</strong>.</p>



<p></p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>We were happy with the test and the results which showed <strong>solid stability</strong> and <strong>good power economy</strong>. It validated the hardware, the SOOTHSAYER API and most importantly the concept of <strong>edge coverage mapping</strong>.</p>



<p>Given the accuracy issues experienced with GPS data and the deprecated-yet-still-going elevation APIs using low resolution data sources, we have commented out the error prone &#8220;airborne&#8221; logic in our plugin and will only use the fixed altitude(s) defined within the radio template until further notice.</p>



<p><em>Plugin users can edit both the transmit and receive altitudes above ground level by selecting the marker then clicking the pencil.</em></p>



<p class="has-medium-font-size">The ATAK plugin has already been updated and pushed to our <a href="https://github.com/Cloud-RF/SOOTHSAYER-ATAK-plugin/releases">Github repository</a> and Google Play as <a href="https://play.google.com/store/apps/details?id=com.cloudrf.android.soothsayer.plugin">version 2.7.1</a></p>



<p></p>
<p>The post <a href="https://cloudrf.com/live-network-mapping-endurance-test/">Live network mapping endurance test</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>SOOTHSAYER 1.10 released</title>
		<link>https://cloudrf.com/soothsayer-1-10-released/</link>
		
		<dc:creator><![CDATA[CloudRF]]></dc:creator>
		<pubDate>Mon, 08 Sep 2025 12:42:37 +0000</pubDate>
				<category><![CDATA[Self-hosted]]></category>
		<guid isPermaLink="false">https://cloudrf.com/?p=51798</guid>

					<description><![CDATA[<p>Our latest feature release for our self-hosted server is out now and majors on offline data and security hardening. It&#8217;s a release aimed at administrators with six months of CloudRF fixes and features including the noise layer. Offline data packs Since we released pre-built images with 1.9, the setup effort moved from the software installation [&#8230;]</p>
<p>The post <a href="https://cloudrf.com/soothsayer-1-10-released/">SOOTHSAYER 1.10 released</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="has-medium-font-size">Our latest feature release for our self-hosted server is out now and majors on offline data and security hardening. It&#8217;s a release aimed at administrators with six months of CloudRF fixes and features including the noise layer.</p>



<h2 class="wp-block-heading">Offline data packs</h2>



<p>Since we released pre-built images with 1.9, the setup effort moved from the software installation to the <strong>data</strong>. SOOTHSAYER uses elevation, landcover and buildings data on the backend and map tiles for the web interface.</p>



<p>Some customers have the luxury of local GIS teams and tile servers and are able to provide their own data but for many, they need help with sourcing and preparing this data. This where our datapacks comes in.</p>



<p>A SOOTHSAYER data pack is a compressed archive available on our support portal which unpacks to the /data/ folder allowing users to easily install pre-prepared multi-layer data from CloudRF.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://cloudrf.com/wp-content/uploads/2025/09/offline_data.jpg" rel="lightbox[51798]"><img loading="lazy" decoding="async" width="1024" height="271" src="https://cloudrf.com/wp-content/uploads/2025/09/offline_data-1024x271.jpg" alt="" class="wp-image-51843" srcset="https://cloudrf.com/wp-content/uploads/2025/09/offline_data-1024x271.jpg 1024w, https://cloudrf.com/wp-content/uploads/2025/09/offline_data-300x79.jpg 300w, https://cloudrf.com/wp-content/uploads/2025/09/offline_data-768x204.jpg 768w, https://cloudrf.com/wp-content/uploads/2025/09/offline_data-416x110.jpg 416w, https://cloudrf.com/wp-content/uploads/2025/09/offline_data.jpg 1068w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Importing offline data via a script</figcaption></figure>
</div>


<h3 class="wp-block-heading">Ibiza is back</h3>



<p>Long time CloudRF users will recall we used to use the island of Ibiza as a start point and sandbox where users could evaluate the software at no cost. Now, data for the island is included to allow quality commissioning tests to take place. The data includes elevation, landcover, buildings and limited map tiles.</p>



<h2 class="wp-block-heading">Enterprise authentication</h2>



<p>When we implemented Active Directory previously, we hoped that the magic of standards, in this case Lightweight Directory Access Protocol (LDAP), would mean that this works with different servers. As it turned out, it only worked with Microsoft&#8217;s AD server and didn&#8217;t support groups. Some customers are using the open source alternative, FreeIPA, and all were making use of groups for Role Based Access Control (RBAC).</p>



<p>We&#8217;ve <strong>added support for FreeIPA, groups and Secure LDAP</strong> (ldaps) and provide verbose information in the web interface now to help admins quickly resolve issues which may arise with servers and permissions.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://cloudrf.com/wp-content/uploads/2025/09/ad_config.png" rel="lightbox[51798]"><img loading="lazy" decoding="async" width="1024" height="500" src="https://cloudrf.com/wp-content/uploads/2025/09/ad_config-1024x500.png" alt="" class="wp-image-51845" srcset="https://cloudrf.com/wp-content/uploads/2025/09/ad_config-1024x500.png 1024w, https://cloudrf.com/wp-content/uploads/2025/09/ad_config-300x147.png 300w, https://cloudrf.com/wp-content/uploads/2025/09/ad_config-768x375.png 768w, https://cloudrf.com/wp-content/uploads/2025/09/ad_config-416x203.png 416w, https://cloudrf.com/wp-content/uploads/2025/09/ad_config.png 1304w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<p></p>



<h2 class="wp-block-heading">Security hardening</h2>



<p>SOOTHSAYER is a cut of the CloudRF software, minus commercial restrictions, which receives security testing from the internet every single day, and has done for over 12 years. This <strong>public testing</strong> gives us a significant level of data and stress testing to improve our API.</p>



<p>One such area is login security which we&#8217;ve improved <strong>using NIST-800-53 guidance at the application layer</strong> to automatically block brute force attacks and lockout accounts. <em>This functionality can also be implemented at the protocol layer with the web server along with rate limiting</em> <em>as we do on CloudRF.</em></p>



<p>We&#8217;ve taken the decision to remove unused third party features to <strong>reduce the attack surface</strong>, in this case the PGadmin web dashboard for administering the postgres database. This web app presented additional risk, confirmed by a<a href="https://www.cvedetails.com/cve/CVE-2025-2946/"> CVE</a> which appeared recently. Users who activated this optional component are advised to disable or upgrade it.</p>



<p>The postgres database can still be administered using third party clients by exposing its port within the docker compose file which should be protected with a firewall. By design, <strong>the database can not be accessed remotely</strong>. </p>



<h3 class="wp-block-heading">SBOM</h3>



<p>We&#8217;ve never been shy about showing off our software and it&#8217;s components. We ship a full manifest in an open SPDX JSON format to support risk assessments by smarter customers who make <strong>decisions with data not emotions</strong>. These tools are good but lack context and will report false positives for development libraries like Browserify and Cypress which are not used in production. If you have a query about a library in SOOTHSAYER, feel free to <a href="mailto:support@cloudrf.com">ask us</a>.</p>



<p></p>



<h3 class="wp-block-heading">Authentication endpoint</h3>



<p>The user interface authentication endpoint has moved from the user interface into the API following a refactor so what used to be /ui/auth? is now just /auth? with the same parameters. This trivial but significant change will affect users of the ATAK plugin who will need at least version 2.1 with this release which is detailed on the <a href="https://github.com/Cloud-RF/SOOTHSAYER-ATAK-plugin/releases/tag/v2.1">plugin release</a>.  The endpoint accepts a username and password and returns a UID and API key.</p>



<p></p>



<h2 class="wp-block-heading">Noise layer</h2>



<p>Building upon the <a href="https://cloudrf.com/documentation/developer/#/Manage/noiseCreate">noise API </a>we published, the user interface now has a noise layer which can be added to visualise the noise data from the database. The noise floor is visible within the tooltip and noise can be provided direct from cognitive radios, SDRs or spectrum monitoring systems. Several noise API clients are available on our Github page.</p>



<p>The reason for adding all these noise features will become apparent in time when RF heat-maps come alive instead of being frozen in time with an optimistic and common noise value across a city.</p>



<p><em>Noise is the biggest problem in spectrum management and if you ever find a hardware vendor who will admit this rather than sell you more radios (to compound the problem) stick with them.</em></p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://cloudrf.com/wp-content/uploads/2025/09/noise_layer.jpg" rel="lightbox[51798]"><img loading="lazy" decoding="async" width="800" height="600" src="https://cloudrf.com/wp-content/uploads/2025/09/noise_layer.jpg" alt="" class="wp-image-51849" srcset="https://cloudrf.com/wp-content/uploads/2025/09/noise_layer.jpg 800w, https://cloudrf.com/wp-content/uploads/2025/09/noise_layer-300x225.jpg 300w, https://cloudrf.com/wp-content/uploads/2025/09/noise_layer-768x576.jpg 768w, https://cloudrf.com/wp-content/uploads/2025/09/noise_layer-416x312.jpg 416w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a><figcaption class="wp-element-caption">Noise layer in the user interface</figcaption></figure>
</div>


<h2 class="wp-block-heading">Compatibility Matrix</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Operating System</th><th>Architecture</th><th>Tested Docker Version</th><th>Tested Podman Version</th><th>Nvidia Driver</th></tr></thead><tbody><tr><td>JetPack 6 (Ubuntu 24.04)</td><td><code>arm64</code>&nbsp;(<code>aarch64</code>)</td><td>Docker&nbsp;<code>28.3.0</code>&nbsp;Docker Compose&nbsp;<code>2.37.3</code></td><td>&#8211;</td><td><code>540</code>&nbsp;<br>(CUDA&nbsp;<code>12.6</code>)</td></tr><tr><td>RHEL 9.6</td><td><code>amd64</code>&nbsp;(<code>x86_64</code>)</td><td>&#8211;</td><td>Podman&nbsp;<code>5.4.0</code>&nbsp;Podman-Compose&nbsp;<code>1.5.0</code></td><td><code>580</code>&nbsp;<br>(CUDA&nbsp;<code>13.0</code>)</td></tr><tr><td>Rocky 9.6</td><td><code>amd64</code>&nbsp;(<code>x86_64</code>)</td><td>Docker&nbsp;<code>28.3.3</code>&nbsp;Docker Compose&nbsp;<code>2.39.1</code></td><td>Podman&nbsp;<code>5.4.0</code>&nbsp;Podman-Compose&nbsp;<code>1.5.0</code></td><td><code>580</code>&nbsp;<br>(CUDA&nbsp;<code>13.0</code>)</td></tr><tr><td>Ubuntu 24.04</td><td><code>amd64</code>&nbsp;(<code>x86_64</code>)</td><td>Docker&nbsp;<code>28.3.3</code>&nbsp;Docker Compose&nbsp;<code>2.39.1</code></td><td>&#8211;</td><td><code>575</code>&nbsp;<br>(CUDA&nbsp;<code>12.9</code>)</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">Change log</h2>



<ul class="wp-block-list">
<li>Deprecation: Removed pgAdmin (<code>/dbadmin</code>).</li>



<li>Deprecation: Removed&nbsp;<code>cniVersion</code>&nbsp;host change for Podman versions no longer supported.</li>



<li>Deprecation: Removed Cesium ion (3D terrain and buildings &amp; Bing map layer) from the UI due to change in TOS.</li>



<li>Feature: Official support for ARM-64 architecture.</li>



<li>Feature: Added&nbsp;<code>install-data-pack.sh</code>&nbsp;script to allow installation of provided data packages.</li>



<li>Feature: Added LDAP FreeIPA support.</li>



<li>Feature: Added LDAP groups support.</li>



<li>Feature: Added LDAP TLS option.</li>



<li>Feature: Brute force protection for user and admin accounts</li>



<li>Feature: Tile cache for the world to zoom 6 and Ibiza to zoom 14 with local DEM for offline tests/demos.</li>



<li>Feature: Added&nbsp;<code>PHASE_TRACING_ENABLED</code>&nbsp;option to enable/disable the Phase Tracing engine and interface.</li>



<li>Feature: Added&nbsp;<code>USER_INTERFACES_ENABLED</code>&nbsp;option to enable/disable user interfaces.</li>



<li>Feature: Added&nbsp;<code>conf.d</code>&nbsp;directory within&nbsp;<code>config/nginx-frontend</code>&nbsp;to allow extensions of the frontend Nginx container.</li>



<li>Feature: Added minimum version checking of&nbsp;<code>podman</code>&nbsp;and&nbsp;<code>podman-compose</code>&nbsp;during&nbsp;<code>install.sh</code>&nbsp;and&nbsp;<code>update.sh</code>.</li>



<li>Feature: Prompt to allow host&nbsp;<code>vm.overcommit_memory</code>&nbsp;when using RHEL with Docker to allow GPU pass-through.</li>



<li>Feature: Admin dashboard login uses same interface as user login.</li>



<li>Feature: Throw warning in the UI when accessing from address different to&nbsp;<code>SERVICE_FQDN</code>&nbsp;value.</li>



<li>Feature: Added&nbsp;<code>maps.cloudrf.com</code>&nbsp;contours cache to&nbsp;<code>mapproxy.yaml</code>.</li>



<li>Feature: Running SOOTHSAYER&nbsp;<code>update.sh</code>&nbsp;will populate&nbsp;<code>manual_update_steps.txt</code>&nbsp;with any manual stages necessary after an update.</li>



<li>Feature: Added&nbsp;<code>system-details.sh</code>&nbsp;script.</li>



<li>Feature: Added&nbsp;<code>MAP_PROXY_CONFIG</code>&nbsp;value to&nbsp;<code>.env</code>&nbsp;to allow override of MapProxy in online and offline modes.</li>



<li>Feature: SSL certificate is now automatically respun when the&nbsp;<code>SERVICE_FQDN</code>&nbsp;value is updated and contains a SubjectAltName</li>



<li>Feature: UI uses MapProxy cache by default to address the blue map FAQ</li>



<li>Feature: Automatic configuration of online and offline mode during&nbsp;<code>install.sh</code>.</li>



<li>Fix: Get true users IP address in the logs of&nbsp;<code>nginx-frontend</code>&nbsp;container.</li>



<li>Fix: Build failures when using Podman with some RHEL-based operating systems.</li>



<li>Fix:&nbsp;<code>UPLOAD_MAX_FILESIZE_MB</code>&nbsp;is not persistent in some long-running environments.</li>



<li>Fix: Some scripts contain unsupported Podman flags such as project directory</li>



<li>Fix: Upstream MapProxy tile server fails occassionally when requesting via HTTPS.</li>



<li>Fix: GPU containers are not starting on some versions of Podman due to lack of support for compose profiles</li>



<li>Fix:&nbsp;<code>watch.sh</code>&nbsp;script is not working on Podman.</li>



<li>Fix: GPU containers incorrectly showing as offline on Podman.</li>



<li>Fix: Password validation during&nbsp;<code>install.sh</code>&nbsp;was incorrectly checking minimum length</li>



<li>Update: API&nbsp;<code>3.28.0</code>, UI&nbsp;<code>3.20.0</code>, 3D UI&nbsp;<code>1.1.1</code>, CPU Engine&nbsp;<code>1.17.1</code>, GPU Engine&nbsp;<code>1.13.1</code>, 3D Engine&nbsp;<code>0.2.3</code>, AntennaWizard&nbsp;<code>2.1.0</code>, Analysis Utilities (QRM2, SuperTool &amp; NoiseGen)&nbsp;<code>1.1.0</code>, Copy Protection&nbsp;<code>2.0.0</code>, Documentation&nbsp;<code>2.10.0</code>.</li>



<li>Update: CUDA&nbsp;<code>12.1.0</code>&nbsp;container image deprecated.</li>



<li>Update: MapProxy container updated to&nbsp;<code>debian:13.0</code>.</li>
</ul>



<h3 class="wp-block-heading">API</h3>



<h4 class="wp-block-heading">3.28.0 (2025-09-04)</h4>



<ul class="wp-block-list">
<li>Feature: Improved documentation on SOOTHSAYER DEM Manager.</li>



<li>Feature: Added support for&nbsp;<code>frequency</code>&nbsp;filter on&nbsp;<code>/noise</code>&nbsp;endpoint.</li>



<li>Feature: Default location updated to Ibiza.</li>



<li>Feature: SOOTHSAYER system status page now shows services which are online but require a license.</li>



<li>Fix: Public link export is returning a HTTP 500.</li>



<li>Fix: SOOTHSAYER system status page is slow to load in offline environments.</li>



<li>Fix: Increased maximum timeout for&nbsp;<code>/merge</code>&nbsp;and&nbsp;<code>/mesh</code>&nbsp;to be able to handle larger requests.</li>



<li>Fix: Refreshed the warning message when clicking “Reset Database” in the administrator dashboard for SOOTHSAYER.</li>



<li>Fix: Antenna favourite button is not obvious in the antenna manager.</li>
</ul>



<h4 class="wp-block-heading">3.27.0 (2025-07-31)</h4>



<ul class="wp-block-list">
<li>Feature: Terrain map changed to use OSM in dark mode.</li>



<li>Feature: More LDAP configuration options for SOOTHSAYER, including support for Free IPA.</li>



<li>Feature: SOOTHSAYER administration dashboard no login uses HTTP basic authentication.</li>



<li>Feature: added&nbsp;<code>/noise</code>&nbsp;endpoint to allow querying noise in its raw format.</li>



<li>Feature: Added&nbsp;<code>name</code>&nbsp;and&nbsp;<code>group_name</code>&nbsp;arguments when using&nbsp;<code>/noise/create</code>.</li>



<li>Feature: Added&nbsp;<code>group_name</code>&nbsp;argument support when using&nbsp;<code>/noise/get</code>&nbsp;and&nbsp;<code>/noise/clear</code>.</li>



<li>Fix: Noise data no longer expires. Instead it should be deleted if it is outdated.</li>



<li>Fix: Added maximum limit of 1000 entries when submitting with&nbsp;<code>/noise/create</code>.</li>



<li>Fix: Improved file efficiencies when deleting entire archive.</li>



<li>Fix: Best Server with multi-azimuth antenna results in HTTP 500.</li>



<li>Fix: Incorrect&nbsp;<code>mp</code>&nbsp;value being returned from&nbsp;<code>preferences.php</code>&nbsp;when used against SOOTHSAYER.</li>



<li>Fix:&nbsp;<code>/points</code>&nbsp;request with a point too close to a receiver results in a HTTP 500.</li>



<li>Fix: Return error if using&nbsp;<code>bounds</code>&nbsp;with a radius which does not cover the bounds area.</li>



<li>Fix: Exporting public link for a MANET network has a single transmitter in the wrong location.</li>
</ul>



<h4 class="wp-block-heading">3.26.0 (2025-07-03)</h4>



<ul class="wp-block-list">
<li>Feature: Added output-bounded CPU calculations.</li>



<li>Improvement: Engine attenuation/diffraction logic optimised for higher accuracy &amp; GPU speed</li>



<li>Fix: Saving a MANET network fails with multi-azimuth.</li>



<li>Fix: Antenna search is case-sensitive.</li>



<li>Fix: Clutter profiles with spaces and underscores not used in calculations.</li>



<li>Fix: Saving a colour schema with a name of an integer breaks the colour palette manager.</li>



<li>Fix: 3D calculations incorrectly proceeding when model metadata is missing from the database.</li>



<li>Fix: Deleting all data results in a failed rate limit check.</li>
</ul>



<h4 class="wp-block-heading">3.25.0 (2025-05-22)</h4>



<ul class="wp-block-list">
<li>Feature: Noise maps for Area, path, points, multisite APIs. Use noise:database to activate</li>



<li>Fix: Retrieving preferences not honouring values which are more recent.</li>
</ul>



<h4 class="wp-block-heading">3.24.0 (2025-05-20)</h4>



<ul class="wp-block-list">
<li>Improvement: Landcover can be used out to 100km</li>



<li>Improvement: Landcover can be used up to 60m resolution</li>



<li>Improvement: SHP file max size doubled to support high resolution calcs</li>
</ul>



<h3 class="wp-block-heading">UI</h3>



<h4 class="wp-block-heading">3.20.0 (2025-09-04)</h4>



<ul class="wp-block-list">
<li>Feature: Restyle login page.</li>



<li>Feature: Import noise data.</li>



<li>Feature: Added an error page for SOOTHSAYER when request host and configured FQDN do not match.</li>



<li>Feature: Default location updated to Ibiza.</li>



<li>Feature: Local mapping server added automatically to SOOTHSAYER UI.</li>



<li>Fix: Coverage analysis not importing data.</li>



<li>Fix: Saving template fails for environments without a GPU.</li>



<li>Fix: Imported MANET nodes not rendering immediately.</li>



<li>Fix: API requests to&nbsp;<code>progress</code>&nbsp;failing authentication.</li>



<li>Fix: “Stop Processing” button for “Automatic Processing” gets disabled for all instances after pressing one time.</li>
</ul>



<h4 class="wp-block-heading">3.19.0 (2025-07-15)</h4>



<ul class="wp-block-list">
<li>Enhancement: Rotate antenna template plots to match custom plot behaviour</li>
</ul>



<h4 class="wp-block-heading">3.18.0 (2025-07-07)</h4>



<ul class="wp-block-list">
<li>Feature: Non-custom antenna plots are updated to show tilt/azimuth.</li>



<li>Feature: Polygon bounds for area, MANET and BSA calculations.</li>



<li>Fix: Clutter profile reset after using the custom clutter menu.</li>



<li>Fix: Importing MANET results in immediate evalution, rather at the point of confirmation.</li>
</ul>



<h4 class="wp-block-heading">3.17.0 (2025-06-19)</h4>



<ul class="wp-block-list">
<li>Feature: Live noise layer using the noise API</li>



<li>Feature: Live noise reported on tooltip when data available</li>



<li>Enhancement: Updating map selection. Default is contours from Thunderforest via maps.cloudrf.com</li>



<li>Enhancement: Default thresholds when changing bandwidth updated to 5dBuv, 5dB SNR or noise +20 dBm</li>



<li>Enhancement: Local tile server available as a custom layer vs a separate layer</li>



<li>Fix: Loading preferences not adjusting receiver sensitivity slider, causing it to sometimes become out of sync with the true sensitivity value.</li>



<li>Fix: Popup title during validation failure is not set, causing stale title to be used.</li>
</ul>



<h4 class="wp-block-heading">3.16.4 (2025-05-21)</h4>



<ul class="wp-block-list">
<li>Fix: Adjusting bandwidth changed the noise floor in database mode.</li>



<li>Fix: Hidden MANET markers can be moved without triggering API calls</li>



<li>Fix: Marker is changed to Tx when clearing layers in route analysis or multi-point links mode.</li>



<li>Fix: MANET tool SNR links are wrong way around.</li>
</ul>



<h4 class="wp-block-heading">3.16.3 (2025-04-16)</h4>



<ul class="wp-block-list">
<li>Fix: HF Skywave endpoint used for other propagation models after switching back.</li>
</ul>



<h3 class="wp-block-heading">3D UI</h3>



<h4 class="wp-block-heading">1.1.1 (2025-07-30)</h4>



<ul class="wp-block-list">
<li>Fix: Update authentication mechanism to make use of API&nbsp;<code>/auth</code>&nbsp;endpoint.</li>
</ul>



<h3 class="wp-block-heading">CPU Engine</h3>



<h4 class="wp-block-heading">1.17.1 &#8211; 2025-08-08</h4>



<ul class="wp-block-list">
<li>Feature: Added output-bounded calculations.</li>



<li>Feature: Antenna logic moved into shared library.</li>



<li>Fix: Improved accuracy of downtilt angle for path calls where the receiver is above the transmitter.</li>
</ul>



<h4 class="wp-block-heading">1.17.0 &#8211; 2025-06-12</h4>



<ul class="wp-block-list">
<li>Feature: Added new clutter diffraction/attenuation logic.</li>



<li>Improvement: added support for noise geotiffs.</li>
</ul>



<h3 class="wp-block-heading">GPU Engine</h3>



<h4 class="wp-block-heading">1.13.1 (2025-08-08)</h4>



<ul class="wp-block-list">
<li>Feature: Antenna logic moved into shared library.</li>



<li>Fix: Improved accuracy of downtilt angle for path calls where the receiver is above the transmitter.</li>
</ul>



<h4 class="wp-block-heading">1.13.0 (2025-06-12)</h4>



<ul class="wp-block-list">
<li>Feature: Added new clutter diffraction/attenuation logic.</li>



<li>Improvement: Increased performance.</li>



<li>Improvement: added support for noise geotiffs.</li>
</ul>



<h3 class="wp-block-heading">3D Engine</h3>



<h4 class="wp-block-heading">0.2.3 (2025-09-03)</h4>



<ul class="wp-block-list">
<li>Change: Antenna logic moved into shared library.</li>
</ul>



<h4 class="wp-block-heading">0.2.2 (2025-04-16)</h4>



<ul class="wp-block-list">
<li>Fix: Stability improvement to core algorithm</li>
</ul>



<p></p>
<p>The post <a href="https://cloudrf.com/soothsayer-1-10-released/">SOOTHSAYER 1.10 released</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Live RF coverage mapping with ATAK</title>
		<link>https://cloudrf.com/live-rf-coverage-mapping-with-atak/</link>
		
		<dc:creator><![CDATA[CloudRF]]></dc:creator>
		<pubDate>Thu, 07 Aug 2025 15:07:33 +0000</pubDate>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Modelling]]></category>
		<category><![CDATA[Self-hosted]]></category>
		<category><![CDATA[ATAK]]></category>
		<guid isPermaLink="false">https://cloudrf.com/?p=50867</guid>

					<description><![CDATA[<p>Highlights Background Three years ago we developed a &#8220;live&#8221; simulation capability using location-aware MANET radios which we described as dynamic radio planning which fused real and planned radio positions. This feature required a third party hardware API with restrictive terms, common in commercial radio, so it exists as a video demo only. We&#8217;ve refreshed and [&#8230;]</p>
<p>The post <a href="https://cloudrf.com/live-rf-coverage-mapping-with-atak/">Live RF coverage mapping with ATAK</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Highlights</h2>



<ul class="wp-block-list">
<li class="has-medium-font-size">Dynamic radio coverage visualisation</li>



<li class="has-medium-font-size">Vendor agnostic radio integration via ATAK</li>



<li class="has-medium-font-size">450 heat-maps delivered without issue</li>



<li class="has-medium-font-size">Sub-second computation via Cardshark computer</li>
</ul>



<h2 class="wp-block-heading">Background</h2>



<p>Three years ago we developed a &#8220;live&#8221; simulation capability using location-aware MANET radios which we described as <a href="https://cloudrf.com/dynamic-network-planning-with-hardware-apis/">dynamic radio planning</a> which fused real and planned radio positions. This feature required a third party hardware API with restrictive terms, common in commercial radio, so it exists as a video <a href="https://www.youtube.com/watch?v=pXDcHE-3epo">demo only</a>.</p>



<p>We&#8217;ve refreshed and field tested this concept, using modern edge compute and open standards.</p>



<h2 class="wp-block-heading">ATAK as the common API</h2>



<p>Using ATAK as a proprietary API broker, we are now able to do the same via our plugin. The technology agnostic capability <strong>can be used with any radio, vehicle or marker on the map</strong> and by starting with an open information standard, <a href="https://apps.dtic.mil/sti/pdfs/ADA637348.pdf">Cursor-on-Target (CoT)</a>, it eliminates the commercial friction with NDAs, proprietary APIs and different vendors. </p>



<p>Open standards unlock low-cost cross-vendor interoperability in a way proprietary standards never can. For example, two <strong>vendors can achieve compatibility without knowledge of each other&#8217;s products</strong>. Better still, compatibility with future products, not yet deployed, can be assured.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://cloudrf.com/wp-content/uploads/2025/08/soothsayer-atak-coopt-1.jpg" rel="lightbox[50867]"><img loading="lazy" decoding="async" width="1024" height="576" src="https://cloudrf.com/wp-content/uploads/2025/08/soothsayer-atak-coopt-1-1024x576.jpg" alt="" class="wp-image-50900" srcset="https://cloudrf.com/wp-content/uploads/2025/08/soothsayer-atak-coopt-1-1024x576.jpg 1024w, https://cloudrf.com/wp-content/uploads/2025/08/soothsayer-atak-coopt-1-300x169.jpg 300w, https://cloudrf.com/wp-content/uploads/2025/08/soothsayer-atak-coopt-1-768x432.jpg 768w, https://cloudrf.com/wp-content/uploads/2025/08/soothsayer-atak-coopt-1-416x234.jpg 416w, https://cloudrf.com/wp-content/uploads/2025/08/soothsayer-atak-coopt-1.jpg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Mapping live radios in the SOOTHSAYER ATAK plugin</figcaption></figure>
</div>


<h2 class="wp-block-heading">The field test </h2>



<p>We picked a local Forest to field test this concept using a <a href="https://www.carnegierobotics.com/library/cardshark/Cardshark-Data-Sheet.pdf">Cardshark</a> computer which is a rugged Jetson Orin with a 1024 core GPU. We need the GPU to efficiently compute our &#8216;<a href="https://cloudrf.com/documentation/developer/#/Create/multisite">Multisite</a>&#8216; network heat maps. The &#8216;<a href="https://cloudrf.com/documentation/developer/#/Create/points">Points</a>&#8216; links are CPU powered. We&#8217;ve worked with Jetsons on <a href="https://cloudrf.com/rf-planning-at-the-edge/">previous field tests </a>but under manual control. The automation we&#8217;ve added here makes periodic API requests and places the computer under a sustained load.</p>



<p>The radio network was a four Tait 9300 DMR portables on a 2W channel, with one donor radio connected via a USB programming cable. GPS locations were fetched using our <a href="https://github.com/Cloud-RF/CloudRF-API-clients/tree/master/integrations/Tait">Tait script</a> which outputs CoT broadcasts to make them appear (and move) upon the map.</p>



<p>The testing went well and produced 450 heat-maps to validate both the concept and the computer. Crucially, our 9Ah battery depleted only by 25% during 2 hours of intensive testing. Our conclusion is that with a reasonable load and refresh rate this edge capability can be scaled to run all day, <a href="https://cloudrf.com/rf-planning-at-the-edge/">as we found in Scotland</a> earlier this year.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Live RF coverage mapping with ATAK" width="980" height="551" src="https://www.youtube.com/embed/3H3qRLd-6qk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div><figcaption class="wp-element-caption">Live RF coverage mapping with ATAK</figcaption></figure>



<h3 class="wp-block-heading">Speed test!</h3>



<p>Five years ago we asked for the ATAK KML refresh rate to be lowered to enable a <a href="https://www.youtube.com/watch?v=3EUfElXitGM">&#8220;follow me&#8221; demo we published</a> and our understanding is it was capped by design at 10s (compared with 1s for Google Earth) due to a concern over excessive bandwidth which was understandable &#8211; at the time. A lot has changed in five years of software and radios and now we&#8217;re doing the compute locally, this concern is obsolete.</p>



<p>Our GPU engine can model a heatmap in under a second so we bypassed the network KML functionality (which is still a valid way of refreshing heatmaps on ATAK as <a href="https://github.com/Cloud-RF/CloudRF-API-clients/tree/master/integrations/Tait">our Tait plugin does</a>) and implemented our own refresh system, designed for fast moving data. During our speed test, we refreshed the heat-map every 5s which both ATAK and the Cardshark handled comfortably. Logs showed each simulation took under a second with another second for pre/post processing and another for communication. The points requests take 150ms and are called for each radio so four radios would be 600ms, excluding communication.</p>



<h3 class="wp-block-heading">Issues identified</h3>



<p>We identified issues relating to USB tethering which weren&#8217;t apparent in the office: The Cardshark does not have WiFi which we employed for <a href="https://www.youtube.com/watch?v=F6-FsCrehJE">previous field tests </a>so this made communication more challenging.</p>



<p>We were able to workaround this for the test with a WiFi hotspot to fool the plugin into thinking it was on a network.  As we were using dynamic IP addresses provided by the phone and the Cardshark has no interface, we ex-filtrated the IP information we needed via ATAK which is why there is a IP-address-callsign visible in the video.</p>



<p>The Cardshark is a fanless design which requires airflow to cool it. We deployed it in a bum bag / fanny pack where it unsurprisingly became hot during intensive use but still functioned well. For enduring use, this would need to be mounted externally and the workload throttled accordingly.</p>



<p>Our radio template needed work as only afterwards did we note we did not set the DMR template&#8217;s noise floor which defaulted to -133dBm based upon the narrow 12.5KHz bandwidth. This was why there were blue 50dB links visible in the video when in reality the noise floor was likely closer to -113dBm and these links were a more realistic 30dB SNR. <em>This issue did not affect the heatmap which used received power units and we&#8217;re satisfied from <a href="https://cloudrf.com/improving-accuracy-in-the-trees/">calibrating with large data sets</a> that the modelling is accurate.</em></p>



<h2 class="wp-block-heading">Credits</h2>



<p>A special thanks to <a href="https://getgotak.com/">GoTak LLC</a> who helped us develop and test the live Co-Opt feature in ATAK and <a href="https://carnegierobotics.com/">Carnegie Robotics</a> for producing the Cardshark and providing timely support.</p>



<h2 class="wp-block-heading">Links</h2>



<p>SOOTHSAYER self hosted server: <a href="https://cloudrf.com/soothsayer">https://cloudrf.com/soothsayer</a></p>



<p>Cardshark computer: <a href="https://carnegierobotics.com/cardshark">https://carnegierobotics.com/cardshark</a></p>



<p>SOOTHSAYER ATAK plugin: <a href="https://github.com/Cloud-RF/SOOTHSAYER-ATAK-plugin">https://github.com/Cloud-RF/SOOTHSAYER-ATAK-plugin</a></p>



<p>Tait ATAK plugin: <a href="https://github.com/Cloud-RF/CloudRF-API-clients/tree/master/integrations/Tait">https://github.com/Cloud-RF/CloudRF-API-clients/tree/master/integrations/Tait</a></p>



<p>Fanny pack: <a href="https://www.osprey.com/gb/osprey-seral-7-s23?size=One+Size&amp;colour=Black">https://www.osprey.com/gb/osprey-seral-7-s23?size=One+Size&amp;colour=Black</a></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>
<p>The post <a href="https://cloudrf.com/live-rf-coverage-mapping-with-atak/">Live RF coverage mapping with ATAK</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>SOOTHSAYER™ 1.9 released</title>
		<link>https://cloudrf.com/soothsayer-1-9-released/</link>
		
		<dc:creator><![CDATA[CloudRF]]></dc:creator>
		<pubDate>Fri, 04 Apr 2025 12:51:59 +0000</pubDate>
				<category><![CDATA[Self-hosted]]></category>
		<guid isPermaLink="false">https://cloudrf.com/?p=47611</guid>

					<description><![CDATA[<p>Our latest feature release improves offline setup and adds support for HF Skywave, interference analysis and indoor simulation. Offline by default With pre-built images, offline install is now enabled by default. This was developed to both speed up the install, ensure all dependencies are present and correct and automatically assign the domain name / IP [&#8230;]</p>
<p>The post <a href="https://cloudrf.com/soothsayer-1-9-released/">SOOTHSAYER™ 1.9 released</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">Our latest feature release improves offline setup and adds support for HF Skywave, interference analysis and indoor simulation.</h1>



<p></p>



<h2 class="wp-block-heading">Offline by default</h2>



<p>With pre-built images, offline install is now enabled by default. </p>



<p>This was developed to both speed up the install, ensure all dependencies are present and correct and automatically assign the domain name / IP address. IP networking in particular was noted as common support issue so we&#8217;ve put effort into helping users get this right early on in the setup. </p>



<p>We use a lot of open source libraries in our stack and there is no guarantee they will be available or compatible at the point a user decides to build. This stung us after we launched 1.8 when a third party &#8220;npm install&#8221; command later failed causing us to release a patch (1.8.1).</p>



<p><em>A build-your-own option is available to users who wish to generate their own images using our compose script.</em></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="SOOTHSAYER 1.9 offline install" width="980" height="551" src="https://www.youtube.com/embed/AYgDEgZgDkE?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div><figcaption class="wp-element-caption">Offline install in 5 minutes</figcaption></figure>



<h2 class="wp-block-heading">HF Skywave</h2>



<p>Rather than reinvent the wheel, we integrated the popular VOACAP engine into our API as a new model option.  You can use VOACAP via the web interface and API to make HF heatmaps or frequency predictions.</p>



<p>We incorporated feedback from VOACAP experts about the critical relationship between antenna height, take off angle, and the subsequent antenna pattern. The engine uses <strong>HF antenna patterns which are built on-demand</strong> by our API dynamically so you will get the corrected pattern for a given dipole height above the ground.</p>



<p>The HF model was calibrated against published papers and crowd sourced sounding data. You can read more about this in the <a href="https://cloudrf.com/hf-skywave/">HF blog.</a></p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><a href="https://cloudrf.com/wp-content/uploads/2024/11/HF-calibration.jpg" rel="lightbox[47611]"><img loading="lazy" decoding="async" width="1024" height="700" src="https://cloudrf.com/wp-content/uploads/2024/11/HF-calibration-1024x700.jpg" alt="" class="wp-image-42316" style="width:566px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2024/11/HF-calibration-1024x700.jpg 1024w, https://cloudrf.com/wp-content/uploads/2024/11/HF-calibration-300x205.jpg 300w, https://cloudrf.com/wp-content/uploads/2024/11/HF-calibration-768x525.jpg 768w, https://cloudrf.com/wp-content/uploads/2024/11/HF-calibration-416x284.jpg 416w, https://cloudrf.com/wp-content/uploads/2024/11/HF-calibration.jpg 1220w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<h2 class="wp-block-heading">ARM-64 support</h2>



<p>Support for ARM-64 architecture has been officially added now. We field tested this portable edge server concept up a mountain and were very pleased with the power economy of the Nvidia Jetson.</p>



<p>Read more about <a href="https://cloudrf.com/rf-planning-at-the-edge/">the field test </a>from earlier this year.</p>



<h2 class="wp-block-heading">Phase Tracing interface</h2>


<div class="wp-block-image">
<figure class="alignright size-full is-resized"><a href="https://cloudrf.com/wp-content/uploads/2025/01/stairs-teaser.jpg" rel="lightbox[47611]"><img loading="lazy" decoding="async" width="800" height="800" src="https://cloudrf.com/wp-content/uploads/2025/01/stairs-teaser.jpg" alt="" class="wp-image-45980" style="width:360px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2025/01/stairs-teaser.jpg 800w, https://cloudrf.com/wp-content/uploads/2025/01/stairs-teaser-300x300.jpg 300w, https://cloudrf.com/wp-content/uploads/2025/01/stairs-teaser-150x150.jpg 150w, https://cloudrf.com/wp-content/uploads/2025/01/stairs-teaser-768x768.jpg 768w, https://cloudrf.com/wp-content/uploads/2025/01/stairs-teaser-324x324.jpg 324w, https://cloudrf.com/wp-content/uploads/2025/01/stairs-teaser-416x416.jpg 416w, https://cloudrf.com/wp-content/uploads/2025/01/stairs-teaser-100x100.jpg 100w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></figure>
</div>


<p>A new 3D interface with BYO models&nbsp;designed for urban simulations with multi-path, material properties, phase tracking and support for the glTF 3d model format. </p>



<p>This builds upon the 3D API which shipped with 1.8 last year.</p>



<p>Read more about Phase Tracing in <a href="https://cloudrf.com/phase-tracing-interface/">the blog</a>.</p>


<div class="wp-block-image">
<figure class="alignleft size-large is-resized"><a href="https://cloudrf.com/wp-content/uploads/2024/06/GlTF_logo.svg_.png" rel="lightbox[47611]"><img loading="lazy" decoding="async" width="1024" height="536" src="https://cloudrf.com/wp-content/uploads/2024/06/GlTF_logo.svg_-1024x536.png" alt="" class="wp-image-34108" style="width:143px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2024/06/GlTF_logo.svg_-1024x536.png 1024w, https://cloudrf.com/wp-content/uploads/2024/06/GlTF_logo.svg_-300x157.png 300w, https://cloudrf.com/wp-content/uploads/2024/06/GlTF_logo.svg_-768x402.png 768w, https://cloudrf.com/wp-content/uploads/2024/06/GlTF_logo.svg_-416x218.png 416w, https://cloudrf.com/wp-content/uploads/2024/06/GlTF_logo.svg_.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<p></p>



<p></p>



<p></p>



<p></p>



<h2 class="wp-block-heading">Enhanced interference analysis</h2>


<div class="wp-block-image">
<figure class="alignleft size-large is-resized"><a href="https://cloudrf.com/wp-content/uploads/2025/04/co-site-interference-analysis.jpg" rel="lightbox[47611]"><img loading="lazy" decoding="async" width="1024" height="576" src="https://cloudrf.com/wp-content/uploads/2025/04/co-site-interference-analysis-1024x576.jpg" alt="" class="wp-image-47642" style="width:488px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2025/04/co-site-interference-analysis-1024x576.jpg 1024w, https://cloudrf.com/wp-content/uploads/2025/04/co-site-interference-analysis-300x169.jpg 300w, https://cloudrf.com/wp-content/uploads/2025/04/co-site-interference-analysis-768x432.jpg 768w, https://cloudrf.com/wp-content/uploads/2025/04/co-site-interference-analysis-416x234.jpg 416w, https://cloudrf.com/wp-content/uploads/2025/04/co-site-interference-analysis.jpg 1046w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<p>Interference analysis had a significant upgrade in December to enable support for co-site interference and network analysis.</p>



<p>Now you can compare entire networks to see how they might interfere and get a visualisation of the impact of bandwidth and power on adjacent channels.</p>



<p>Read more in <a href="https://cloudrf.com/interference-analysis/">the interference blog.</a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Interference analysis with SSRF XML" width="980" height="551" src="https://www.youtube.com/embed/xACUDSXI-jc?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div><figcaption class="wp-element-caption">Interference analysis using published spectrum sharing standards</figcaption></figure>



<h2 class="wp-block-heading">Deprecated features</h2>



<p>As a small software company we cannot add features indefinitely. We have therefore retired the following interfaces in line with CloudRF:</p>



<h3 class="wp-block-heading">Google Earth desktop interface</h3>



<p>This was getting harder to support with every new Javascript feature as it&#8217;s Webkit browser was frozen in time since they focused effort on the web based version. You can still export to KMZ and open in Google Earth.</p>



<h3 class="wp-block-heading">TAK chatbot</h3>



<p>We made this in 2021 to <a href="https://cloudrf.com/how-not-to-write-a-tak-plugin/">avoid</a> writing an Android app as we have scars from Android development going back to 2012. The first version used the taky TAK server which was then rewritten for the OG TAK server. As a result we ended up learning a lot about TAK and our <a href="https://github.com/Cloud-RF/tak-server">open source setup script</a> became one of the most popular non-DoD TAK Server repos on Github.</p>



<p>We now have a signed <a href="https://cloudrf.com/atak-plugin/">ATAK plugin</a> which does not need a TAK server so is much easier <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<h2 class="wp-block-heading">Product Flyer</h2>



<div class="wp-block-file"><a id="wp-block-file--media-2b918b93-9d1d-4e9a-82fc-16cfaf3ade35" href="https://cloudrf.com/wp-content/uploads/2025/03/SOOTHSAYER-2025-flyer.hd_.pdf">SOOTHSAYER-2025-flyer.hd_</a><a href="https://cloudrf.com/wp-content/uploads/2025/03/SOOTHSAYER-2025-flyer.hd_.pdf" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-2b918b93-9d1d-4e9a-82fc-16cfaf3ade35">Download</a></div>



<h2 class="wp-block-heading">Security</h2>



<p>Anchore compatible SPDX-2.3 SBOM available upon request.</p>



<p>SHA1 Checksum: </p>



<pre class="wp-block-code"><code>411f309d9e228b0238e6918d15bc4e5bd7803a93  SOOTHSAYER-1.9_OFFLINE.zip</code></pre>



<h1 class="wp-block-heading">SOOTHSAYER<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Changelog</h1>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#soothsayer-changelog"></a></p>



<h2 class="wp-block-heading">1.9.0 04/2025</h2>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#190-042025"></a></p>



<ul class="wp-block-list">
<li>Update: API&nbsp;<code>3.23.1</code>, UI&nbsp;<code>3.16.2</code>, 3D UI&nbsp;<code>1.1.0</code>, CPU Engine&nbsp;<code>1.16.0</code>, GPU Engine&nbsp;<code>1.12.0</code>, 3D Engine&nbsp;<code>0.2.1</code>, AntennaWizard&nbsp;<code>2.0.5</code>, Bouncyball&nbsp;<code>0.4.3</code>, Analysis Utilities (QRM2 &amp; SuperTool)&nbsp;<code>1.0.0</code>, Documentation&nbsp;<code>2.9.0</code>.</li>



<li>Update: pgAdmin container updated to&nbsp;<code>8.14</code>.</li>



<li>Update: PHP updated to&nbsp;<code>8.4</code>.</li>



<li>Feature: Support for HF Skywave.</li>



<li>Feature: Added binaries for new processing of interference and superlayer.</li>



<li>Feature: Added new 3D UI &#8211; available at&nbsp;<code>/phase-tracing</code>.</li>



<li>Feature: Added new&nbsp;<code>install.sh</code>,&nbsp;<code>start.sh</code>,&nbsp;<code>stop.sh</code>, and&nbsp;<code>watch.sh</code>&nbsp;scripts to simplify management.</li>



<li>Feature: Added support for importing pre-built containers for offline environments.</li>



<li>Feature: Improved automatic assistance with setting FQDN during install.</li>



<li>Feature: Improved conditional logic for GPU and non-GPU environments.</li>



<li>Feature: Reduced size of&nbsp;<code>soothsayer-network</code>&nbsp;from /24 to /28 to reduce opportunity for network subnet overlap.</li>



<li>Fix: Removed use of Docker&nbsp;<code>hello-world</code>&nbsp;for checking Docker permissions.</li>



<li>Fix: Improved timeout delays when serving cached tiles from MapProxy.</li>



<li>Fix:&nbsp;<code>/dbadmin</code>&nbsp;endpoint not working for non-standard HTTP/HTTPS ports.</li>



<li>Fix: Changing database password in the admin dashboard doesn&#8217;t change password within&nbsp;<code>/dbadmin</code>.</li>



<li>Fix: Updated default&nbsp;<code>TLE_CATALOG_URL</code>&nbsp;value.</li>
</ul>



<h3 class="wp-block-heading">API</h3>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#api"></a></p>



<h4 class="wp-block-heading">3.23.1 (2025-04-03)</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#3231-2025-04-03"></a></p>



<ul class="wp-block-list">
<li>Fix: Points data endpoint failed when using legacy colour keys.</li>
</ul>



<h4 class="wp-block-heading">3.23.0 (2025-03-18)</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#3230-2025-03-18"></a></p>



<ul class="wp-block-list">
<li>Fix: BSA restricted receiver sensitivity unnecessarily.</li>



<li>Fix: BSA forced to FSPL and no diffraction for all requests.</li>



<li>Fix: Terrain data map throws a 400 at low zoom levels.</li>
</ul>



<h4 class="wp-block-heading">3.22.0 (2025-02-27)</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#3220-2025-02-27"></a></p>



<ul class="wp-block-list">
<li>Deprecation: Removed&nbsp;<code>v1</code>&nbsp;API endpoints (key=value), deprecated since Dec 2022</li>



<li>Deprecation: TAK chatbot removed now we have an ATAK plugin</li>



<li>Feature: Added colour schema to URL export.</li>



<li>Feature: Added favourite sorting to antenna database.</li>



<li>Fix: Empty colour schema file being written to&nbsp;<code>archive</code>&nbsp;when requesting KMZ files.</li>



<li>Fix: Added handler to prevent creation of clutter profiles with system profile names.</li>



<li>Fix: Unable to delete clutter profiles which contain certain characters.</li>



<li>Fix: Improved validtions when creating a bad clutter profile.</li>



<li>Fix: Improved error message for GPU engine over ocean.</li>
</ul>



<h4 class="wp-block-heading">3.21.0 (2025-02-18)</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#3210-2025-02-18"></a></p>



<ul class="wp-block-list">
<li>Improvement: Increase maximum reflections limit to 25.</li>



<li>Change: Uploaded model textures are compressed on upload</li>



<li>Feature: Credit-based purchases removed from API.</li>



<li>Feature: Users on free plan can upload 3D models.</li>



<li>Feature: Added &#8220;Raw Request&#8221; to KMZ balloon.</li>



<li>Feature: Improved system clean-up of stale files.</li>



<li>Improvement: Increase maximum reflections limit to 25.</li>



<li>Improvement: Show &#8220;No LOS&#8221; with PPA PNG chart if LOS blocked with LOS model</li>



<li>Change: Uploaded model textures are compressed on upload</li>



<li>Fix: Improve validations on&nbsp;<code>edges</code>&nbsp;for BSA requests.</li>



<li>Fix: Custom colour schema support for negative step sizes.</li>



<li>Fix: Custom colour schema step size of&nbsp;<code>0</code>&nbsp;triggers a loop.</li>
</ul>



<h4 class="wp-block-heading">3.20.0 (2025-01-22)</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#3200-2025-01-22"></a></p>



<ul class="wp-block-list">
<li>Fix: Added restriction to&nbsp;<code>/mesh</code>&nbsp;and&nbsp;<code>/merge</code>&nbsp;endpoint where sites must be within 40 degrees of each other.</li>



<li>Fix: Input model filenames with spaces would fail 3D calculations.</li>



<li>Fix: 3D calculations sometimes incorrectly returning previous responses.</li>



<li>Fix: HF NVIS calculations not working.</li>



<li>Fix: Incorrectly translating hex code of&nbsp;<code>ff</code>&nbsp;to RGB value of&nbsp;<code>254</code>&nbsp;for red and green channels when creating a custom colour key.</li>



<li>Fix: Downloading greyscale calculations as SHP alters the source file which causes other analysis tools to fail.</li>



<li>Fix: Sending a request to&nbsp;<code>/area</code>&nbsp;without an&nbsp;<code>output.out</code>&nbsp;value results in a HTTP 500.</li>
</ul>



<h4 class="wp-block-heading">3.19.0 (2024-12-30)</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#3190-2024-12-30"></a></p>



<ul class="wp-block-list">
<li>Improvement: Better handling of streaming large files.</li>



<li>Feature: Added&nbsp;<code>/3d/models</code>&nbsp;and&nbsp;<code>/3d/model/delete</code>&nbsp;endpoints.</li>



<li>Feature: Antenna file uploading moved into Antenna Wizard.</li>



<li>Fix: MANET tool reporting validation errors with RCS, even when RADAR mode isn&#8217;t used.</li>



<li>Fix: Favouriting antenna patterns sometimes is not always reflected with the favourite button.</li>



<li>Fix: Uploading of some 3D models incorrectly failing validation.</li>



<li>Fix: Improved validation when uploading small and large models.</li>



<li>Fix: Some requests fail where a user agent header is not sent to the API.</li>



<li>Fix: Antenna database filters now reset the page number.</li>



<li>Fix: Some environment values not persisting after multisite or satellite calculations.</li>



<li>Fix: Validation error when using database noise on multisite requests.</li>
</ul>



<h4 class="wp-block-heading">3.18.0 (2024-12-12)</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#3180-2024-12-12"></a></p>



<ul class="wp-block-list">
<li>Enhancement: Allow custom per-bucket colour when creating custom colour schemas.</li>



<li>Enhancement: Upgraded&nbsp;<code>/inteference</code>&nbsp;to show JS ratio instead of just which site is strongest.</li>



<li>Improvement: Increased the speed of the&nbsp;<code>/mesh</code>&nbsp;endpoint, and added an alias&nbsp;<code>/merge</code>.</li>



<li>Improvement: Added controls to Antenna Wizard.</li>



<li>Fix: Colour schema editor doesn&#8217;t give warning if name is invalid.</li>



<li>Fix: Colour schema buckets will style the label according to the brightness of the background.</li>



<li>Fix: Some CPU calculations failing if input files contained spaces.</li>
</ul>



<h4 class="wp-block-heading">3.17.0 (2024-11-25)</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#3170-2024-11-25"></a></p>



<ul class="wp-block-list">
<li>Improvement: Added support for compressed glTF models</li>



<li>Improvement: Extended noise API to handle array of values.</li>



<li>Fix: Fixed points kmz url.</li>



<li>Fix: Landcover and buildings always returned as enabled from preferences.</li>



<li>Fix: Differing logic relating to noise limits.</li>



<li>Fix: SNR units reporting as BER when sensitivity out of range.</li>
</ul>



<h4 class="wp-block-heading">3.16.0 (2024-11-11)</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#3160-2024-11-11"></a></p>



<ul class="wp-block-list">
<li>Feature: Added HF Skywave APIs&nbsp;<code>/hf/area</code>&nbsp;and&nbsp;<code>/hf/prediction</code></li>
</ul>



<h3 class="wp-block-heading">UI</h3>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#ui"></a></p>



<h4 class="wp-block-heading">3.16.2 (2025-04-03)</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#3162-2025-04-03"></a></p>



<ul class="wp-block-list">
<li>Fix: Maximum altitude of 120,000 to align with API.</li>



<li>Fix: Disable engine toggle when loading in a flight path.</li>



<li>Fix: Calibration mode has redundant button to enable multipoint links.</li>



<li>Fix: Download report failing on some browsers. Moved the report within a modal window.</li>
</ul>



<h4 class="wp-block-heading">3.16.1 (2025-03-31)</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#3161-2025-03-31"></a></p>



<ul class="wp-block-list">
<li>Deprecated: Google Earth layer removed.</li>



<li>Feature: Added example long format CSV file to help for automatic processing.</li>



<li>Fix: Antenna not set during interface load or during selection of a template.</li>



<li>Fix: Automatic processing fails if colour schema name is only numeric.</li>



<li>Fix: Clearing layers changes radius after HF Skywave model has been used.</li>



<li>Fix: BSA mode removes Tx marker to avoid confusion.</li>



<li>Fix: BSA mode disables adjustment of model and diffraction to avoid confusion.</li>



<li>Fix: Mesh download title was undefined.</li>



<li>Fix: Loading calculations from the archive didn&#8217;t set colour key correctly.</li>
</ul>



<h4 class="wp-block-heading">3.16.0 (2025-02-27)</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#3160-2025-02-27"></a></p>



<ul class="wp-block-list">
<li>Feature: Added &#8220;Select all&#8221; to archive.</li>



<li>Improvement: Give modal warning when deleting a network from the archive.</li>



<li>Improvement: Show &#8220;No LOS&#8221; with PPA chart if LOS is blocked and LOS model is selected.</li>



<li>Improvement: Show&nbsp;<code>calculation_adjusted</code>&nbsp;messages for interference tool.</li>



<li>Improvement: Clicking success/error icon with &#8220;Automatic processing&#8221; shows debug info.</li>



<li>Fix: No feedback when using archive functions without selecting a calculation.</li>



<li>Fix: &#8216;invalid&#8217; metrics entries.</li>



<li>Fix: Environment values not set from template.</li>



<li>Fix: Gain from a template gets replaced after loading a template.</li>



<li>Fix: Retrieving a&nbsp;<code>null</code>&nbsp;antenna upon load.</li>



<li>Fix: Satellite mode does not reference API.</li>



<li>Fix: Colour key replaced with a&nbsp;<code>dBm</code>&nbsp;equivalent after using &#8220;Manage My Colours&#8221;.</li>



<li>Fix: Operator mode is giving option for custom antenna patterns.</li>
</ul>



<h4 class="wp-block-heading">3.15.0 (2024-12-12)</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#3150-2024-12-12"></a></p>



<ul class="wp-block-list">
<li>Improvement: Intereference analysis lets you compare two networks</li>



<li>Improvement: Colour picker lets you define full custom values and colours</li>



<li>Fix: Interference analysis docs link updated</li>



<li>Fix: Loading some layers from archive throw antenna validation error when &#8220;Custom pattern&#8221; is selected.</li>



<li>Fix: Coverage analysis values have overly high precision.</li>
</ul>



<h4 class="wp-block-heading">3.14.0 (2024-11-11)</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#3140-2024-11-11"></a></p>



<ul class="wp-block-list">
<li>Feature: Added HF Skywave propagation model</li>
</ul>



<h3 class="wp-block-heading">3D UI</h3>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#3d-ui"></a></p>



<h4 class="wp-block-heading">1.1.0 (2025-04-03)</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#110-2025-04-03"></a></p>



<ul class="wp-block-list">
<li>Feature: Added GLB export menu.</li>



<li>Feature: Added a toggleable scale indicator.</li>



<li>Feature: Wireframe mode improved by removing interaction with light sources which create strange effects.</li>



<li>Fix: Wireframe mode is broken on some models.</li>



<li>Fix: Saving scene is not correctly loading from cached values.</li>



<li>Fix: Antenna pattern rendering not depth-checked.</li>



<li>Fix: Loading models from cache not working.</li>
</ul>



<h4 class="wp-block-heading">1.0.0 (2025-01-30)</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#100-2025-01-30"></a></p>



<ul class="wp-block-list">
<li>Initial release.</li>
</ul>



<h3 class="wp-block-heading">CPU Engine</h3>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#cpu-engine"></a></p>



<h4 class="wp-block-heading">1.16.0 &#8211; 2025-03-19</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#1160---2025-03-19"></a></p>



<ul class="wp-block-list">
<li>Fix: Pathloss colour bins were offset.</li>
</ul>



<h4 class="wp-block-heading">1.15.0 &#8211; 2025-01-30</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#1150---2025-01-30"></a></p>



<ul class="wp-block-list">
<li>Fix: Opening a .ter file did not update its atime.</li>
</ul>



<h4 class="wp-block-heading">1.14.0 &#8211; 2024-12-12</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#1140---2024-12-12"></a></p>



<ul class="wp-block-list">
<li>Improvement: Antenna pattern interpolation.</li>



<li>Improvement: Write a .json file with metadata</li>



<li>Change: Write RGBA images so as to reduce post-processing</li>
</ul>



<h3 class="wp-block-heading">GPU Engine</h3>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#gpu-engine"></a></p>



<h4 class="wp-block-heading">1.12.0 (2025-03-19)</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#1120-2025-03-19"></a></p>



<ul class="wp-block-list">
<li>Feature: Added CUDA fast math flag to release builds.</li>



<li>Deprecation: Removed CUDA architecture 87.</li>



<li>Improvement: Calibration against CPU engine for different units.</li>



<li>Improvement: Values between the colour key and rxs are output as black.</li>



<li>Fix: SNR colour keys with negative numbers are now handled correctly.</li>
</ul>



<h4 class="wp-block-heading">1.11.0 (2025-01-30)</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#1110-2025-01-30"></a></p>



<ul class="wp-block-list">
<li>Improvement: Increase per-thread sleep to reduce power consumption.</li>
</ul>



<h4 class="wp-block-heading">1.10.2 (2024-12-12)</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#1102-2024-12-12"></a></p>



<ul class="wp-block-list">
<li>Fix: Removed antenna pattern artifact at azimuth 0 and 90.</li>



<li>Improvement: More accurate area/coverage calculation.</li>
</ul>



<h3 class="wp-block-heading">3D Engine</h3>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#3d-engine"></a></p>



<h4 class="wp-block-heading">0.2.1 (2025-03-19)</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#021-2025-03-19"></a></p>



<ul class="wp-block-list">
<li>Improvement: Refraction attenuation is now per meter</li>



<li>Fix: Fixed overflow resulting in random hot spots</li>



<li>Fix: Reflection attenuation was applied before the incident</li>



<li>Build: Added cuda fast math flag to release builds</li>



<li>Build: Removed cuda architecture 87</li>



<li>Build: Commented-out unused code to reduce binary size</li>
</ul>



<h4 class="wp-block-heading">0.2.0 (2025-01-17)</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#020-2025-01-17"></a></p>



<ul class="wp-block-list">
<li>Performance: Only generate photons on collisions, not along the whole path</li>



<li>Improvement: Photons can be exported as a GLB for debug purposes</li>



<li>Improvement: Material refraction coefficient can be set</li>



<li>Fix: Photons were invalidated when the movement distance was to small, preventing refracting through more than one voxel</li>



<li>Fix: AllInRadius mode was summing all the photons that didn&#8217;t belong to a given transmitter ID, rather than all the ones that did</li>



<li>Fix: Refraction loss was not scaled by voxel size</li>
</ul>



<h4 class="wp-block-heading">0.1.1 (2024-11-12)</h4>



<p><a href="https://github.com/Cloud-RF/documentation/blob/soothsayer-1.9.0/markdown-soothsayer/06_changelog.md#011-2024-11-12"></a></p>



<ul class="wp-block-list">
<li>Improvement: Draco compressed models are now supported</li>



<li>Fix: Diffusion was not being passed on correctly</li>



<li>Improvement: Antenna pattern model size can be changed</li>



<li>Fix: Engine was not restarted on fatal cuda error</li>



<li>Fix: Idle CPU usage was too high</li>
</ul>



<p></p>
<p>The post <a href="https://cloudrf.com/soothsayer-1-9-released/">SOOTHSAYER™ 1.9 released</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>RF planning at the Edge</title>
		<link>https://cloudrf.com/rf-planning-at-the-edge/</link>
		
		<dc:creator><![CDATA[CloudRF]]></dc:creator>
		<pubDate>Mon, 24 Feb 2025 12:35:39 +0000</pubDate>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Self-hosted]]></category>
		<guid isPermaLink="false">https://cloudrf.com/?p=46602</guid>

					<description><![CDATA[<p>Developments in containerised software and portable GPU hardware have enabled RF simulation at the network edge. Field testing has proven this powerful capability can serve multiple clients from a small battery for a sustained period of time. Key findings Test setup An Nvidia Jetson Orin nano 8GB processor was paired with a 10AH 12v battery [&#8230;]</p>
<p>The post <a href="https://cloudrf.com/rf-planning-at-the-edge/">RF planning at the Edge</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Developments in containerised software and portable GPU hardware have enabled RF simulation at the network edge. Field testing has proven this powerful capability can serve multiple clients from a small battery for a sustained period of time.</h2>



<p></p>



<h2 class="wp-block-heading">Key findings</h2>



<ul class="wp-block-list">
<li>Offline operation for over 6 hours</li>



<li>Average 4W power consumption</li>



<li>Fan draws most power over a day</li>



<li>Nvidia Jetson power profile recorded</li>



<li>Phones are tricky to operate with gloves</li>
</ul>



<h2 class="wp-block-heading">Test setup</h2>



<p>An Nvidia <a href="https://www.nvidia.com/en-gb/autonomous-machines/embedded-systems/jetson-orin/nano-super-developer-kit/">Jetson Orin nano</a> 8GB processor was paired with a <a href="https://www.amazon.co.uk/dp/B06Y5G3C8Z/">10AH 12v battery</a> in a portable case. </p>



<p>This was assembled and demonstrated earlier in January with <a href="https://www.youtube.com/watch?v=F6-FsCrehJE">this video</a>.</p>



<figure class="wp-block-gallery aligncenter has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-full"><a href="https://cloudrf.com/wp-content/uploads/2025/02/image.png" rel="lightbox[46602]"><img loading="lazy" decoding="async" width="1000" height="836" data-id="46609" src="https://cloudrf.com/wp-content/uploads/2025/02/image.png" alt="" class="wp-image-46609" srcset="https://cloudrf.com/wp-content/uploads/2025/02/image.png 1000w, https://cloudrf.com/wp-content/uploads/2025/02/image-300x251.png 300w, https://cloudrf.com/wp-content/uploads/2025/02/image-768x642.png 768w, https://cloudrf.com/wp-content/uploads/2025/02/image-416x348.png 416w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></a></figure>



<figure class="wp-block-image size-full"><a href="https://cloudrf.com/wp-content/uploads/2025/02/image-2.png" rel="lightbox[46602]"><img loading="lazy" decoding="async" width="994" height="869" data-id="46611" src="https://cloudrf.com/wp-content/uploads/2025/02/image-2.png" alt="" class="wp-image-46611" srcset="https://cloudrf.com/wp-content/uploads/2025/02/image-2.png 994w, https://cloudrf.com/wp-content/uploads/2025/02/image-2-300x262.png 300w, https://cloudrf.com/wp-content/uploads/2025/02/image-2-768x671.png 768w, https://cloudrf.com/wp-content/uploads/2025/02/image-2-416x364.png 416w" sizes="auto, (max-width: 994px) 100vw, 994px" /></a></figure>
</figure>



<p>The following software and services were installed to provide a representative stack:</p>



<ul class="wp-block-list">
<li><a href="https://github.com/Cloud-RF/tak-server">TAK server 5.3 with PostgreSQL 15.11</a></li>



<li>Hostapd for a WiFi AP service</li>



<li>DNSmasq for a DHCP service</li>



<li><a href="https://cloudrf.com/soothsayer/">SOOTHSAYER 1.8</a></li>
</ul>



<p>Instrumentation was performed using the onboard tegrastats utility every second. This provided load data at a 1Hz refresh rate throughout the test. Two ATAK end user devices (Samsung S21 and S23) were associated with the WiFi AP and SOOTHSAYER server via the open source <a href="https://github.com/Cloud-RF/SOOTHSAYER-ATAK-plugin">soothsayer plugin</a> with distinct accounts for parallel processing.</p>



<p>Each phone was associated with the TAK server using TLS authentication. This served no purpose other than to show us a green light in the corner of the phone to prove IP connectivity which would be needed to use the (IP) plugin.</p>



<p>The last time we went <a href="https://cloudrf.com/field-testing-diffraction/">field testing up a mountain</a> we struggled with sound and wind so bought a lapel microphone so we could provide a detailed narrative whilst on a windy summit. This detail helped immensely with post analysis as we were able to identify details from the video which weren&#8217;t noted at the time.</p>



<h2 class="wp-block-heading">Test results</h2>



<p>A rugged 20km Scottish mountain route was selected over a period of 6 hours on a relatively mild day with still air temperatures in single digits celsius. Tests were performed periodically after long intervals to simulate real use with increasing difficulty: The first test being a single <a href="https://cloudrf.com/documentation/developer/#/Create/area">area </a>calculation at 1MP resolution.</p>



<p>This was followed by a 4MP calculation which was later followed by a intensive stress test with two clients performing <em>concurrent </em><a href="https://cloudrf.com/documentation/developer/#/Create/multisite">multi-site</a> calculations.  <em>A multi-site calculation simulates several sites in a single API call and requires a GPU.</em></p>



<p>A final test was concluded at the car park where we were pleased to discover 2 of the 4 LEDs were lit on the battery. This video contains more detail of our hardware craftsmanship than we chose to share and is available upon request.</p>



<h2 class="wp-block-heading">System startup</h2>



<p>The server was prepared en-route and required it&#8217;s clock to be set manually since it had no internet access. This clock setting was necessary for both test results and SOOTHSAYER&#8217;s rate limiting which uses time stamps to ensure each user is waiting at least one second between API calls. Unlike the public system, SOOTHSAYER has no upper API limit.</p>



<p>The OS was ready after a minute and the software services ready after approximately another minute. The first, and largest (7W) power spike in the data was the first test from the plugin prior to departure at the car park. This was assessed to be larger than others due to <a href="https://docs.nvidia.com/cuda/cutensor/latest/just_in_time_compilation.html">Just In Time (JIT)</a> compilation of the GPU kernel.  The SOOTHSAYER GPU engine is noticeably slower for the first calculation for this reason, which is expected behaviour.</p>



<h2 class="wp-block-heading">Test 1 &#8211; VHF handheld, 1 million pixels</h2>



<p>This test was conducted an hour after startup whilst walking along. The template used was a VHF handheld radio with 10km radius and 20m resolution for a total of 1 million points. As you can see from the video it concluded quickly.</p>



<figure class="wp-block-video"><video height="720" style="aspect-ratio: 1280 / 720;" width="1280" controls src="https://cloudrf.com/wp-content/uploads/2025/02/jetson-test1.mp4"></video><figcaption class="wp-element-caption">Calculating VHF mobile coverage on the move</figcaption></figure>



<h2 class="wp-block-heading">Test 2 &#8211; VHF repeater, 4 million pixels</h2>



<p>This test was conducted after 2.5 hours after climbing up to the snowline. A VHF repeater template with 20km radius and 20m resolution was used for a 4 million point calculation. This was noticeably slower than the previous test due to the increased computation required.</p>



<figure class="wp-block-video"><video height="720" style="aspect-ratio: 1280 / 720;" width="1280" controls src="https://cloudrf.com/wp-content/uploads/2025/02/jetson-test2.mp4"></video><figcaption class="wp-element-caption">Calculating VHF repeater coverage up a mountain</figcaption></figure>



<h2 class="wp-block-heading">Test 3 &#8211; Multi client stress test</h2>



<p>This test was conducted on a cold summit after 3.5 hours of operation. This time, two clients were used to stress test the server with concurrent requests. The requests were more complex multi site API calls which models an entire network versus a single site. As well as GPU heatmaps, the CPU was employed to create links between the radios. Due to the steep topography and random test locations, not many viable links were displayed.</p>



<figure class="wp-block-video"><video height="720" style="aspect-ratio: 1280 / 720;" width="1280" controls src="https://cloudrf.com/wp-content/uploads/2025/02/jetson-test3.mp4"></video><figcaption class="wp-element-caption">Server stress testing on a mountain top</figcaption></figure>



<h2 class="wp-block-heading">Power consumption</h2>



<p>The 1Hz data was collected with tegrastats and showed good power economy. The jetson fan kicks in around 43C and spins up then slows which is visible throughout the data as a saw tooth pattern.</p>



<p>The 3 degree temperate spike during the ascent at 2 hours occurred in a sheltered ravine. Our assessment is that the simple case was suitable for the winter conditions but would require a case with improved cooling for use elsewhere.</p>



<p>The notable temperate drop occurred on a mountain top during filming of test 3 when the box was exposed. </p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><a href="https://cloudrf.com/wp-content/uploads/2025/02/jetson-metrics.png" rel="lightbox[46602]"><img loading="lazy" decoding="async" width="1024" height="540" src="https://cloudrf.com/wp-content/uploads/2025/02/jetson-metrics-1024x540.png" alt="" class="wp-image-46618" style="width:866px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2025/02/jetson-metrics-1024x540.png 1024w, https://cloudrf.com/wp-content/uploads/2025/02/jetson-metrics-300x158.png 300w, https://cloudrf.com/wp-content/uploads/2025/02/jetson-metrics-768x405.png 768w, https://cloudrf.com/wp-content/uploads/2025/02/jetson-metrics-1536x810.png 1536w, https://cloudrf.com/wp-content/uploads/2025/02/jetson-metrics-416x219.png 416w, https://cloudrf.com/wp-content/uploads/2025/02/jetson-metrics.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Test power and temperature data</figcaption></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><a href="https://cloudrf.com/wp-content/uploads/2025/02/jetson-boot-1.jpg" rel="lightbox[46602]"><img loading="lazy" decoding="async" width="1024" height="540" src="https://cloudrf.com/wp-content/uploads/2025/02/jetson-boot-1-1024x540.jpg" alt="" class="wp-image-46709" style="width:870px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2025/02/jetson-boot-1-1024x540.jpg 1024w, https://cloudrf.com/wp-content/uploads/2025/02/jetson-boot-1-300x158.jpg 300w, https://cloudrf.com/wp-content/uploads/2025/02/jetson-boot-1-768x405.jpg 768w, https://cloudrf.com/wp-content/uploads/2025/02/jetson-boot-1-1536x810.jpg 1536w, https://cloudrf.com/wp-content/uploads/2025/02/jetson-boot-1-416x219.jpg 416w, https://cloudrf.com/wp-content/uploads/2025/02/jetson-boot-1.jpg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Boot sequence showing idle load and fan load after 10 minutes</figcaption></figure>
</div>


<h2 class="wp-block-heading">Summary</h2>



<p>The test exceeded expectations on power economy and performance and showed that a (budget) portable battery could easily provide up to 12hrs of operation. At the end of our expedition there were 2 out of 4 LEDs still lit on our battery.</p>



<p>It validated the client-server design since the phone batteries were only slightly depleted throughout the test. Both phones finished with more than 75% battery capacity. Performing simulation on a phone is convenient but a poor choice for battery endurance especially and scalability due to the dependency on reference data such as LiDAR and antenna patterns which are provisioned on the server. Note that phone 2&#8217;s mapping was unprepared during test 3 but was able to render high resolution topography, sourced via the server.</p>



<p>Of note, the stability and power economy of both ATAK 5.2, TAK server 5.3 and our own plugin was good. We experienced no crashes or connection issues throughout the day which was welcome. </p>



<h3 class="wp-block-heading">CPU calculations</h3>



<p>In the first video, CPU tests were mentioned which we did plan to do. We tested CPU area calculations the day before and were pleased to find they can be almost as fast on a (6 core) Jetson for single sites which was a nice surprise. Compared with a GPU calculation, they use more power so are not as efficient. We did employ the CPU for link simulation on the mountain but elected to focus on the GPU compute capability and power economy.</p>



<h3 class="wp-block-heading">Lapel Mic</h3>



<p>We were stunned by the sound quality on the mountain as the wind was intense for test 3 and we were using an iPhone with a wireless lapel microphone.  We recommend <a href="https://www.amazon.co.uk/Jubolion-Wireless-Lavalier-Microphone-Android-Black">this microphone</a> for field testing.</p>



<h2 class="wp-block-heading">Look ahead</h2>



<p>Applications for this network capability include Search and rescue, Mining, Agriculture, Government and Emergency services. Crucially, The edge concept challenges historic ways of working, whereby an expert with a powerful computer produces a plan which is later rendered obsolete by changing events.</p>



<p>With edge compute, planning becomes dynamic which is important since no plan survives contact with reality. Having the ability to redesign a communications plan locally reduces the planning cycle, saves bandwidth and improves spectrum awareness.</p>



<p>For autonomous systems, having integrated communications planning improves their chance of success and supports decision making beyond topographical route selection.</p>



<h2 class="wp-block-heading">More information</h2>



<p><a href="https://cloudrf.com/soothsayer/">SOOTHSAYER</a> is a self hosted RF planning server with interfaces for different systems such as ATAK.</p>



<p>The software is available as containers for x86-64 and arm64 architectures and can be hosted in the cloud, on a laptop or an Nvidia Jetson. For more information see <a href="https://cloudrf.com/soothsayer/">here </a>or email sales@cloudrf.com</p>



<p></p>



<p></p>



<p></p>
<p>The post <a href="https://cloudrf.com/rf-planning-at-the-edge/">RF planning at the Edge</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></content:encoded>
					
		
		<enclosure url="https://cloudrf.com/wp-content/uploads/2025/02/jetson-test1.mp4" length="15204363" type="video/mp4" />
<enclosure url="https://cloudrf.com/wp-content/uploads/2025/02/jetson-test2.mp4" length="11522567" type="video/mp4" />
<enclosure url="https://cloudrf.com/wp-content/uploads/2025/02/jetson-test3.mp4" length="19028039" type="video/mp4" />

			</item>
		<item>
		<title>SOOTHSAYER 1.8 released</title>
		<link>https://cloudrf.com/soothsayer-1-8-released/</link>
		
		<dc:creator><![CDATA[CloudRF]]></dc:creator>
		<pubDate>Thu, 10 Oct 2024 11:34:00 +0000</pubDate>
				<category><![CDATA[Self-hosted]]></category>
		<guid isPermaLink="false">https://cloudrf.com/?p=40504</guid>

					<description><![CDATA[<p>Our latest feature release adds new APIs and retires the virtual machine for a container-first solution compatible with more host systems which enables GPU sharing and greater control over both code and user data. 3D API A new full 3D API and GPU engine designed for urban simulations with multipath, material properties, phase tracking and [&#8230;]</p>
<p>The post <a href="https://cloudrf.com/soothsayer-1-8-released/">SOOTHSAYER 1.8 released</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Our latest feature release adds new APIs and retires the virtual machine for a container-first solution compatible with more host systems which enables GPU sharing and greater control over both code and user data.</p>



<h2 class="wp-block-heading">3D API</h2>



<p>A new <a href="https://cloudrf.com/3d-radio-propagation-api/">full 3D API and GPU engine</a> designed for urban simulations with multipath, material properties, phase tracking and support for the glTF 3d model format. </p>



<p>The REST API can currently be interfaced with directly using scripts or via our Blender plugin. A new indoor/outdoor/underground interface to use this new API is under active development&#8230;</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="CloudRF 3D API - Blender plugin" width="980" height="551" src="https://www.youtube.com/embed/CrJai6o_85Q?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p><a href="https://cloudrf.com/documentation/developer/#/3D/3d">3D API documentation</a></p>



<p><a href="https://cloud-rf.github.io/CloudRF-API-clients/model-gallery/index.html">3D API gallery</a></p>



<p><a href="https://github.com/Cloud-RF/CloudRF-API-clients/tree/master/integrations/blender">3D API Blender plugin</a></p>



<h2 class="wp-block-heading">Satellite API</h2>



<p>Improving upon our legacy Satellite route analysis capability, we can now model the entire coverage footprint using our GPU engine. This exceptionally hard problem required a rewrite of our GPU engine to achieve the &#8220;bounding box&#8221; capability needed to model a small area at high resolution from a transmitter 35,000km(!) away.</p>



<p><a href="https://cloudrf.com/documentation/developer/#/Satellite/satellite%2Farea">Satellite API documentation</a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Satellite coverage planning on ATAK" width="980" height="551" src="https://www.youtube.com/embed/QvG88CZK2yw?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">General Purpose Model </h2>



<p>Following field testing in the summer, we concluded empirical cellular path loss models are unfit for modelling UHF handheld radios. As a result we created a hybrid model from ITU-R P.525 which is frequency and height agnostic. The simple model is made accurate by the Deygout 94 diffraction model and tuned clutter which we support with new profiles.</p>



<p>You can read more about the <a href="https://cloudrf.com/antenna-drive-testing/">testing</a> and the model improvements <a href="https://cloudrf.com/model-and-clutter-improvements/">here.</a></p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://cloudrf.com/wp-content/uploads/2024/07/drive_testing_banner-e1721385356193.jpg" rel="lightbox[40504]"><img loading="lazy" decoding="async" width="600" height="328" src="https://cloudrf.com/wp-content/uploads/2024/07/drive_testing_banner-e1721385356193.jpg" alt="" class="wp-image-35026"/></a></figure>
</div>


<h2 class="wp-block-heading">API change log</h2>



<h2 class="wp-block-heading">3.15.3 (2024-10-08)</h2>



<ul class="wp-block-list">
<li>Fix: Restored missing values to path and points endpoints.</li>



<li>Fix: Trilateration not working with GPU in some scenarios.</li>
</ul>



<h2 class="wp-block-heading">3.15.2 (2024-10-04)</h2>



<ul class="wp-block-list">
<li>Improvement: Admin pages improved for support of SOOTHSAYER&nbsp;<code>1.8</code>.</li>



<li>Improvement: Tighter zoom restrictions on terrain map to reduce response size.</li>



<li>Improvement: Better default preferences eg. colours</li>



<li>Fix:&nbsp;<code>/API/terrain</code>&nbsp;does not load in some environments.</li>



<li>Fix: Resolved antenna rotation edge cases</li>



<li>Fix: Trilateration broken by numpy update. meh</li>
</ul>



<h2 class="wp-block-heading">3.15.1 (2024-09-30)</h2>



<ul class="wp-block-list">
<li>Improvement: 3D engine calculations are locked for a maximum of 30 seconds.</li>



<li>Fix: Stale locking of 3D engine calculations in the event of system crashes would prevent immediate calculation reattempt.</li>
</ul>



<h2 class="wp-block-heading">3.15.0 (2024-09-26)</h2>



<ul class="wp-block-list">
<li>Improvement: Added DEM Manager to the admin dashboard.</li>



<li>Improvement: Reorganized data folder.</li>



<li>Improvement: Refreshed the terrain and clutter map.</li>



<li>Fix: Removed&nbsp;<code>Chart image</code>&nbsp;and&nbsp;<code>Network KML</code>&nbsp;from network API response as they are not used.</li>



<li>Fix: Missing&nbsp;<code>megavoxel</code>&nbsp;from&nbsp;<code>products</code>&nbsp;SQL table.</li>



<li>Fix: GPU calculations with imperial units exceeded the radius.</li>



<li>Fix: Some antenna patterns being incorrectly interpreted as vertically aligned.</li>



<li>Fix: Deletion of uploaded files upon system errors.</li>



<li>Fix: GPU calculation failure when using user-defined clutter profile.</li>



<li>Fix: Processing engine is not stored as a value when logging requests.</li>



<li>Fix: Custom ant minimum value dropped from -50dB to -100dB to fix vertical patterns</li>
</ul>



<h2 class="wp-block-heading">3.14.2 (2024-09-10)</h2>



<ul class="wp-block-list">
<li>Improvement: Network API search radius increased to 0.5 degs for mountain WISPs .</li>



<li>Fix: Antenna elevation plane wrong for some patterns.</li>
</ul>



<h2 class="wp-block-heading">3.14.1 (2024-09-05)</h2>



<ul class="wp-block-list">
<li>Improvement: Include&nbsp;<code>Altitude type</code>&nbsp;when retrieving PPA JSON from archive.</li>



<li>Improvement: Clutter manager supports custom building density.</li>



<li>Improvement: Custom antenna patterns are smoother.</li>



<li>Fix: Fix mesh endpoint was ignoring blue and alpha.</li>



<li>Fix: Antenna downtilt inverted by recent change.</li>
</ul>



<h2 class="wp-block-heading">3.14.0 (2024-08-14)</h2>



<ul class="wp-block-list">
<li>Feature: Added output-bounded GPU calculations.</li>



<li>Feature: Added /satellite/area endpoint.</li>



<li>Fix: Fix antenna wizard plotting tilt direction and handle all valid ADF gain values.</li>
</ul>



<h2 class="wp-block-heading">3.13.0 (2024-08-01)</h2>



<ul class="wp-block-list">
<li>Improvement: Multipoints KMZ improved to show signal strength making use of bubbles along the route.</li>



<li>Improvement: 3D endpoint accepts &#8216;output.megavoxels&#8217; as an alternative to &#8216;output.res&#8217;.</li>



<li>Improvement: SLEIPNIR 1.13 has black alpha background like GPU for easier GIS styling/analysis</li>
</ul>



<h2 class="wp-block-heading">3.12.0 (2024-07-12)</h2>



<ul class="wp-block-list">
<li>WARNING: ITM will be conservative with new clutter profiles.</li>



<li>Feature: General Purpose Model (#10)</li>



<li>Enhancement: Landcover trees now support up to 1.5dB/m for jungle</li>



<li>Enhancement: New ITU clutter profiles for CITY, SUBURB and FOREST</li>



<li>Enhancement: Refactored CORS header handling</li>



<li>Enhancement: 3D engine version and megavoxels added to admin page</li>



<li>Fix: Handle SNR 0 in templates</li>



<li>Fix: 3D API materials validation</li>



<li>Fix: KMZ PPA network link restored</li>
</ul>



<h2 class="wp-block-heading">3.11.0 (2024-06-19)</h2>



<ul class="wp-block-list">
<li>Feature: Added 3D engine processing endpoints:&nbsp;<code>/3d</code>,&nbsp;<code>/3d/model/upload</code>,&nbsp;<code>/3d/viewer</code>.</li>



<li>Fix: Error message if license ID has changed.</li>



<li>Legacy: Removed colour schema value of&nbsp;<code>8</code>.</li>
</ul>



<h2 class="wp-block-heading">3.10.6 (2024-05-30)</h2>



<ul class="wp-block-list">
<li>Fix: ITM model cannot be used with altitudes above 3000m</li>



<li>Fix: Path KMZ metric heights were missing TxH</li>



<li>Gift: GPU enabled for Silver plans <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>
</ul>



<h2 class="wp-block-heading">3.10.5 (2024-05-17)</h2>



<ul class="wp-block-list">
<li>Fix: Multisite antenna tilt inversion.</li>



<li>Fix: Stop Google Earth UI opening clutter/antenna forms.</li>
</ul>



<h2 class="wp-block-heading">3.10.4 (2024-05-10)</h2>



<ul class="wp-block-list">
<li>Improvement: Recommend CPU engine for Ocean planning / no tiles.</li>



<li>Improvement: Optimised Ocean planning.</li>



<li>Fix: Handles when BSA Tx equals Rx.</li>



<li>Fix: Handle P.525 optimistic context (aka circles mode) with GPU.</li>
</ul>



<h2 class="wp-block-heading">3.10.3 (2024-04-26)</h2>



<ul class="wp-block-list">
<li>Improvement: Memory allocation improvements.</li>



<li>Fix: Super layer KMZ metadata was missing some values.</li>



<li>Fix: MANET network fails to save if it has unachievable links.</li>



<li>Fix: MANET KMZ would always be produced using dBm units.</li>



<li>Fix: MANET KMZ draws links which are below the sensitivity threshold.</li>



<li>Fix: MANET KMZ assigns black to links which sit on the colour bucket.</li>



<li>Fix: MANET KMZ links were not floating at altitude of nodes.</li>



<li>Fix: Default to 1m2 RCS value for&nbsp;<code>multisite</code>&nbsp;RADAR requests</li>



<li>Fix:&nbsp;<code>multisite</code>&nbsp;antenna template/custom logic aligned with area</li>



<li>Fix:&nbsp;<code>multisite</code>&nbsp;<code>model.rcs</code>&nbsp;only validated if using RADAR</li>



<li>Fix: Mesh PNG alpha bug.</li>



<li>Fix: Can save templates with AMSL height units.</li>



<li>Fix: Template name capped at 30 character length.</li>



<li>Fix: Antenna Pattern Import Tool fails if OEM already exists.</li>



<li>Fix: Downloading ADF pattern from ADF wizard broken.</li>



<li>Fix: Mesh PNG alpha bug</li>



<li>Fix: Can save templates with amsl heights</li>



<li>Fix: Template name capped at 30 chars</li>
</ul>



<h2 class="wp-block-heading">UI change log</h2>



<h2 class="wp-block-heading">3.13.4 (2024-10-08)</h2>



<ul class="wp-block-list">
<li>Fix: CPU engine unusable if interface loaded in GPU mode by default.</li>
</ul>



<h2 class="wp-block-heading">3.13.3 (2024-10-04)</h2>



<ul class="wp-block-list">
<li>Improvement: Better default preferences for model, clutter and colours.</li>



<li>Fix: GPU calculate unresponsive when reloading the UI after a GPU session.</li>
</ul>



<h2 class="wp-block-heading">3.13.2 (2024-09-30)</h2>



<ul class="wp-block-list">
<li>Fix: Disable MANET tool when using route analysis with mixed altitudes (flight path).</li>



<li>Fix: Loading imperial ASL path from archive doesn&#8217;t properly populate on the PPA chart.</li>



<li>Fix: Google Earth layer calculations returning &#8220;Bad API key&#8221; for some environments.</li>



<li>Fix: Remove broken window when clicking on a best server link.</li>



<li>Fix: &#8220;My Account&#8221; modal doesn&#8217;t load if the API returns an error.</li>



<li>Fix: Colour schema changing when enabling/disabling MANET tool even if the schema exists for the measured unit.</li>
</ul>



<h2 class="wp-block-heading">3.13.1 (2024-08-20)</h2>



<ul class="wp-block-list">
<li>Fix: MANET marker alt aligns with plumb line alt with imperial units</li>



<li>Fix: Engine selection no longer adjusted when enabling/disabling MANET tool</li>



<li>Fix: PPA appearing in air when reloaded from archive.</li>



<li>Feature: Added dropdown selection for bandwidth in operator mode rather than an input box. Input box is still valid in engineer mode.</li>



<li>Feature: Extended lower limit of bandwidth on input box down to 0.001MHz (1KHz) to match the allowed value in the API.</li>
</ul>



<h2 class="wp-block-heading">3.13.0 (2024-08-01)</h2>



<ul class="wp-block-list">
<li>Feature: Route analysis import supports CSV as per coverage / calibration etc.</li>



<li>Feature: Route analysis import supports altitude/height from CSV/KML/KMZ. Uses &#8216;points&#8217; vs &#8216;area&#8217;.</li>



<li>Fix: Auto-processing CSV warns when mixing short and long format fields.</li>



<li>Fix: Fixed Auto CSV typo on example re&nbsp;<code>Gain_dB</code>&nbsp;which is now&nbsp;<code>Gain_dBi</code>.</li>



<li>Fix: Added missing &#8220;KML + PPA&#8221; option to quick download list.</li>



<li>Fix: Buildings value not persisting between interface reloads.</li>



<li>Fix: Noise floor value not persisting between interface reloads.</li>



<li>Fix: Auto CSV processing bandwidth supports 1KHz (Previously 100KHz)</li>
</ul>



<h2 class="wp-block-heading">3.12.1 (2024-07-16)</h2>



<ul class="wp-block-list">
<li>Feature: Engineer template mismatch with operator mode modal changed to go into console window.</li>



<li>Fix: Importing KML/KMZ polyline into &#8220;Coverage Analysis&#8221; fails.</li>



<li>Fix: Multipoint links button missing from engineer mode.</li>



<li>Fix: Custom antennas in templates ignored for operator mode</li>
</ul>



<h2 class="wp-block-heading">3.12.0 (2024-07-12)</h2>



<ul class="wp-block-list">
<li>Feature: Operator/Engineer mode select</li>



<li>Feature: General Purpose Model</li>



<li>Enhancement: Models list sorted into categories</li>
</ul>



<h2 class="wp-block-heading">3.11.5 (2024-06-08)</h2>



<ul class="wp-block-list">
<li>Improvement: No longer truncating long antenna filenames in pattern input box to make automated processing simpler.</li>



<li>Improvement: Automatic CSV processing accepts antenna ID as well as name.</li>



<li>Improvement: Include URL in error message when failing to load layer.</li>



<li>Fix: Marker and label disappear when image layer is hidden.</li>



<li>Fix: RSOD when importing MANET network.</li>



<li>Fix: MANET import when MANET mode enabled will disable MANET mode.</li>
</ul>



<h2 class="wp-block-heading">3.11.4 (2024-06-01)</h2>



<ul class="wp-block-list">
<li>Improvement: Updated Cesium to 1.106 (June 2023)</li>



<li>Fix: Applied 5 months of Cesium bug fixes <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>
</ul>



<h2 class="wp-block-heading">3.11.3 (2024-05-27)</h2>



<ul class="wp-block-list">
<li>Improvement: Bandwidth changes now adjust receiver sensitivity as well as noise</li>



<li>Fix: Imported MANET nodes were getting processed twice</li>



<li>Fix: Imported MANET nodes context menu didn&#8217;t open</li>
</ul>



<h2 class="wp-block-heading">3.11.2 (2024-05-21)</h2>



<ul class="wp-block-list">
<li>Fix: Custom antenna plots update after archive reload</li>



<li>Fix: Tx marker moves after archive reload to match site marker</li>
</ul>



<h2 class="wp-block-heading">3.11.1 (2024-05-14)</h2>



<ul class="wp-block-list">
<li>Fix: Imported MANET nodes from KML were not tracking 3D terrain</li>



<li>Fix: Can import a KML route and then a KML for MANET w/coverage analysis</li>
</ul>



<h2 class="wp-block-heading">3.11.0 (2024-05-07)</h2>



<ul class="wp-block-list">
<li>Improvement: Selection of &#8220;use case&#8221; on the &#8220;Import Data&#8221; dialog. Support for kml placemarks with routes</li>



<li>Fix: Uploading KML/KMZ to &#8220;Coverage Analysis&#8221; with a&nbsp;<code>Placemark</code>&nbsp;and&nbsp;<code>LineString</code></li>



<li>Fix: Uploading KML/KMZ with more than one&nbsp;<code>LineString</code>&nbsp;would fail.</li>



<li>Fix: Uploading KML/KMZ with&nbsp;<code>LineString</code>&nbsp;coordinates closer than interpolation distance</li>
</ul>



<h2 class="wp-block-heading">3.10.2 (2024-04-29)</h2>



<ul class="wp-block-list">
<li>Improvement: BER uses SNR colours for consistency with API.</li>



<li>Improvement: Interference tool hides colour key.</li>



<li>Improvement: Restyled MANET links.</li>



<li>Fix: Best site analysis output sometimes does not get cleared when &#8220;Clear all layers&#8221; is clicked.</li>



<li>Fix: Marker labels are hidden when the view is tilted and hard to read.</li>
</ul>



<h2 class="wp-block-heading">3.10.1 (2024-04-10)</h2>



<ul class="wp-block-list">
<li>Improvement: CSV processing supports GPU</li>



<li>Fix: CSV processing power_dBm label should be power_W</li>
</ul>



<h2 class="wp-block-heading">SOOTHSAYER change log</h2>



<ul class="wp-block-list">
<li>Feature: Add update.sh script.</li>



<li>Feature: Added Rocky OS support for scripts.</li>



<li>Feature: Improved OS detection for scripts.</li>



<li>Feature: Removes satellite container as all is now supported within the API and database.</li>



<li>Feature: Set DNS entry of containers which call out to the Internet to install packages. This can be overridden<br>with the DNS_RESOLVER value in .env. Default of Google 8.8.8.8 is used.</li>



<li>Feature: Documented all of the .env values in the README.</li>



<li>Feature: 4326 map tiles are now cached rather than reprojecting 3857.</li>



<li>Update: API 3.15.4, UI 3.13.4, GPU 1.10.1.</li>



<li>Update: Changed 3D container to use docker.io/debian:12.5 rather than docker.io/nvidia/cuda:12.<br>2.2-runtime-ubuntu22.04 to support CentOS Podman and reduce number of dependencies.</li>



<li>Update: pgAdmin container updated to 8.12.</li>



<li>Fix: Some containers missing network assignment which was create secondary Docker network.</li>



<li>Fix: Remove hello-world from list of stopped container after testing with docker run hello-world.</li>



<li>Fix: Increase timeout of frontend Nginx container to 10 minutes to match that of the API Nginx container.</li>



<li>Fix: Display administration dashboard login during setup.sh script.</li>



<li>Fix: Set port number for SERVICE_API environment value when using Podman during setup.sh script.</li>



<li>Fix: Commenting out values in .env with # can cause errors with some parts of the system.</li>



<li>Fix: Some endpoints fail to load with or without trailing slash.</li>



<li>Fix: Non-standard HTTP/HTTPS ports redirecting incorrectly on some endpoints.</li>



<li>Fix: OSM.xml updated to use the FQDN of the server.</li>



<li>Fix: Disabled execution of setup.sh after first time execution.</li>



<li>Fix: Nvidia containers respinning at fast rate if there are issues with nvidia-smi </li>



<li>Fix: TAK Server Chatbot directory permissions</li>



<li>Fix: ca.crt download location updated.</li>
</ul>



<h2 class="wp-block-heading">More information</h2>



<p>For more information on SOOTHSAYER, our self hosted server, <a href="https://cloudrf.com/soothsayer/">see here.</a></p>
<p>The post <a href="https://cloudrf.com/soothsayer-1-8-released/">SOOTHSAYER 1.8 released</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>SOOTHSAYER server performance testing</title>
		<link>https://cloudrf.com/soothsayer-server-performance-testing/</link>
		
		<dc:creator><![CDATA[CloudRF]]></dc:creator>
		<pubDate>Fri, 19 Apr 2024 19:21:02 +0000</pubDate>
				<category><![CDATA[Modelling]]></category>
		<category><![CDATA[Self-hosted]]></category>
		<guid isPermaLink="false">https://cloudrf.com/?p=30189</guid>

					<description><![CDATA[<p>We have lab tested three different size hardware profiles for running our SOOTHSAYERTM RF planning server to find out how they compare under load. These consumer profiles cater for different setups ranging from an enterprise with rack mounted servers, to a small office to a vehicle. Enterprise server This server is a standard Dell Poweredge [&#8230;]</p>
<p>The post <a href="https://cloudrf.com/soothsayer-server-performance-testing/">SOOTHSAYER server performance testing</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="has-medium-font-size">We have lab tested three different size hardware profiles for running our SOOTHSAYER<sup>TM</sup> RF planning server to find out how they compare under load. These consumer profiles cater for different setups ranging from an enterprise with rack mounted servers, to a small office to a vehicle.</p>



<h2 class="wp-block-heading">Enterprise server</h2>



<p>This server is a standard Dell Poweredge R740 with an Intel Silver CPU and a 24GB Nvidia A5000 GPU running a Proxmox hypervisor.  SOOTHSAYER 1.7 is installed as a virtual machine and LiDAR data is mapped via a network share.</p>



<p><a href="https://i.dell.com/sites/csdocuments/Shared-Content_data-Sheets_Documents/en/poweredge-r740-spec-sheet.pdf">Datasheet.</a></p>


<div class="wp-block-image">
<figure class="alignright size-full is-resized"><a href="https://cloudrf.com/wp-content/uploads/2024/04/image-3.png" rel="lightbox[30189]"><img loading="lazy" decoding="async" width="970" height="525" src="https://cloudrf.com/wp-content/uploads/2024/04/image-3.png" alt="" class="wp-image-30243" style="width:780px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2024/04/image-3.png 970w, https://cloudrf.com/wp-content/uploads/2024/04/image-3-300x162.png 300w, https://cloudrf.com/wp-content/uploads/2024/04/image-3-768x416.png 768w, https://cloudrf.com/wp-content/uploads/2024/04/image-3-416x225.png 416w" sizes="auto, (max-width: 970px) 100vw, 970px" /></a></figure>
</div>


<h2 class="wp-block-heading">Mini desktop PC</h2>


<div class="wp-block-image">
<figure class="alignright size-full is-resized"><a href="https://cloudrf.com/wp-content/uploads/2024/04/image-4.png" rel="lightbox[30189]"><img loading="lazy" decoding="async" width="320" height="240" src="https://cloudrf.com/wp-content/uploads/2024/04/image-4.png" alt="" class="wp-image-30246" style="width:364px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2024/04/image-4.png 320w, https://cloudrf.com/wp-content/uploads/2024/04/image-4-300x225.png 300w" sizes="auto, (max-width: 320px) 100vw, 320px" /></a></figure>
</div>


<p>This small form factor desktop PC is a HP z2 G9 mini with an Intel i9 CPU and a Nvidia A2000 GPU running Ubuntu 22 server.</p>



<p>SOOTHSAYER 1.7 is installed as a docker container and LiDAR data is local.</p>



<p><a href="https://www.hp.com/gb-en/shop/product.aspx?id=86D03EA&amp;opt=ABU&amp;sel=DTP">Datasheet.</a></p>



<p></p>



<p></p>



<p></p>



<h2 class="wp-block-heading">Embedded PC</h2>


<div class="wp-block-image">
<figure class="alignright size-full is-resized"><a href="https://cloudrf.com/wp-content/uploads/2024/04/image-5.png" rel="lightbox[30189]"><img loading="lazy" decoding="async" width="254" height="199" src="https://cloudrf.com/wp-content/uploads/2024/04/image-5.png" alt="" class="wp-image-30249" style="width:297px;height:auto"/></a></figure>
</div>


<p>This portable server is an Nvidia Jetson AGX Orin with an ARMv8 64 bit CPU and a 2048 core GPU. The server has 3 variable power settings and was run in the modal 30W mode.</p>



<p>SOOTHSAYER 1.7 is installed as a docker container and LiDAR data is local.</p>



<p><a href="https://uk.rs-online.com/web/p/processor-development-tools/2539662">Datasheet.</a></p>



<p></p>



<h2 class="wp-block-heading">The tests</h2>



<p>The tests used were designed to benchmark both the hardware and our software&#8217;s capability for high performance RF planning.  We&#8217;ve picked challenges other tools would struggle to compete with, like Bullington diffraction and double digit megapixel resolutions. </p>



<h2 class="wp-block-heading">High resolution area </h2>



<p>The test parameters here were for a 5m resolution coverage heatmap out to 10km radius for a total image size of <strong>16 mega pixels</strong>. This was repeated with and without Bullington diffraction and soft clutter data which is computationally expensive to show diffraction with soft clutter versus basic line-of-sight (LOS) speed respectively.</p>



<p>This would exercise our <a href="https://cloudrf.com/documentation/developer/#/Create/area">Area API.</a></p>



<h2 class="wp-block-heading">Long range path profile</h2>



<p>The test parameters here were for a <strong>2m resolution LiDAR path out to a point 10km away.</strong> This would test 5000 points and would exercise our <a href="https://cloudrf.com/documentation/developer/#/Create/path">Path API.</a></p>



<h2 class="wp-block-heading">Ten links at once</h2>



<p>The test parameters here were for <strong>10 random transmitters at 3km from a receiver</strong> using 2m resolution and Bullington diffraction. All links would be tested in a single API call to our <a href="https://cloudrf.com/documentation/developer/#/Create/points">Points API.</a></p>



<p></p>



<h2 class="wp-block-heading">The results</h2>



<p>All times are in seconds and were taken from the API response, excluding network latency and presentation in an interface.</p>



<figure class="wp-block-table is-style-stripes"><table><tbody><tr><td>Test</td><td>Server</td><td>Mini PC</td><td>Embedded PC</td></tr><tr><td>Area w/Diffraction (CPU)</td><td>26</td><td><strong>13</strong></td><td>38</td></tr><tr><td>Area w/LOS (CPU)</td><td>17</td><td><strong>10.9</strong></td><td>24</td></tr><tr><td>Area w/Diffraction (GPU)</td><td><strong>6.7</strong></td><td>13.1</td><td>116</td></tr><tr><td>Area w/LOS (GPU)</td><td><strong>2.5</strong></td><td>3.9</td><td>29</td></tr><tr><td>Path</td><td>0.14</td><td><strong>0.05</strong></td><td>0.08</td></tr><tr><td>Links</td><td>0.09</td><td><strong>0.05</strong></td><td>0.08</td></tr></tbody></table><figcaption class="wp-element-caption">Table of results</figcaption></figure>



<p>The times didn&#8217;t fail to disappoint and threw up more than a few surprises. Unsurprisingly, cores matter when processing coverage and the fastest compute went to the largest GPU on the server.</p>



<p>When processing links, the CPU is critical and here the Intel i9 on the Mini PC excelled with a <strong>50 millisecond compute time for multiple 2m LiDAR links.</strong> This faster-than-human reaction-time speed makes it suitable for dynamic planning with moving vehicles. The enterprise server disappointed with quick links due to the latency with the large data share where the LiDAR GeoTIFF tiles were stored. This latency was only noticeable with very quick calculations however.</p>



<p>The embedded PC performed admirably considering it was seriously under powered compared to the others at only 30W. It was able to model LiDAR links in 80ms and was only about 46% slower than an enterprise server at CPU calcs. Where it was noticeably slower was with processing the GPU area calculation. By increasing the power on the device to the 60W maximum the CUDA cores are doubled and from our testing we expect this would halve the GPU time.</p>



<h2 class="wp-block-heading">Recommendations</h2>



<p class="has-medium-font-size">For MANET link planning; an intel i9 CPU with an SSD is extremely fast</p>



<p class="has-medium-font-size">For high resolution area coverage; an enterprise grade GPU is unbeatable</p>



<p class="has-medium-font-size">For a small form factor host; the HP z2 G9 mini with an A2000 GPU is powerful</p>



<p class="has-medium-font-size">For value for money; the HP z2 G9 mini with an A2000 GPU is excellent</p>



<p class="has-medium-font-size">For low SWaP; the Nvidia AGX Orin 64GB delivers great economy</p>



<h2 class="wp-block-heading">More information</h2>



<p>For more information on self hosted RF planning, see our <a href="https://cloudrf.com/soothsayer/">SOOTHSAYER</a> page.</p>



<p><em>No load balancers with arrays of RTX gaming GPUs were used in this testing.</em> <em>We don&#8217;t need to do that</em>!</p>



<p></p>



<p></p>
<p>The post <a href="https://cloudrf.com/soothsayer-server-performance-testing/">SOOTHSAYER server performance testing</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>SOOTHSAYER 1.7 released</title>
		<link>https://cloudrf.com/soothsayer-1-7-released/</link>
		
		<dc:creator><![CDATA[CloudRF]]></dc:creator>
		<pubDate>Thu, 04 Apr 2024 12:14:41 +0000</pubDate>
				<category><![CDATA[Modelling]]></category>
		<category><![CDATA[Self-hosted]]></category>
		<guid isPermaLink="false">https://cloudrf.com/?p=28824</guid>

					<description><![CDATA[<p>Our latest major release of our private server, SOOTHSAYER, is ready. It includes six months of features, updates and bug fixes from CloudRF and features several customer sponsored capabilities including RADAR and Trilateration. By popular demand, we now have a Docker enterprise solution so you can build your own containers or use our pre-built AWS [&#8230;]</p>
<p>The post <a href="https://cloudrf.com/soothsayer-1-7-released/">SOOTHSAYER 1.7 released</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Our latest major release of our private server, <a href="https://cloudrf.com/soothsayer/">SOOTHSAYER</a>, is ready. It includes six months of features, updates and bug fixes from CloudRF and features several customer sponsored capabilities including RADAR and Trilateration.</p>



<p>By popular demand, <strong>we now have a Docker enterprise solution </strong>so you can build your own containers or use our pre-built AWS template.</p>


<div class="wp-block-image">
<figure class="alignleft size-large is-resized"><a href="https://cloudrf.com/wp-content/uploads/2024/04/image.png" rel="lightbox[28824]"><img loading="lazy" decoding="async" width="1024" height="244" src="https://cloudrf.com/wp-content/uploads/2024/04/image-1024x244.png" alt="Docker support!" class="wp-image-29160" style="width:275px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2024/04/image-1024x244.png 1024w, https://cloudrf.com/wp-content/uploads/2024/04/image-300x71.png 300w, https://cloudrf.com/wp-content/uploads/2024/04/image-768x183.png 768w, https://cloudrf.com/wp-content/uploads/2024/04/image-1536x365.png 1536w, https://cloudrf.com/wp-content/uploads/2024/04/image-2048x487.png 2048w, https://cloudrf.com/wp-content/uploads/2024/04/image-416x99.png 416w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<p>Thank you to all who gave feedback and feature sponsorship to help make this feature release.  As you can see from the substantial new features and enhancements we continue to model the future of scalable APIs for multiple technologies and verticals such as Aviation and Counter UAS.</p>



<h1 class="wp-block-heading">New in 1.7</h1>



<h3 class="wp-block-heading">RADAR model</h3>



<p>The RADAR propagation model has a RADAR cross section parameter (m2) so you can model the effective range for detection of different sized objects with a <strong>RADAR, up to 90GHz, and 500km radius &#8211; horizon permitting! </strong></p>



<p>It&#8217;s implemented in the API as model #8, both CPU and GPU engines and the user interface.  </p>



<p>RADAR documentation: <a href="https://cloudrf.com/documentation/02_web_interface_intro.html#radar">https://cloudrf.com/documentation/02_web_interface_intro.html#radar</a></p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://cloudrf.com/wp-content/uploads/2024/04/Airport_RADAR-1.jpg" rel="lightbox[28824]"><img loading="lazy" decoding="async" width="1024" height="476" src="https://cloudrf.com/wp-content/uploads/2024/04/Airport_RADAR-1.jpg" alt="Airport RADAR" class="wp-image-29157" srcset="https://cloudrf.com/wp-content/uploads/2024/04/Airport_RADAR-1.jpg 1024w, https://cloudrf.com/wp-content/uploads/2024/04/Airport_RADAR-1-300x139.jpg 300w, https://cloudrf.com/wp-content/uploads/2024/04/Airport_RADAR-1-768x357.jpg 768w, https://cloudrf.com/wp-content/uploads/2024/04/Airport_RADAR-1-416x193.jpg 416w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Airport RADAR</figcaption></figure>
</div>


<h3 class="wp-block-heading">Noise API</h3>



<p>The noise API was developed from user feedback about the problem with varying local noise figures. Using a universal guessed value eg. -110dBm is not representative of the real world and especially the difference between a quiet rural and loud urban area for example. Now you can push in your own noise readings from radios or other sources either before or during planning. When modelling, <strong>live noise can be used by setting the noise value to &#8216;database&#8217;. </strong></p>



<p>Noise CREATE API schema: <a href="https://cloudrf.com/documentation/developer/#/Manage/noiseCreate">https://cloudrf.com/documentation/developer/#/Manage/noiseCreate</a></p>



<p>Noise GET API schema: <a href="https://cloudrf.com/documentation/developer/#/Manage/noiseGet">https://cloudrf.com/documentation/developer/#/Manage/noiseGet</a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="A noise API for real-world RF planning" width="980" height="551" src="https://www.youtube.com/embed/C3GktnNzDZU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h3 class="wp-block-heading">Trilateration API</h3>



<p>The Trilateration API was developed by popular request to accelerate and enable the process of geo-location of an unknown emitter. <strong>It will challenge conventional thinking about the accuracy of power based geo techniques by using accurate modelling and clutter data instead of circles.</strong> Our modelling has been field tested to below 8dB RMSE.</p>



<p>It requires receivers to be pre-modelled to enable rapid RSSI lookups using live receiver measurements. Using this two step process, results are delivered in milliseconds unless a receiver is moving in which case it&#8217;s coverage can be maintained using the fast GPU engine.</p>



<p>Trilateration API demo: <a href="https://cloud-rf.github.io/CloudRF-API-clients/slippy-maps/leaflet-trilateration.html">https://cloud-rf.github.io/CloudRF-API-clients/slippy-maps/leaflet-trilateration.html</a> </p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Trilateration API - Geo-locate BLOS signals with propagation modelling" width="980" height="551" src="https://www.youtube.com/embed/iz6Y7mkkj2U?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h3 class="wp-block-heading">Height AMSL</h3>



<p> Since our inception we&#8217;ve used height above the ground as most of our users are land based terrestrial planners. As we&#8217;ve gained more aviation, and RADAR, customers, <strong>barometric altitudes are now supported by request.</strong> The altitude type is specified in the request &#8220;output.units&#8221; key as before only now there are four possible inputs instead of two. Range is 1 to 120,000 m/f.</p>



<figure class="wp-block-table is-style-stripes"><table><tbody><tr><td><strong>Value</strong></td><td><strong>Description</strong></td></tr><tr><td>m</td><td>Meters above ground</td></tr><tr><td>m_amsl</td><td>Meters above sea level</td></tr><tr><td>f</td><td>Feet above ground</td></tr><tr><td>f_amsl</td><td>Feet above sea level</td></tr></tbody></table><figcaption class="wp-element-caption">API height measurement units</figcaption></figure>



<h3 class="wp-block-heading">HF NVIS model</h3>



<p>By request we&#8217;ve added a HF Near Vertical Incidence Skywave (NVIS) model. This models the first bounce from the ionosphere out to 500km and has an option for three layers (D, E, F) at differing refractive heights. This capability is supported in both our CPU and GPU engines and is particular valuable for teaching HF as it will give students an <strong>interactive HF tool to learn dipole patterns, the difference between day and night and critical frequency selection.</strong></p>



<p><em>We have calibrated our NVIS model to <strong>align within 10dB of measurements</strong> taken from a <a href="https://agupubs.onlinelibrary.wiley.com/doi/pdfdirect/10.1029/2011RS004914">2012 research paper </a>by Marcus Walden using a 5MHz NATO frequency in the UK. From this paper we selected one of the longer links at 210km where we used the median measurement value for August.</em></p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://cloudrf.com/wp-content/uploads/2024/01/HF_coverage_animation.gif" rel="lightbox[28824]"><img loading="lazy" decoding="async" width="1024" height="576" src="https://cloudrf.com/wp-content/uploads/2024/01/HF_coverage_animation-1024x576.gif" alt="HF reliability animation" class="wp-image-24245" srcset="https://cloudrf.com/wp-content/uploads/2024/01/HF_coverage_animation-1024x576.gif 1024w, https://cloudrf.com/wp-content/uploads/2024/01/HF_coverage_animation-300x169.gif 300w, https://cloudrf.com/wp-content/uploads/2024/01/HF_coverage_animation-768x432.gif 768w, https://cloudrf.com/wp-content/uploads/2024/01/HF_coverage_animation-416x234.gif 416w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">HF reliability animation</figcaption></figure>
</div>


<h3 class="wp-block-heading">Bullington and Deygout diffraction models</h3>



<p>Our single knife edge diffraction model has served us well for many years but cannot deliver the accuracy we aspire to once multiple obstacles are on the path. We have therefore invested substantial effort to add the much more complex Bullington and Deygout models to both our CPU and GPU engines. These greatly enhance simple propagation models as we proved during our LTE800 <a href="https://cloudrf.com/field-testing-diffraction/">field test in the mountains earlier this year. </a></p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://cloudrf.com/wp-content/uploads/2024/01/deygout_diffraction.jpg" rel="lightbox[28824]"><img loading="lazy" decoding="async" width="1024" height="576" src="https://cloudrf.com/wp-content/uploads/2024/01/deygout_diffraction-1024x576.jpg" alt="Deygout diffraction" class="wp-image-25019" srcset="https://cloudrf.com/wp-content/uploads/2024/01/deygout_diffraction-1024x576.jpg 1024w, https://cloudrf.com/wp-content/uploads/2024/01/deygout_diffraction-300x169.jpg 300w, https://cloudrf.com/wp-content/uploads/2024/01/deygout_diffraction-768x432.jpg 768w, https://cloudrf.com/wp-content/uploads/2024/01/deygout_diffraction-416x234.jpg 416w, https://cloudrf.com/wp-content/uploads/2024/01/deygout_diffraction.jpg 1500w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Deygout diffraction</figcaption></figure>
</div>


<h2 class="wp-block-heading"><br>Automatic CSV processing in UI</h2>



<p>From user feedback we created a solution to a problem whereby customers using managed IT systems were not able to install or execute our python API scripts but needed to batch process spreadsheets. We addressed this by adding a form within our web interface where CSV spreadsheets could be uploaded and automatically processed. It uses a much simpler format which combines with the current form settings like environment to execute API calls.</p>



<p>Documentation: <a href="https://cloudrf.com/documentation/05_web_interface_import_data.html#automatic-processing-process-a-spreadsheet">https://cloudrf.com/documentation/05_web_interface_import_data.html#automatic-processing-process-a-spreadsheet</a></p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://cloudrf.com/wp-content/uploads/2024/04/image-2.png" rel="lightbox[28824]"><img loading="lazy" decoding="async" width="1024" height="504" src="https://cloudrf.com/wp-content/uploads/2024/04/image-2-1024x504.png" alt="" class="wp-image-29169" srcset="https://cloudrf.com/wp-content/uploads/2024/04/image-2-1024x504.png 1024w, https://cloudrf.com/wp-content/uploads/2024/04/image-2-300x148.png 300w, https://cloudrf.com/wp-content/uploads/2024/04/image-2-768x378.png 768w, https://cloudrf.com/wp-content/uploads/2024/04/image-2-416x205.png 416w, https://cloudrf.com/wp-content/uploads/2024/04/image-2.png 1224w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<h4 class="wp-block-heading">ITU-R P.1546 VHF/UHF model</h4>



<p>This is a logically more advanced path loss model compared with legacy curves which is designed for terrestrial VHF and UHF planning. It&#8217;s conservative so we recommend the optimistic context with Bullington diffraction.</p>



<h4 class="wp-block-heading">Multisite support for mixed AGL / AMSL units</h4>



<p>After we implemented height above sea level for aircraft, we received feedback from customers using our multisite API that they would like to model transmitters above ground level and receivers above sea level. This is a common scenario for a ground-to-air network for example. We extended the multisite API to allow for mixed units so this can all be modelled in a single API call. </p>



<h2 class="wp-block-heading">Testing</h2>



<p>Our testing cycle is six months long, and starts with CloudRF where <strong>thousands of users, on every device imaginable, will test our API and interfaces</strong> to destruction.  By opening it to the public via our free plan, we encourage many concurrent users, with diverse client software,  to test our service and in doing so receive much more comprehensive testing than legacy products or GOTS software which only the contractor has tested.</p>



<p><strong>Field testing is essential to validate the accuracy </strong>of our software and calibrate radio templates. After we implemented our new diffraction models, <a href="https://cloudrf.com/field-testing-diffraction/">we took them to Scotland where we mapped out 22km of mountain LTE800 measurements</a>. This valuable data improved the models and clutter profiles for UHF and validated our investment in improving accuracy.</p>



<p>Our API is regression tested daily and our models have a custom test harness to validate the many permutations of path loss models, environment contexts, diffraction models and parameters.  As the number of models and inputs has grown we are relying on automation to ensure outputs are consistent and within parameters for the model(s).</p>



<p>Our user interface on CloudRF is instrumented with third party error handling software which automatically triages bugs for us. Through this we are able to identify issues early before customers are aware.  This works especially well with our crowd sourcing strategy since we see a greater variety of clients than legacy or GOTS competitors who do not have the confidence to do genuine crowd sourced testing.</p>



<p>For hardware and hypervisor compatibility we have invested in a wide variety of systems and GPUs ranging from low end consumer GTX cards to enterprise grade devices like the A5000 and A100. We test SOOTHSAYER virtual machines on Proxmox 8 and ESXi 8 with different CPU architectures, network profiles and resource profiles.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://cloudrf.com/wp-content/uploads/2023/08/gpu_clutter_attenuation.jpg" rel="lightbox[28824]"><img loading="lazy" decoding="async" width="800" height="530" src="https://cloudrf.com/wp-content/uploads/2023/08/gpu_clutter_attenuation.jpg" alt="" class="wp-image-20402" srcset="https://cloudrf.com/wp-content/uploads/2023/08/gpu_clutter_attenuation.jpg 800w, https://cloudrf.com/wp-content/uploads/2023/08/gpu_clutter_attenuation-300x199.jpg 300w, https://cloudrf.com/wp-content/uploads/2023/08/gpu_clutter_attenuation-768x509.jpg 768w, https://cloudrf.com/wp-content/uploads/2023/08/gpu_clutter_attenuation-416x276.jpg 416w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a><figcaption class="wp-element-caption">Custom clutter</figcaption></figure>
</div>


<h2 class="wp-block-heading">More information</h2>



<p>Get in touch for a demo and pricing today at <a href="mailto:support@cloudrf.com">support@cloudrf.com</a></p>



<p></p>



<p></p>



<p></p>
<p>The post <a href="https://cloudrf.com/soothsayer-1-7-released/">SOOTHSAYER 1.7 released</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>SOOTHSAYER 1.6 released</title>
		<link>https://cloudrf.com/soothsayer-1-6-released/</link>
		
		<dc:creator><![CDATA[CloudRF]]></dc:creator>
		<pubDate>Fri, 18 Aug 2023 10:24:14 +0000</pubDate>
				<category><![CDATA[Self-hosted]]></category>
		<guid isPermaLink="false">https://cloudrf.com/?p=20391</guid>

					<description><![CDATA[<p>The latest release of our private server, SOOTHSAYERTM is now available with bigger limits, better reference data, VSphere 8 enterprise GPU support, enhanced security controls and improved performance. GPU clutter attenuation The GPU engine can now model clutter attenuation in the same way as the CPU engine, only much faster. This functionality works for our [&#8230;]</p>
<p>The post <a href="https://cloudrf.com/soothsayer-1-6-released/">SOOTHSAYER 1.6 released</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>The latest release of our private server, SOOTHSAYER<sup>TM</sup> is now available with bigger limits, better reference data, VSphere 8 enterprise GPU support, enhanced security controls and improved performance. </p>



<div data-wp-interactive="core/file" class="wp-block-file"><object data-wp-bind--hidden="!state.hasPdfPreview" hidden class="wp-block-file__embed" data="https://cloudrf.com/wp-content/uploads/2023/08/SOOTHSAYER-1.6-flyer-.pdf" type="application/pdf" style="width:100%;height:550px" aria-label="Embed of SOOTHSAYER-1.6-flyer-."></object><a id="wp-block-file--media-94a8f29e-e447-4b40-8759-9eb9f3c42977" href="https://cloudrf.com/wp-content/uploads/2023/08/SOOTHSAYER-1.6-flyer-.pdf">SOOTHSAYER-1.6-flyer-</a><a href="https://cloudrf.com/wp-content/uploads/2023/08/SOOTHSAYER-1.6-flyer-.pdf" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-94a8f29e-e447-4b40-8759-9eb9f3c42977">Download</a></div>



<h2 class="wp-block-heading">GPU clutter attenuation</h2>



<p>The GPU engine can now model clutter attenuation in the same way as the CPU engine, only much faster. This functionality works for our global land cover for forests, global buildings data, and even custom clutter for BYO obstacles. Clutter profiles for regions and seasons are configured through the interface as normal.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><a href="https://cloudrf.com/wp-content/uploads/2023/08/gpu_clutter_attenuation.jpg" rel="lightbox[20391]"><img loading="lazy" decoding="async" src="https://cloudrf.com/wp-content/uploads/2023/08/gpu_clutter_attenuation.jpg" alt="" class="wp-image-20402" width="600" height="398" srcset="https://cloudrf.com/wp-content/uploads/2023/08/gpu_clutter_attenuation.jpg 800w, https://cloudrf.com/wp-content/uploads/2023/08/gpu_clutter_attenuation-300x199.jpg 300w, https://cloudrf.com/wp-content/uploads/2023/08/gpu_clutter_attenuation-768x509.jpg 768w, https://cloudrf.com/wp-content/uploads/2023/08/gpu_clutter_attenuation-416x276.jpg 416w" sizes="auto, (max-width: 600px) 100vw, 600px" /></a></figure>
</div>


<h2 class="wp-block-heading">Global buildings</h2>



<p>We have replaced OpenStreetMap buildings with Microsoft buildings, generated from machine learning trained on satellite imagery. This provides much better data for planning in rural areas and countries which traditionally have suffered from poor data coverage.  In the comparison below in Khartoum, Sudan, MS buildings produce a much more conservative result owing to their comprehensive coverage with OSM&#8217;s crowd-sourced data lacks.</p>



<p><em>A SOOTHSAYER server now has global buildings which can be side loaded by country into the data folder or fetched on-demand via api.cloudrf.com when connected to the internet.</em></p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><a href="https://cloudrf.com/wp-content/uploads/2023/08/image.png" rel="lightbox[20391]"><img loading="lazy" decoding="async" src="https://cloudrf.com/wp-content/uploads/2023/08/image-1024x614.png" alt="" class="wp-image-20392" width="612" height="367" srcset="https://cloudrf.com/wp-content/uploads/2023/08/image-1024x614.png 1024w, https://cloudrf.com/wp-content/uploads/2023/08/image-300x180.png 300w, https://cloudrf.com/wp-content/uploads/2023/08/image-768x461.png 768w, https://cloudrf.com/wp-content/uploads/2023/08/image-416x250.png 416w, https://cloudrf.com/wp-content/uploads/2023/08/image.png 1500w" sizes="auto, (max-width: 612px) 100vw, 612px" /></a></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><a href="https://cloudrf.com/wp-content/uploads/2023/08/image-2.png" rel="lightbox[20391]"><img loading="lazy" decoding="async" src="https://cloudrf.com/wp-content/uploads/2023/08/image-2-1024x614.png" alt="" class="wp-image-20394" width="614" height="369" srcset="https://cloudrf.com/wp-content/uploads/2023/08/image-2-1024x614.png 1024w, https://cloudrf.com/wp-content/uploads/2023/08/image-2-300x180.png 300w, https://cloudrf.com/wp-content/uploads/2023/08/image-2-768x461.png 768w, https://cloudrf.com/wp-content/uploads/2023/08/image-2-416x250.png 416w, https://cloudrf.com/wp-content/uploads/2023/08/image-2.png 1500w" sizes="auto, (max-width: 614px) 100vw, 614px" /></a></figure>
</div>


<h2 class="wp-block-heading">Antennas and utilities</h2>



<p>Previously SOOTHSAYER&#8217;s antenna database was sparse but now it ships with over 500 patterns from major OEMs as well as <strong>improved tools to validate, convert different text formats, import ADF patterns and search</strong>. Pattern images have been retired for dynamic plots direct-from-source so what you see is what you get and the custom plots are  indistinguishable from OEM patterns in both the UI and outputs.</p>



<p>The new look database lets you find patterns quicker than ever with responsive filters. Type the first few letters of what you&#8217;re looking for to reduce search results.</p>



<p>The rating feature lets your team score patterns so &#8220;the good ones&#8221; are always top of the list. </p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><a href="https://cloudrf.com/wp-content/uploads/2023/08/image-3.png" rel="lightbox[20391]"><img loading="lazy" decoding="async" src="https://cloudrf.com/wp-content/uploads/2023/08/image-3-1024x583.png" alt="" class="wp-image-20395" width="658" height="374" srcset="https://cloudrf.com/wp-content/uploads/2023/08/image-3-1024x583.png 1024w, https://cloudrf.com/wp-content/uploads/2023/08/image-3-300x171.png 300w, https://cloudrf.com/wp-content/uploads/2023/08/image-3-768x438.png 768w, https://cloudrf.com/wp-content/uploads/2023/08/image-3-1536x875.png 1536w, https://cloudrf.com/wp-content/uploads/2023/08/image-3-416x237.png 416w, https://cloudrf.com/wp-content/uploads/2023/08/image-3.png 1848w" sizes="auto, (max-width: 658px) 100vw, 658px" /></a></figure>
</div>


<h2 class="wp-block-heading">Enhanced MANET limits</h2>



<p>Limits for the Multisite API and it&#8217;s flasgship <strong>MANET</strong> tool have been enhanced. You can now do <strong>500km radius / 310 Mile MANET sites and networks that are 2000km wide</strong>. </p>



<p><em>If you try to create a network across the Atlantic Ocean this won&#8217;t work&#8230;.yet.</em></p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><a href="https://cloudrf.com/wp-content/uploads/2023/08/image-4.png" rel="lightbox[20391]"><img loading="lazy" decoding="async" src="https://cloudrf.com/wp-content/uploads/2023/08/image-4.png" alt="" class="wp-image-20396" width="600" height="547" srcset="https://cloudrf.com/wp-content/uploads/2023/08/image-4.png 800w, https://cloudrf.com/wp-content/uploads/2023/08/image-4-300x273.png 300w, https://cloudrf.com/wp-content/uploads/2023/08/image-4-768x700.png 768w, https://cloudrf.com/wp-content/uploads/2023/08/image-4-416x379.png 416w" sizes="auto, (max-width: 600px) 100vw, 600px" /></a></figure>
</div>


<h2 class="wp-block-heading">VSphere 8 support</h2>



<p>SOOTHSAYER has been successfully tested on enterprise servers (HPE) with <strong>VSphere 8 and a Nvidia T4 </strong>GPU. VSphere 8 uses UEFI firmware (instead of BIOS) by default which is becoming the norm as enterprise moves towards trusted platform architectures.</p>



<p>It has also been tested with Proxmox, Virtualbox and Azure environments. <strong>We recommend Proxmox </strong>for SOOTHSAYER for the widest GPU support (RTX etc) and VSphere for enterprise GPUs. </p>



<p><em>You can install the VM on a GPU laptop with Linux but this is only recommended for people who like a challenge. We have a tutorial video and instructions available for this</em>.</p>



<h2 class="wp-block-heading">ATAK plugin</h2>



<p>It comes with a free TPC signed plugin for ATAK 4.8: <a href="https://github.com/Cloud-RF/SOOTHSAYER-ATAK-plugin">https://github.com/Cloud-RF/SOOTHSAYER-ATAK-plugin</a></p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://cloudrf.com/wp-content/uploads/2023/08/atak_s20_800px.jpg" rel="lightbox[20391]"><img loading="lazy" decoding="async" width="800" height="436" src="https://cloudrf.com/wp-content/uploads/2023/08/atak_s20_800px.jpg" alt="" class="wp-image-20397" srcset="https://cloudrf.com/wp-content/uploads/2023/08/atak_s20_800px.jpg 800w, https://cloudrf.com/wp-content/uploads/2023/08/atak_s20_800px-300x164.jpg 300w, https://cloudrf.com/wp-content/uploads/2023/08/atak_s20_800px-768x419.jpg 768w, https://cloudrf.com/wp-content/uploads/2023/08/atak_s20_800px-416x227.jpg 416w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></figure>
</div>


<h2 class="wp-block-heading">Simple data storage with a second drive</h2>



<p>You don&#8217;t need to mount an SMB share for your data anymore! (You can if you want to though&#8230;)</p>



<p><strong>Just attach a second disk to the VM and reboot.</strong> You decide the size.  Your terrain data and user files will be saved to this disk. The database remains encrypted inside the first disk. </p>



<p>If you don&#8217;t then you can still use it but will get warnings telling you about disk limits it in the CLI:</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://cloudrf.com/wp-content/uploads/2023/08/image-5.png" rel="lightbox[20391]"><img loading="lazy" decoding="async" width="1024" height="236" src="https://cloudrf.com/wp-content/uploads/2023/08/image-5-1024x236.png" alt="" class="wp-image-20417" srcset="https://cloudrf.com/wp-content/uploads/2023/08/image-5-1024x236.png 1024w, https://cloudrf.com/wp-content/uploads/2023/08/image-5-300x69.png 300w, https://cloudrf.com/wp-content/uploads/2023/08/image-5-768x177.png 768w, https://cloudrf.com/wp-content/uploads/2023/08/image-5-416x96.png 416w, https://cloudrf.com/wp-content/uploads/2023/08/image-5.png 1272w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<p></p>



<h2 class="wp-block-heading">Change log</h2>



<h2 class="wp-block-heading">1.6.0 </h2>



<h3 class="wp-block-heading">API v3.8.10</h3>



<h4 class="wp-block-heading">3.8.10 (2023-08-16)</h4>



<ul class="wp-block-list">
<li>Improvement: New default dBm and dB colour keys</li>



<li>Improvement: Enhanced admin dashboard for server</li>



<li>Improvement: Auto-rotate function for misaligned patterns refined</li>



<li>Fix: A private server will fetch MS buildings from CloudRF before OSM</li>



<li>Fix: Path and route ATAK data packages not working in ATAK.</li>



<li>Fix: Downloading <code>.ant</code> returns <code>NAN</code> and <code>INF</code>.</li>



<li>Fix: GPU elevation pattern downtilt aligns with CPU</li>
</ul>



<h4 class="wp-block-heading">3.8.9 (2023-08-05)</h4>



<ul class="wp-block-list">
<li>Improvement: More verbose errors for engine/data failure</li>



<li>Improvement: Handling and logging corrupt DTM files</li>
</ul>



<h4 class="wp-block-heading">3.8.8 (2023-07-31)</h4>



<ul class="wp-block-list">
<li>Improvement: MANET KMZ now returns points and heatmap</li>



<li>Fix: Refactored antenna pattern parsing</li>



<li>Fix: Fixed bug in antenna auto-alignment</li>



<li>Fix: Sorting MANET files to use latest when requesting KMZ</li>
</ul>



<h4 class="wp-block-heading">3.8.7 (2023-07-25)</h4>



<ul class="wp-block-list">
<li>Improvement: MANET networks in the archive show average value for each of the columns.</li>



<li>Improvement: Added support for MS 2m buildings via buildings option</li>



<li>Improvement: Using buildings will now only go to OSM as a last resort</li>



<li>Improvement: System clutter profiles adjusted to make vegetation more dense</li>



<li>Fix: Remote tile download not working with DTM tiles.</li>
</ul>



<h4 class="wp-block-heading">3.8.6 (2023-07-21)</h4>



<ul class="wp-block-list">
<li>Improvement: Custom antenna optimisations</li>



<li>Feature: Redesign of antennas database to make use of ADF files.</li>



<li>Fix: Handling legacy .ANT patterns not referenced to 0dB PEP</li>
</ul>



<h4 class="wp-block-heading">3.8.5 (2023-07-05)</h4>



<ul class="wp-block-list">
<li>Improvement: GPU can now do 500km radius with a minimum 180m resolution</li>



<li>Improvement: Multisite limit increased to 2000km for wide networks</li>



<li>Improvement: Logarithmic custom antenna pattern radiation</li>
</ul>



<h4 class="wp-block-heading">3.8.4 (2023-06-23)</h4>



<ul class="wp-block-list">
<li>Improvement: GPU calcs can now use custom clutter</li>



<li>Fix: Storing antenna gain before feeder loss adjustment</li>



<li>Fix: <code>area</code> and <code>coverage</code> values returned in KMZ balloon not being calculated.</li>



<li>Fix: When using PPA tool network name is appended with <code>_PPA</code> to separate from other calculations in the archive.</li>



<li>Fix: Interference tool not working with GPU calculations.</li>
</ul>



<h4 class="wp-block-heading">3.8.3 (2023-04-24)</h4>



<ul class="wp-block-list">
<li>Feature: Added <code>session</code> endpoint to get current load state of API in the response of a PNG image.</li>



<li>Feature: Area calculation <code>site</code> and <code>network</code> parameters now accept Latin letters which are not in the ISO basic Latin alphabet.</li>



<li>Feature: Added <code>remaining_calculations_since_last_purchase</code> to <code>my-metrics</code> API.</li>



<li>Feature: Added <code>edges</code> argument to a BSA request to allow an area to be defined for a BSA area which is cut out during processing.</li>



<li>Feature: Requesting <code>tiff</code> file type on an <code>area</code> request returns both <code>3857</code> and <code>4326</code> projections.</li>



<li>Improvement: Requesting <code>tiff</code> file type via the archive is now compressed to reduce size and transfer time.</li>



<li>Improvement: Additional error reporting and logging.</li>



<li>Fix: Antenna search form now shows all patterns for a given OEM when name is selected even if search string not present in description/filename</li>



<li>Fix: <code>site</code> is not a required field.</li>



<li>Fix: Google Earth throws an error upon first loading a coverage layer in relation to the PPA tool. This was causing errors as the PPA tool is called immediately after the loading of the coverage layer of which both the transmitter and receiver locations were the same.</li>



<li>Fix: Some temporary files not being removed during cleanup process.</li>



<li>Fix: User clutter files being copied to wrong location when using GPU processing engine.</li>



<li>Fix: Google Earth throws an error upon first loading a coverage layer in relation to the PPA tool. This was causing errors as the PPA tool is called immediately after the loading of the coverage layer of which both the transmitter and receiver locations were the same.</li>



<li>Fix: User clutter files being copied to wrong location when using GPU processing engine.</li>



<li>Fix: Submitting <code>receiver.lat</code> or <code>receiver.lon</code> to <code>area</code> endpoint causes calculation failures.</li>



<li>Fix: Timings no longer output for error messages on production.</li>



<li>Fix: <code>credits</code> returned from <code>preferences</code> not factoring in requested calculations.</li>



<li>Fix: Loading KMZ into Google Earth would immediately fire off a PPA calculation.</li>



<li>Fix: Calculations made in Google Earth would always have <code>TEST</code> network name.</li>
</ul>



<h4 class="wp-block-heading">3.8.2 (2023-03-28)</h4>



<ul class="wp-block-list">
<li>Improvement: Polarity for custom patterns</li>



<li>Fix: Rx gain NULL after using interference tool</li>



<li>Fix: All KMZs contained the GE ppa tool</li>



<li>Fix: Removing gain from ADF patterns so all are referenced to 0dB PEP</li>



<li>Fix: Using Signal to Noise units with a receiver sensitivity of 0 dB caused an issue</li>



<li>Fix: Google Earth PPA tool could fail when both markers were stacked up. Now fails gracefully.</li>



<li>Fix: Antenna model and OEM search filters was using OR vs AND</li>
</ul>



<h4 class="wp-block-heading">3.8.1 (2023-03-02)</h4>



<ul class="wp-block-list">
<li>Improvement: GPU engine has improved Huygens diffraction</li>



<li>Improvement: Colour steps can now be any value between -30 and +30</li>



<li>Improvement: New buildings are now fetched synchonously so will block for request #1 up to a max of 30s</li>



<li>Improvement: Extended bandwidth lower limit from 10kHz (0.01MHz) to 1kHz (0.001MHz).</li>



<li>Improvement: Extended noise floor lower limit from -140 to -150 dBm.</li>



<li>Improvement: Requesting a network which doesn’t exist in a <code>mesh</code> calculation will indicate up to 3 network names which have been used recently.</li>



<li>Improvement: Chatbot authentication process simplified. The user ID will always be the ID of the Chatbot.</li>



<li>Improvement: Extended bandwidth lower limit from 10kHz (0.01MHz) to 1kHz (0.001MHz).</li>



<li>Improvement: Extended noise floor lower limit from -140 to -150 dBm.</li>



<li>Commercial: Ibiza is no longer the anonymous-full-spectrum-party-island due to abuse. A plan is required to test.</li>



<li>Fix: Tightened restrictions on users on free plan.</li>



<li>Fix: Interference tool failing to produce result.</li>



<li>Fix: Bug in SLEIPNIR JSON report for very low power levels eg. 0dBm with feeder loss. Fixed as 1.6.2</li>



<li>Fix: Points megapixel calculation ignores radius in favour of point distance. Hard limit of 64MP</li>



<li>Fix: Confusing error messages when running a <code>mesh</code> calculation.</li>



<li>Fix: Chatbot outputs any returned error messages when a multisite API request fails.</li>



<li>Fix: Tightened restrictions on users on free plan.</li>



<li>Fix: Interference tool failing to produce result.</li>



<li>Fix: Show the callsign of the device which is authenticated with Chatbot as this is more useful than a device ID.</li>



<li>Fix: Requesting 3857 projections for GPU calculations (viewshed, BSA, multsite) returning HTTP 404.</li>



<li>Fix: Selecting a bad antenna ID would throw a HTTP 500 with no output error message.</li>



<li>Fix: PPA URL outputs will return a secure encrypted URL so as to now expose information via the public URL.</li>



<li>Fix: Multisite endpoint reporting validation errors for some imperial units.</li>



<li>Fix: Multisite endpoint not honouring imperial units.</li>
</ul>



<h3 class="wp-block-heading">UI v3.8.8</h3>



<h4 class="wp-block-heading">3.8.8 (2023-08-15)</h4>



<ul class="wp-block-list">
<li>Update: Satellite database updated to 01/08/2023.</li>



<li>Fix: Calculate ERP after switching antenna pattern</li>



<li>Fix: BSA colour key no longer disabled when BSA fails</li>
</ul>



<h4 class="wp-block-heading">3.8.7 (2023-07-31)</h4>



<ul class="wp-block-list">
<li>Feature: Added a download KMZ button to the MANET tool.</li>



<li>Fix: Skips polygons and polylines with no coordinates when uploading KML as clutter.</li>



<li>Fix: Bit error rate and modulation drop downs missing in Google Earth.</li>



<li>Fix: GPU engine enabled no longer hides the play button to allow calculations to be made without changing settings.</li>



<li>Fix: Gracefully fail with a message when unable to load path profile results from the archive.</li>



<li>Fix: Gracefully fail with a message when an image could be loaded properly for some scenarios.</li>



<li>Fix: Multi-point results hover in the sky when turning off 3D terrain.</li>
</ul>



<h4 class="wp-block-heading">3.8.6 (2023-07-13)</h4>



<ul class="wp-block-list">
<li>Fix: Buildings on the Path Profile Chart were all being bunched up on the left when land cover was turned OFF.</li>



<li>Feature: “My patterns” antennas makes use of recent updates to API endpoints and draws pattern plots rather than outputting JPEG images.</li>



<li>Fix: Antenna menu labels tidied and widths standardised. Horizontal is now H, Vertical is now V.</li>
</ul>



<h4 class="wp-block-heading">3.8.5 (2023-06-23)</h4>



<ul class="wp-block-list">
<li>Fix: Handling blocked sentry script with link to adblocker FAQ</li>



<li>Fix: Metric/Imperial logic in Multisite tool</li>



<li>Fix: MANET links not showing if no preference set</li>



<li>Fix: ERP not recalculated when reloading from archive</li>



<li>Fix: Deleted archive images now throw a error</li>
</ul>



<h4 class="wp-block-heading">3.8.4 (2023-05-23)</h4>



<ul class="wp-block-list">
<li>Enhancement: Loading page with async loader for large JS assets</li>



<li>Enhancement: Added “Hide Node” functionality to the MANET context menu.</li>



<li>Enhancement: Sets the default antenna gain when selecting an antenna.</li>
</ul>



<h4 class="wp-block-heading">3.8.3 (2023-04-24)</h4>



<ul class="wp-block-list">
<li>Fix: Removed “Plane Earth Loss” from models list.</li>



<li>Fix: Using “Line of Sight” model automatically sets diffraction to “Off”.</li>



<li>Fix: Improved error handling and reporting.</li>



<li>Fix: Issue when changing the colour schema while best site analysis is processing a drawn polygon.</li>



<li>Feature: API load status light added in top navbar upon page load.</li>



<li>Fix: Marker pin on MANET nodes at top of plumbline rather than at ground level.</li>
</ul>



<h4 class="wp-block-heading">3.8.2 (2023-03-28)</h4>



<ul class="wp-block-list">
<li>Enhancement: Welcome screen while loading ui.</li>



<li>Enhancement: Added reference data import dialog for CSV,KML,GeoJSON.</li>



<li>Enhancement: Increased 1000 row limit for CSV to 60k (Make sure your device has lots of memory if you use this)</li>



<li>Enhancement: BSA KML polygons via reference data form</li>



<li>Enhancement: MANET KML locations via reference data form</li>



<li>Enhancement: KML reference points via reference data form</li>



<li>Fix: Issue when entering invalid DMS coordinates.</li>
</ul>



<h4 class="wp-block-heading">3.8.1 (2023-03-03)</h4>



<ul class="wp-block-list">
<li>Improvement: Upgraded CesiumJS to the latest version.</li>



<li>Fix: Mouse hover tooltip value lookup to use the correct schema for multiple layers with different schemas.</li>



<li>Fix: Error messages from API for MANET tool not being output.</li>



<li>Fix: MANET failed links are styled which is confusing, particular when zoomed out and dashed line is not visible.</li>



<li>Fix: Best server tool able to misfire on GPU area calculation upon click.</li>



<li>Fix: Allow for imperial units with MANET heatmap which adds locking to the <code>dis</code> value to prevent unit mismatch.</li>
</ul>



<p></p>



<h2 class="wp-block-heading">More information</h2>



<p>To request more details <a href="https://cloudrf.com/soothsayer/">see here</a>, or to get a quote or a demo VM, get in touch from your official email.  </p>
<p>The post <a href="https://cloudrf.com/soothsayer-1-6-released/">SOOTHSAYER 1.6 released</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
