<?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>Thu, 06 Aug 2026 11:11:57 +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>Tough Stump Rodeo 2026</title>
		<link>https://cloudrf.com/tough-stump-rodeo-2026/</link>
		
		<dc:creator><![CDATA[CloudRF]]></dc:creator>
		<pubDate>Sun, 07 Jun 2026 21:13:26 +0000</pubDate>
				<category><![CDATA[Field testing]]></category>
		<category><![CDATA[Modelling]]></category>
		<category><![CDATA[Self-hosted]]></category>
		<guid isPermaLink="false">https://cloudrf.com/?p=68218</guid>

					<description><![CDATA[<p>Overview The Tough Stump Rodeo is an outdoor edge technology demonstration set in rural Montana.Selected companies collaborate to integrate their capabilities with the ATAK common-operating-picture to complete communications challenges. CloudRF participated for the first time as a key enabler on the most challenging lane, the sub-terranean, which required participants to communicate and operate within an [&#8230;]</p>
<p>The post <a href="https://cloudrf.com/tough-stump-rodeo-2026/">Tough Stump Rodeo 2026</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Overview</h2>



<p>The <a href="https://toughstump.com/rodeo">Tough Stump Rodeo</a> is an outdoor edge technology demonstration set in rural Montana.<br>Selected companies collaborate to integrate their capabilities with the ATAK common-operating-picture to complete communications challenges.</p>



<p><strong>CloudRF participated for the first time</strong> as a key enabler on the most challenging lane, the sub-terranean, which required participants to communicate and operate within an underground mine set in a steep ravine located 50km from the HQ in mountainous terrain.</p>



<p class="has-medium-font-size"><strong>With accurate planning, we quickly built a large  radio network with less nodes and greater reliability than could be achieved with basic LOS tools.</strong></p>



<h2 class="wp-block-heading">Data Preparation</h2>



<p>Our preparation started early as we needed to acquire high resolution data for the area to ensure accuracy. Prior to the event our data resolution in Montana was only 30m. We sourced 2m accuracy LiDAR from the USGS for the Ruby valley which we enhanced with 2m resolution tree canopy data from Meta.</p>



<p class="has-normal-font-size"><br><em>Based on feedback from previous years about trees around the mine, we knew accurate tree data would be essential.</em></p>



<p>The data was loaded to the public system, CloudRF, weeks prior to the event and side-loaded to our offline SOOTHSAYER servers as GeoTIFF files within a data package.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><a href="https://cloudrf.com/wp-content/uploads/2026/06/ruby-valley-trees-lidar-1.jpg" rel="lightbox[68218]"><img fetchpriority="high" decoding="async" width="1024" height="524" src="https://cloudrf.com/wp-content/uploads/2026/06/ruby-valley-trees-lidar-1-1024x524.jpg" alt="" class="wp-image-68229" style="aspect-ratio:1.9542224810716367;width:602px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2026/06/ruby-valley-trees-lidar-1-1024x524.jpg 1024w, https://cloudrf.com/wp-content/uploads/2026/06/ruby-valley-trees-lidar-1-300x154.jpg 300w, https://cloudrf.com/wp-content/uploads/2026/06/ruby-valley-trees-lidar-1-768x393.jpg 768w, https://cloudrf.com/wp-content/uploads/2026/06/ruby-valley-trees-lidar-1-416x213.jpg 416w, https://cloudrf.com/wp-content/uploads/2026/06/ruby-valley-trees-lidar-1.jpg 1447w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">High resolution DTM and Tree canopy data in the Ruby Valley, MT</figcaption></figure>
</div>


<p></p>



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



<p>We deployed with <strong>three offline SOOTHSAYER servers</strong> of varying size with several phones and tablets as clients:</p>



<ul class="wp-block-list">
<li class="has-normal-font-size">A standard HP <a href="https://www.hp.com/us-en/workstations/zbook-8.html">Z-Book</a> laptop running Windows/Podman (RTX4070 GPU capable of 15.6 TFLOPS)</li>



<li class="has-normal-font-size">A Carnegie Robotics <a href="https://www.carnegierobotics.com/cardshark">CardShark</a> computer running Ubuntu/Docker powered by a portable USB-C power bank (Jetson Orin NX capable of 3.7 TFLOPS) </li>



<li class="has-normal-font-size">A Solace Communications <a href="https://www.solacecomms.com/services-products/global-edge/">Global Edge</a> computer running Ubuntu/Docker powered by a larger USB-C power bank (Jetson Orin NX capable of 3.7 TFLOPS) </li>
</ul>



<p><em>Additionally,</em> <em>The Global Edge computer was prepared with our Trellisware API script which interfaces directly with a donor radio to model live network coverage.</em></p>



<h2 class="wp-block-heading">Site survey, Sunday</h2>



<p>As we were headed to a new area, we were keen to know as much as possible about the terrain which for communications means <strong>noise as much as topography</strong>.<br>We took a spectrum analyser up to the mine site on a wet Sunday to check out the noise in the L and S bands and after a long insertion hike due to a closed seasonal access road we were satisfied to find there was no RF noise there. </p>



<p>The nearest noise source was a cell tower up the Ruby valley below which due its location was not able to serve the area of interest. We were therefore able to use the Johnson Nyquist formula with high accuracy to predict the expected noise floor for a given bandwidth.</p>



<p>We modelled the Mine location with modest system profiles (low height/power) to see if we could identify any local relay opportunities. The mine was tricky as it was in a steep forest ravine so we stood at the entrance and observed where it could reach. This low tech study confirmed our modelling which highlighted a hill ~750m due west which just overlooked the mine and had excellent views across the Ruby valley to the south.</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/06/mine-recce.jpg" rel="lightbox[68218]"><img decoding="async" width="768" height="1024" data-id="68238" src="https://cloudrf.com/wp-content/uploads/2026/06/mine-recce-768x1024.jpg" alt="" class="wp-image-68238" srcset="https://cloudrf.com/wp-content/uploads/2026/06/mine-recce-768x1023.jpg 768w, https://cloudrf.com/wp-content/uploads/2026/06/mine-recce-225x300.jpg 225w, https://cloudrf.com/wp-content/uploads/2026/06/mine-recce-416x554.jpg 416w, https://cloudrf.com/wp-content/uploads/2026/06/mine-recce.jpg 800w" sizes="(max-width: 768px) 100vw, 768px" /></a><figcaption class="wp-element-caption">Gate is closed&#8230;and there&#8217;s bears :/</figcaption></figure>



<figure class="wp-block-image size-large"><a href="https://cloudrf.com/wp-content/uploads/2026/06/mine-spectrum.jpg" rel="lightbox[68218]"><img decoding="async" width="1000" height="753" data-id="68239" src="https://cloudrf.com/wp-content/uploads/2026/06/mine-spectrum.jpg" alt="" class="wp-image-68239" srcset="https://cloudrf.com/wp-content/uploads/2026/06/mine-spectrum.jpg 1000w, https://cloudrf.com/wp-content/uploads/2026/06/mine-spectrum-300x226.jpg 300w, https://cloudrf.com/wp-content/uploads/2026/06/mine-spectrum-768x578.jpg 768w, https://cloudrf.com/wp-content/uploads/2026/06/mine-spectrum-416x313.jpg 416w" sizes="(max-width: 1000px) 100vw, 1000px" /></a><figcaption class="wp-element-caption">No signals noted</figcaption></figure>



<figure class="wp-block-image size-large"><a href="https://cloudrf.com/wp-content/uploads/2026/06/mine-tree-shot.jpg" rel="lightbox[68218]"><img loading="lazy" decoding="async" width="1000" height="670" data-id="68246" src="https://cloudrf.com/wp-content/uploads/2026/06/mine-tree-shot.jpg" alt="" class="wp-image-68246" srcset="https://cloudrf.com/wp-content/uploads/2026/06/mine-tree-shot.jpg 1000w, https://cloudrf.com/wp-content/uploads/2026/06/mine-tree-shot-300x201.jpg 300w, https://cloudrf.com/wp-content/uploads/2026/06/mine-tree-shot-768x515.jpg 768w, https://cloudrf.com/wp-content/uploads/2026/06/mine-tree-shot-416x279.jpg 416w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></a><figcaption class="wp-element-caption">Relay hill seen through the trees</figcaption></figure>



<figure class="wp-block-image size-large"><a href="https://cloudrf.com/wp-content/uploads/2026/06/mine-rf-coverage.jpg" rel="lightbox[68218]"><img loading="lazy" decoding="async" width="1000" height="597" data-id="68249" src="https://cloudrf.com/wp-content/uploads/2026/06/mine-rf-coverage.jpg" alt="" class="wp-image-68249" srcset="https://cloudrf.com/wp-content/uploads/2026/06/mine-rf-coverage.jpg 1000w, https://cloudrf.com/wp-content/uploads/2026/06/mine-rf-coverage-300x179.jpg 300w, https://cloudrf.com/wp-content/uploads/2026/06/mine-rf-coverage-768x458.jpg 768w, https://cloudrf.com/wp-content/uploads/2026/06/mine-rf-coverage-416x248.jpg 416w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></a><figcaption class="wp-element-caption">RF coverage from outside the mine</figcaption></figure>
</figure>



<p>Using a mean site upon the hill within the painted coverage area we ran a second simulation with an extreme 40km radius to see <em>where</em> this could hit. We were pleased to see coverage on an embankment 35km down the ruby valley which was useful as the valley&#8217;s curved shape meant a relay would be required. </p>



<p>Next, we ran a simulation on the distant HQ location which revealed an area of mutual coverage. A plan was forming&#8230;</p>



<p><strong>When running long range heatmaps, the resolution becomes diluted</strong>. This is necessary to remain within processing limits as whilst 16 million point calculations are available due to the large GPUS we have on CloudRF, they are impractical for a battery powered Jetson which must share its output over a radio network on ATAK. <em>We also observed notable latency with fetching large KMZ files via the radio&#8217;s onboard Wi-Fi as it&#8217;s running an older 802.11 standard.</em></p>



<p>We used our plugin&#8217;s limit of 4MP which provides a high resolution result in a practical time of several seconds. Our solution to the &#8216;mountain repeater&#8217; problem whereby a distant tower is serving a remote location is the bounds feature. This API parameter defines a polygon which focuses processing effort to increase speed and accuracy.</p>



<p>As you can see from the images, the difference the bounds feature offers is significant. It allows the simulation of high resolution at long distances which previously would have been impractical with a &#8216;big heatmap&#8217;.</p>



<p>We drove to the relay we wanted to use and were disappointed to find it was on private land which was time well spent none the less. As a result we identified a secondary site on a layby to the north which was the best we could do.</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-large"><a href="https://cloudrf.com/wp-content/uploads/2026/06/ball-place-lowres.jpg" rel="lightbox[68218]"><img loading="lazy" decoding="async" width="1000" height="635" data-id="68258" src="https://cloudrf.com/wp-content/uploads/2026/06/ball-place-lowres.jpg" alt="" class="wp-image-68258" srcset="https://cloudrf.com/wp-content/uploads/2026/06/ball-place-lowres.jpg 1000w, https://cloudrf.com/wp-content/uploads/2026/06/ball-place-lowres-300x191.jpg 300w, https://cloudrf.com/wp-content/uploads/2026/06/ball-place-lowres-768x488.jpg 768w, https://cloudrf.com/wp-content/uploads/2026/06/ball-place-lowres-416x264.jpg 416w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></a><figcaption class="wp-element-caption">Mine coverage</figcaption></figure>



<figure class="wp-block-image size-large"><a href="https://cloudrf.com/wp-content/uploads/2026/06/mutual-coverage.jpg" rel="lightbox[68218]"><img loading="lazy" decoding="async" width="984" height="701" data-id="68259" src="https://cloudrf.com/wp-content/uploads/2026/06/mutual-coverage.jpg" alt="" class="wp-image-68259" srcset="https://cloudrf.com/wp-content/uploads/2026/06/mutual-coverage.jpg 984w, https://cloudrf.com/wp-content/uploads/2026/06/mutual-coverage-300x214.jpg 300w, https://cloudrf.com/wp-content/uploads/2026/06/mutual-coverage-768x547.jpg 768w, https://cloudrf.com/wp-content/uploads/2026/06/mutual-coverage-416x296.jpg 416w" sizes="auto, (max-width: 984px) 100vw, 984px" /></a><figcaption class="wp-element-caption">Mutual coverage</figcaption></figure>



<figure class="wp-block-image size-large"><a href="https://cloudrf.com/wp-content/uploads/2026/06/ball-place-focused-1.jpg" rel="lightbox[68218]"><img loading="lazy" decoding="async" width="968" height="603" data-id="68260" src="https://cloudrf.com/wp-content/uploads/2026/06/ball-place-focused-1.jpg" alt="" class="wp-image-68260" srcset="https://cloudrf.com/wp-content/uploads/2026/06/ball-place-focused-1.jpg 968w, https://cloudrf.com/wp-content/uploads/2026/06/ball-place-focused-1-300x187.jpg 300w, https://cloudrf.com/wp-content/uploads/2026/06/ball-place-focused-1-768x478.jpg 768w, https://cloudrf.com/wp-content/uploads/2026/06/ball-place-focused-1-416x259.jpg 416w" sizes="auto, (max-width: 968px) 100vw, 968px" /></a><figcaption class="wp-element-caption">Focused mutual coverage</figcaption></figure>
</figure>



<h2 class="wp-block-heading">Setup, Monday</h2>



<p>Our radio partner trusted our recommendation and deployed a <a href="https://www.comrod.com/products/etams/">Comrod ETAMs mast</a> to the layby despite it not being recommended as one of the official repeater positions.<br>The first (15km) link back to the HQ was barely workable which aligned with the fringe heatmaps we had generated. The weak link was immediately made good by climbing the steep hill overlooking the HQ. <em>The additional height cleared the Fresnel zone which was obstructed by trees and buildings in the valley.</em></p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://cloudrf.com/wp-content/uploads/2026/06/UCO-hill-relay.jpg" rel="lightbox[68218]"><img loading="lazy" decoding="async" width="1000" height="690" src="https://cloudrf.com/wp-content/uploads/2026/06/UCO-hill-relay.jpg" alt="" class="wp-image-68267" srcset="https://cloudrf.com/wp-content/uploads/2026/06/UCO-hill-relay.jpg 1000w, https://cloudrf.com/wp-content/uploads/2026/06/UCO-hill-relay-300x207.jpg 300w, https://cloudrf.com/wp-content/uploads/2026/06/UCO-hill-relay-768x530.jpg 768w, https://cloudrf.com/wp-content/uploads/2026/06/UCO-hill-relay-416x287.jpg 416w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></a><figcaption class="wp-element-caption">Improving the signal from a local hill</figcaption></figure>
</div>


<p>With the first link in,  focus shifted to the long link to the mine.</p>



<p>We drove up to the mine and headed out on foot to the exposed hillside we had identified from the mine. This was a steep and difficult route, in hot weather, with rattlesnakes and bears, which Alex H from Trellisware made no less than 5 times. Give that man a raise!</p>



<p>On the hill we used ATAK to navigate to the area on the track on the hill we had identified. This zone covered several prominent rocky outcrops which as we found were popular for sunbathing by snakes. Once in the zone, it became apparent that this would work as <strong>radios with low gain whips were connecting</strong> to the distant 35km relay. This link was boosted from workable to good, and fit for video, with the deployment of a Farfield Antennas APEX directional antenna.</p>



<p>Our relief at establishing communications was short lived as we were challenged to find a better spot. We used SOOTHSAYER on the CardShark server to simulate the midpoint relay to produce an updated layer. This layer was used to identify a better site nearby at a rocky outcrop on the hill. We relocated to the new site and were pleased to confirm a modest improvement to the link SNR. The scale in the change of location was minor given the 35km distance and the fact both sites had equally great views down the valley but the improvement was notable due to the shape of the convex hill and it validated accurate simulation over &#8216;looks good&#8217;.</p>



<p>During the excitement of closing the big one, we forgot to leave behind a radio at the mine to test the next link. This was soon rectified by a party which returned to the mine and confirmed a good link, which did not come as a surprise given the visibility from the mine and close proximity at ~750m.</p>



<p><strong>A very satisfying radio check from the mine was heard at the HQ 50km away around the valley, over 3 links. </strong></p>



<figure class="wp-block-gallery aligncenter has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-full"><a href="https://cloudrf.com/wp-content/uploads/2026/06/mine-relay-team-photo-1.jpg" rel="lightbox[68218]"><img loading="lazy" decoding="async" width="900" height="678" data-id="68277" src="https://cloudrf.com/wp-content/uploads/2026/06/mine-relay-team-photo-1.jpg" alt="" class="wp-image-68277" srcset="https://cloudrf.com/wp-content/uploads/2026/06/mine-relay-team-photo-1.jpg 900w, https://cloudrf.com/wp-content/uploads/2026/06/mine-relay-team-photo-1-300x226.jpg 300w, https://cloudrf.com/wp-content/uploads/2026/06/mine-relay-team-photo-1-768x579.jpg 768w, https://cloudrf.com/wp-content/uploads/2026/06/mine-relay-team-photo-1-416x313.jpg 416w" sizes="auto, (max-width: 900px) 100vw, 900px" /></a><figcaption class="wp-element-caption">Staying hydrated</figcaption></figure>



<figure class="wp-block-image size-full"><a href="https://cloudrf.com/wp-content/uploads/2026/06/mine-relay-equipment.jpg" rel="lightbox[68218]"><img loading="lazy" decoding="async" width="900" height="1200" data-id="68291" src="https://cloudrf.com/wp-content/uploads/2026/06/mine-relay-equipment.jpg" alt="" class="wp-image-68291" srcset="https://cloudrf.com/wp-content/uploads/2026/06/mine-relay-equipment.jpg 900w, https://cloudrf.com/wp-content/uploads/2026/06/mine-relay-equipment-225x300.jpg 225w, https://cloudrf.com/wp-content/uploads/2026/06/mine-relay-equipment-768x1024.jpg 768w, https://cloudrf.com/wp-content/uploads/2026/06/mine-relay-equipment-416x555.jpg 416w" sizes="auto, (max-width: 900px) 100vw, 900px" /></a><figcaption class="wp-element-caption">APEX antenna,  CardShark server, TW-950 Radio</figcaption></figure>
</figure>



<p>With the sites identified, the network was optimised with wired links between co-located relay nodes on <strong>alternative frequencies to increase throughput</strong>. There were other configuration changes higher up the OSI model also which are not covered here as we&#8217;re focused on establishing layer 1 only. The optimisations were designed to increase throughput and reduce latency to support both video and live UAS control.</p>



<h2 class="wp-block-heading">Live coverage mapping</h2>



<p>In our vehicle we kept our Global Edge server which had a higher endurance than the CardShark. This server was connected to a donor radio&#8217;s Wi-Fi access point as a client which enabled it to interact with the Trellisware API.</p>



<p>Our Trellisware python script fetches radio metadata to generate coverage heatmaps for the network using live settings including noise. This is presented as a network KML layer which is consumed by clients including ATAK.</p>



<p>We last demonstrated this in our office car park with our own TW-750 radios so it was exciting to use it on a mountain with a diverse network of different radios. We&#8217;re pleased to report it worked as designed after a tweak on the mountain to handle output from radios we&#8217;ve not worked with before. We&#8217;ve even heard a rumour the KML refresh may be lowered this year to support faster refresh rates, nearly <a href="https://github.com/deptofdefense/AndroidTacticalAssaultKit-CIV/pull/13">6 years after we requested this.</a></p>



<p>We also exercised the ATAK plugin&#8217;s Co-Opt function. This powerful feature allows any callsign on the map to be given a radio template which follows its position. As the callsign moves, the radio coverage moves. You can see a video of it on our youtube channel.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><a href="https://cloudrf.com/wp-content/uploads/2026/06/global-edge-soothsayer-bonnet-rotated.jpg" rel="lightbox[68218]"><img loading="lazy" decoding="async" width="900" height="1200" src="https://cloudrf.com/wp-content/uploads/2026/06/global-edge-soothsayer-bonnet-rotated.jpg" alt="" class="wp-image-68298" style="width:592px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2026/06/global-edge-soothsayer-bonnet-rotated.jpg 900w, https://cloudrf.com/wp-content/uploads/2026/06/global-edge-soothsayer-bonnet-225x300.jpg 225w, https://cloudrf.com/wp-content/uploads/2026/06/global-edge-soothsayer-bonnet-768x1024.jpg 768w, https://cloudrf.com/wp-content/uploads/2026/06/global-edge-soothsayer-bonnet-416x555.jpg 416w" sizes="auto, (max-width: 900px) 100vw, 900px" /></a><figcaption class="wp-element-caption">Global Edge server running SOOTHSAYER</figcaption></figure>
</div>


<p></p>



<h2 class="wp-block-heading">Show time and interference</h2>



<p>The network was scheduled to deliver a live video feed of a drone exploring the mine. </p>



<p>Despite a day of successful testing,  leaving radios behind overnight in the mountains with wildlife and the elements meant unexpected issues were encountered which required local input to fix. On demo day an eleventh hour reset for the relay was promptly executed by Josh, who &#8216;hauled ass&#8217; whilst observing local speed limits to get up the valley and save the day.</p>



<p>The live video was streaming well on schedule via a local radio&#8217;s WiFi access point until the production tent filled with observers&#8230; At this time, the congestion within the 2.4GHz ISM band increased and the impact became obvious as the video deteriorated and then failed. The irony of engineering a 50km muti-hop data network in the mountains and failing at the last 2m inside the tent was a learning point. In hindsight, a wired connection to the tablet would have been safer and people should listen to Peter.</p>



<p>The WiFi link self restored due to Automatic Channel Selection (ACS) and normal service resumed with live UAS video streamed over the RF link under the direction of the HQ.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><a href="https://cloudrf.com/wp-content/uploads/2026/06/subt-demo-video.jpg" rel="lightbox[68218]"><img loading="lazy" decoding="async" width="1000" height="750" src="https://cloudrf.com/wp-content/uploads/2026/06/subt-demo-video.jpg" alt="" class="wp-image-68299" style="aspect-ratio:1.333342163823249;width:622px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2026/06/subt-demo-video.jpg 1000w, https://cloudrf.com/wp-content/uploads/2026/06/subt-demo-video-300x225.jpg 300w, https://cloudrf.com/wp-content/uploads/2026/06/subt-demo-video-768x576.jpg 768w, https://cloudrf.com/wp-content/uploads/2026/06/subt-demo-video-416x312.jpg 416w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></a><figcaption class="wp-element-caption">Live ATAK video relayed from the mine to the HQ</figcaption></figure>
</div>


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



<p>The event stress tested our capabilities to the limit, where it matters, and provided invaluable feedback we would never have found in a dozen trade shows or car park tests. We leave with very high confidence and a list of improvements and feature requests from the many customers and partners who we interacted with. </p>



<p>One of the most significant features will be the ability to <strong>expedite the site selection process for operators with a prompt to an LLM</strong> which can execute the multi-stage process of site selection using accurate radio templates. A lot of firms are chasing this AI dream but very few indeed have a mature, <strong>published</strong>, API to build upon.</p>



<p><em>We came prepared to model the inside of the mine using our 3D engine which was risky as we needed to acquire and then vectorise a large LiDAR scan from a robotics partner under a tight schedule. We acquired the model but hit formatting snags during the conversion to glTF so parked that task for another day. We did however produce a useful glTF to 3D tile script to present 3D models on ATAK which we will publish.</em></p>



<p>Despite the maturity, we&#8217;re still not elite enough to have our <a href="https://github.com/Cloud-RF/SOOTHSAYER-ATAK-plugin">open source plugin</a> listed on TAK.gov but as the push for published interfaces grows, we&#8217;re confident that sharing, not guarding, interfaces is the superior strategy for vendors serious about integration, more so in the age of AI. As more proof, we were pleased to see a shiny new plugin at this show that used our API with a radio API that was developed rapidly by a vendor without our knowledge.</p>



<p>Finally, for anyone still unsure if SOOTHSAYER works offline because our company has <em>Cloud</em> in the name, we can assure you it does as we do not own a Starlink and there is no cell coverage in the upper Ruby valley. </p>



<p>For more offline field tests see our <a href="https://youtube.com/cloudrfdotcom">Youtube channel</a>.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><a href="https://cloudrf.com/wp-content/uploads/2026/06/City-Brew-Coffee-Bozeman-1.jpeg" rel="lightbox[68218]"><img loading="lazy" decoding="async" width="1024" height="703" src="https://cloudrf.com/wp-content/uploads/2026/06/City-Brew-Coffee-Bozeman-1-1024x703.jpeg" alt="" class="wp-image-68283" style="aspect-ratio:1.456645056726094;width:716px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2026/06/City-Brew-Coffee-Bozeman-1-1024x703.jpeg 1024w, https://cloudrf.com/wp-content/uploads/2026/06/City-Brew-Coffee-Bozeman-1-300x206.jpeg 300w, https://cloudrf.com/wp-content/uploads/2026/06/City-Brew-Coffee-Bozeman-1-768x527.jpeg 768w, https://cloudrf.com/wp-content/uploads/2026/06/City-Brew-Coffee-Bozeman-1-416x286.jpeg 416w, https://cloudrf.com/wp-content/uploads/2026/06/City-Brew-Coffee-Bozeman-1.jpeg 1254w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">CloudRF celebrating like a privately funded company in City Brew Coffee, Bozeman</figcaption></figure>
</div><p>The post <a href="https://cloudrf.com/tough-stump-rodeo-2026/">Tough Stump Rodeo 2026</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<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 loading="lazy" 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="auto, (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 loading="lazy" 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="auto, (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 loading="lazy" 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="auto, (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[Field testing]]></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-4 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[Field testing]]></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[Field testing]]></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-5 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>
	</channel>
</rss>
