<?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>API Archives - CloudRF</title>
	<atom:link href="https://cloudrf.com/category/api/feed/" rel="self" type="application/rss+xml" />
	<link>https://cloudrf.com/category/api/</link>
	<description>Radio planning today</description>
	<lastBuildDate>Wed, 11 Feb 2026 09:26:54 +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>API Archives - CloudRF</title>
	<link>https://cloudrf.com/category/api/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Live network mapping endurance test</title>
		<link>https://cloudrf.com/live-network-mapping-endurance-test/</link>
		
		<dc:creator><![CDATA[CloudRF]]></dc:creator>
		<pubDate>Wed, 11 Feb 2026 09:26:52 +0000</pubDate>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Modelling]]></category>
		<category><![CDATA[Self-hosted]]></category>
		<guid isPermaLink="false">https://cloudrf.com/?p=56021</guid>

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



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



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



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



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



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



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



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



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



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



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



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



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



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



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


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><a href="https://cloudrf.com/wp-content/uploads/2026/02/carshark-batteries-phone.jpg" rel="lightbox[56021]"><img fetchpriority="high" 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="(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 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="(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 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="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">GPU load</figcaption></figure>
</div>

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


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



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



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



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


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


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



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



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



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


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


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



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



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



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



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



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



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



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



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



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

if (altitude - terrain &gt; 120.0) {

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

  marker.markerDetails.receiver.alt = terrain + 1

  marker.markerDetails.output.units = "m_amsl"

} else {

  marker.markerDetails.output.units = "m"

}</code></pre>



<p></p>



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



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



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



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



<p></p>



<p></p>



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



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



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


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


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

  elevationModel = ElevationData.MODEL_TERRAIN

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



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



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


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

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


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



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



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



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



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



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


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


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


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


<p></p>



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



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



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



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



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



<p></p>



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



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



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



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



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



<p></p>
<p>The post <a href="https://cloudrf.com/live-network-mapping-endurance-test/">Live network mapping endurance test</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Fast simulation calibration with Machine Learning</title>
		<link>https://cloudrf.com/fast-simulation-calibration-with-machine-learning/</link>
		
		<dc:creator><![CDATA[CloudRF]]></dc:creator>
		<pubDate>Wed, 24 Sep 2025 20:58:22 +0000</pubDate>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Modelling]]></category>
		<guid isPermaLink="false">https://cloudrf.com/?p=52237</guid>

					<description><![CDATA[<p>To Survey or Simulate Whether its survey drones, drive test vehicles or a police analyst with a backpack full of phones, the problem is the same: RF propagation surveys are very resource intensive. They&#8217;re more accurate than a simulation, but not more efficient. Survey data is typically a GPS log with signal metadata including a [&#8230;]</p>
<p>The post <a href="https://cloudrf.com/fast-simulation-calibration-with-machine-learning/">Fast simulation calibration with Machine Learning</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">To Survey or Simulate</h2>



<p>Whether its survey drones, drive test vehicles or a police analyst with a backpack full of phones, the problem is the same: RF propagation surveys are <em>very</em> resource intensive. They&#8217;re <strong>more accurate than a simulation, but not more efficient.</strong></p>



<p>Survey data is typically a GPS log with signal metadata including a signal strength value. This can be different measurement units but the principle is the same. It is data which shows the signal at a given point.</p>



<p>Surveying is preferred for good reason by some industries, especially for <a href="https://www.college.police.uk/career-learning/courses/radio-frequency-propagation-survey-rfps-technician">evidential purposes</a> where the variables in simulation open the door to uncertainty which nobody wants in court. Another reason is legacy desktop simulation software is slow and often inaccurate, especially amongst clutter which is more complex than a topographical study.</p>



<p>For example, relying upon a high-low empirical model like Hata which pre-dates developments in clutter will get you ~8dB accuracy whilst calibrated survey equipment can get you ~2dB, or ~3dB for an app on a standard phone.</p>



<h2 class="wp-block-heading">Manual calibration</h2>



<p>Using survey data like the output of <a href="https://rantcell.com/">Rantcell&#8217;s survey app</a>, we can load this into our web interface to perform calibration manually. This process involves adjusting <strong>model and/or clutter settings</strong> until the error between the simulation and the measurements is as low as possible. It&#8217;s an efficient process as you can test thousands of points in a single API call but also repetitive, interface based and requires engineer input to adjust clutter values for example. You can see manual calibration in action <a href="https://www.youtube.com/watch?v=Ru12zgsjNjE">here.</a></p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><a href="https://cloudrf.com/wp-content/uploads/2024/06/Europe-clutter-profile.png" rel="lightbox[52237]"><img loading="lazy" decoding="async" width="1024" height="636" src="https://cloudrf.com/wp-content/uploads/2024/06/Europe-clutter-profile-1024x636.png" alt="" class="wp-image-34879" style="width:652px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2024/06/Europe-clutter-profile-1024x636.png 1024w, https://cloudrf.com/wp-content/uploads/2024/06/Europe-clutter-profile-300x186.png 300w, https://cloudrf.com/wp-content/uploads/2024/06/Europe-clutter-profile-768x477.png 768w, https://cloudrf.com/wp-content/uploads/2024/06/Europe-clutter-profile-416x258.png 416w, https://cloudrf.com/wp-content/uploads/2024/06/Europe-clutter-profile.png 1048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<p>A good calibration would be <strong>below 8dB</strong>. For more on calibration of survey data, see one of our many <a href="https://cloudrf.com/accuracy">field test blogs.</a></p>



<p>Good survey data is thousands of points <strong>all around</strong> a site of interest. When we&#8217;re field testing, we choose our route to ensure we collect a diverse range of data.</p>



<h2 class="wp-block-heading">The Pizza Problem</h2>



<p>The pizza problem is when you only have a slice of data but need to infer the rest. This is very common in the real world where a customer may not be able to collect data all around a site for various reasons:</p>



<ul class="wp-block-list">
<li class="has-medium-font-size">Lack of time</li>



<li class="has-medium-font-size">Lack of access</li>



<li class="has-medium-font-size">Lack of resource</li>
</ul>



<p>This limited data is then used to estimate what the rest of the coverage looks like. For an omni-directional antenna, it&#8217;s a good assumption. For a directional antenna, it&#8217;s clearly less accurate but crucially, it is about making the best estimate using <em>available</em> data.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><a href="https://cloudrf.com/wp-content/uploads/2025/09/pizza-slice-1.png" rel="lightbox[52237]"><img loading="lazy" decoding="async" width="800" height="800" src="https://cloudrf.com/wp-content/uploads/2025/09/pizza-slice-1.png" alt="" class="wp-image-52262" style="width:294px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2025/09/pizza-slice-1.png 800w, https://cloudrf.com/wp-content/uploads/2025/09/pizza-slice-1-300x300.png 300w, https://cloudrf.com/wp-content/uploads/2025/09/pizza-slice-1-150x150.png 150w, https://cloudrf.com/wp-content/uploads/2025/09/pizza-slice-1-768x768.png 768w, https://cloudrf.com/wp-content/uploads/2025/09/pizza-slice-1-324x324.png 324w, https://cloudrf.com/wp-content/uploads/2025/09/pizza-slice-1-416x416.png 416w, https://cloudrf.com/wp-content/uploads/2025/09/pizza-slice-1-100x100.png 100w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></figure>
</div>


<p>If you can get more measurements, then do it. If you don&#8217;t have the time/resource, then simulation using calibration offers the best compromise. After all a ~7dB accuracy prediction is much more useful than no coverage at all.</p>



<p></p>



<h2 class="wp-block-heading">A Machine Learning genetic algorithm</h2>



<p>Using a slice of data, we can employ a basic Machine Learning model which uses a genetic algorithm to optimise settings. It works by starting with a range of fixed inputs (tower frequency, location etc) and a range of variables (power, tree height, building thickness etc) which it uses to make pseudo-random requests to our <a href="https://cloudrf.com/documentation/developer/#/Create/area">Area API</a>.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><a href="https://cloudrf.com/wp-content/uploads/2025/09/auto-calib-script.jpg" rel="lightbox[52237]"><img loading="lazy" decoding="async" width="866" height="488" src="https://cloudrf.com/wp-content/uploads/2025/09/auto-calib-script.jpg" alt="" class="wp-image-52245" style="width:620px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2025/09/auto-calib-script.jpg 866w, https://cloudrf.com/wp-content/uploads/2025/09/auto-calib-script-300x169.jpg 300w, https://cloudrf.com/wp-content/uploads/2025/09/auto-calib-script-768x433.jpg 768w, https://cloudrf.com/wp-content/uploads/2025/09/auto-calib-script-416x234.jpg 416w" sizes="auto, (max-width: 866px) 100vw, 866px" /></a><figcaption class="wp-element-caption">Script parameters showing variables and their ranges</figcaption></figure>
</div>


<p>The responses are fetched as greyscale open standard GeoTIFF images which are analysed using the <a href="https://rasterio.readthedocs.io/en/stable/">rasterio </a>library against the survey measurements. The delta between points is recorded as both mean and root mean square error.</p>



<p>The RMSE error is the key figure which describes the error between two arrays of results. Achieving a low mean is easier to do by over-fitting a model, but lowering the RMSE is harder for a diverse environment as clutter must be tuned to allow for trees, buildings and open ground.  The script constantly updates a <a href="https://cloudrf.com/documentation/09_reference_data.html#custom-clutter">custom clutter profile</a> at the API with new values in between requests.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="has-normal-font-size"><em>Many tools won&#8217;t publish performance data as it would make it hard to justify their price tag.</em> <em>Some cannot do diffraction which disqualifies them for signals below 2GHz.</em></p>
</blockquote>



<p>The requests are scored individually using RMSE and ranked. The best scores from the generation are selected to breed the next generation and so on until the (user defined) limit is reached. Therefore, the process can be scaled to offer a quick result for a live map or a thorough result for enumeration of unknowns such as tower height, power or <strong>even tower location using a search box</strong>.</p>



<p>At the end of the process, the best values for the variables are shown which can either be used to build a custom clutter profile, as we do in the demo video, or scripted further to make a final layer for a third party interface.</p>



<h2 class="wp-block-heading">Demo video</h2>



<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="Fast simulation calibration with Machine Learning: &quot;The pizza problem&quot;" width="980" height="551" src="https://www.youtube.com/embed/s2OmuE9Wx1I?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></p>



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



<p>Developments in data and performance, accelerated by GPUs, means accurate and fast simulation is more viable than ever. By being able to deliver this capability in seconds instead of hours, new integrations and capabilities are possible. Furthermore using a mature API, with <a href="https://github.com/Cloud-RF/CloudRF-API-clients/">public examples</a>, makes an MVP viable in days.</p>



<p>Using a <a href="https://cloudrf.com/soothsayer/">SOOTHSAYER server</a>, this can be done at the edge without internet access.</p>



<p>A few ideas for new integrations which can leverage this concept:</p>



<ul class="wp-block-list">
<li class="has-medium-font-size">A spectrum analyser with a living coverage map</li>



<li class="has-medium-font-size">A signal classifier which shows more than metadata</li>



<li class="has-medium-font-size">An app which shows the impact of antenna adjustments in real time</li>



<li class="has-medium-font-size">A robot which maintains a live coverage map which can inform route selection</li>



<li class="has-medium-font-size">An RFPS analyst can be freed up from walking around to do some analysis</li>
</ul>



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



<p>Thank you to <a href="https://rantcell.com/">Rantcell</a> for providing rich LTE drive test data and our resident Machine Learning guru, AppyBara, for developing our automatic calibration client. If you would like a copy get in touch.</p>



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

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



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



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



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



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



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



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



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



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



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



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


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


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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>
<p>The post <a href="https://cloudrf.com/live-rf-coverage-mapping-with-atak/">Live RF coverage mapping with ATAK</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Improving accuracy in the trees</title>
		<link>https://cloudrf.com/improving-accuracy-in-the-trees/</link>
		
		<dc:creator><![CDATA[CloudRF]]></dc:creator>
		<pubDate>Thu, 03 Jul 2025 15:45:58 +0000</pubDate>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Clutter]]></category>
		<guid isPermaLink="false">https://cloudrf.com/?p=49327</guid>

					<description><![CDATA[<p>Summary We have optimised how our engines model attenuation and diffraction to improve accuracy and performance within forests (and buildings). Highlights Evolution of attenuation and/or diffraction When a radio signal hits an obstacle such as a building, it attenuates through the obstacle and diffracts over the obstacle. Depending on the dimensions of the obstacle, a [&#8230;]</p>
<p>The post <a href="https://cloudrf.com/improving-accuracy-in-the-trees/">Improving accuracy in the trees</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Summary</h2>



<p class="has-large-font-size">We have optimised how our engines model attenuation and diffraction to improve accuracy and performance within forests (and buildings).</p>



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



<ul class="wp-block-list">
<li class="has-medium-font-size">20% accuracy improvement with clutter</li>



<li class="has-medium-font-size">6.8 dB RMSE error for NLOS simulation (1.6 dB accuracy gain)</li>



<li class="has-medium-font-size">78% GPU speed increase with clutter</li>



<li class="has-medium-font-size">Better performance for radios within trees</li>
</ul>



<h2 class="wp-block-heading">Evolution of attenuation and/or diffraction</h2>



<p>When a radio signal hits an obstacle such as a building, it attenuates <em>through</em> the obstacle and diffracts <em>over</em> the obstacle. Depending on the dimensions of the obstacle, a received signal beyond it could be from attenuation, or diffraction or a bit of both. It&#8217;s hard to tell. If you can&#8217;t get a phone signal behind an obstacle but walking away from it gets you a bar that&#8217;s diffraction. If you can improve a signal by walking into the obstacle, that&#8217;s likely attenuation.</p>



<p>Since 2020 we have offered configurable clutter and an increasing number of advanced diffraction models such as the fast Bullington approximation and it&#8217;s more sophisticated relative, Deygout 94. To address the challenge of simulating both the direct and diffracted rays, we implemented conditional engine logic for obstacle types such as trees and buildings so they would function differently: A forest would diffract and a building would attenuate, for example. This makes sense commercially as there is normally more money and people in a city than a forest.</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/2025/07/forest-dtm-only-1.jpg" rel="lightbox[49327]"><img loading="lazy" decoding="async" width="700" height="700" data-id="49892" src="https://cloudrf.com/wp-content/uploads/2025/07/forest-dtm-only-1.jpg" alt="" class="wp-image-49892" srcset="https://cloudrf.com/wp-content/uploads/2025/07/forest-dtm-only-1.jpg 700w, https://cloudrf.com/wp-content/uploads/2025/07/forest-dtm-only-1-300x300.jpg 300w, https://cloudrf.com/wp-content/uploads/2025/07/forest-dtm-only-1-150x150.jpg 150w, https://cloudrf.com/wp-content/uploads/2025/07/forest-dtm-only-1-324x324.jpg 324w, https://cloudrf.com/wp-content/uploads/2025/07/forest-dtm-only-1-416x416.jpg 416w, https://cloudrf.com/wp-content/uploads/2025/07/forest-dtm-only-1-100x100.jpg 100w" sizes="auto, (max-width: 700px) 100vw, 700px" /></a><figcaption class="wp-element-caption">DTM only</figcaption></figure>



<figure class="wp-block-image size-large"><a href="https://cloudrf.com/wp-content/uploads/2025/07/forest-dtm-landcover.jpg" rel="lightbox[49327]"><img loading="lazy" decoding="async" width="700" height="700" data-id="49891" src="https://cloudrf.com/wp-content/uploads/2025/07/forest-dtm-landcover.jpg" alt="" class="wp-image-49891" srcset="https://cloudrf.com/wp-content/uploads/2025/07/forest-dtm-landcover.jpg 700w, https://cloudrf.com/wp-content/uploads/2025/07/forest-dtm-landcover-300x300.jpg 300w, https://cloudrf.com/wp-content/uploads/2025/07/forest-dtm-landcover-150x150.jpg 150w, https://cloudrf.com/wp-content/uploads/2025/07/forest-dtm-landcover-324x324.jpg 324w, https://cloudrf.com/wp-content/uploads/2025/07/forest-dtm-landcover-416x416.jpg 416w, https://cloudrf.com/wp-content/uploads/2025/07/forest-dtm-landcover-100x100.jpg 100w" sizes="auto, (max-width: 700px) 100vw, 700px" /></a><figcaption class="wp-element-caption">DTM &amp; Land cover</figcaption></figure>



<figure class="wp-block-image size-large"><a href="https://cloudrf.com/wp-content/uploads/2025/07/forest-dsm.jpg" rel="lightbox[49327]"><img loading="lazy" decoding="async" width="700" height="700" data-id="49893" src="https://cloudrf.com/wp-content/uploads/2025/07/forest-dsm.jpg" alt="" class="wp-image-49893" srcset="https://cloudrf.com/wp-content/uploads/2025/07/forest-dsm.jpg 700w, https://cloudrf.com/wp-content/uploads/2025/07/forest-dsm-300x300.jpg 300w, https://cloudrf.com/wp-content/uploads/2025/07/forest-dsm-150x150.jpg 150w, https://cloudrf.com/wp-content/uploads/2025/07/forest-dsm-324x324.jpg 324w, https://cloudrf.com/wp-content/uploads/2025/07/forest-dsm-416x416.jpg 416w, https://cloudrf.com/wp-content/uploads/2025/07/forest-dsm-100x100.jpg 100w" sizes="auto, (max-width: 700px) 100vw, 700px" /></a><figcaption class="wp-element-caption">DSM</figcaption></figure>
</figure>



<p>The conditional logic added complexity and created visual artefacts so was replaced with dominant diffraction as <strong>most field measurements, and empirical models, are made on roads with diffracted signals</strong>. Our compromise for simulating within and beyond obstacles was to offer a DSM/DTM choice so users can chose to study rooftop LOS (and diffraction) with LiDAR where it&#8217;s available or focus on attenuation inside the material, but not both together until now. </p>



<h2 class="wp-block-heading">Rethinking trees</h2>



<p>We chose to make diffraction dominant with attenuation used for the face of an obstacle and in relatively low land cover.  This resulted in &#8220;hot LiDAR trees&#8221; with a good signal across the canopy which is optimistic when your network is under the canopy but the obvious artefact justified the diffraction modelling beyond them. <em>It also made good sense for urban rooftops where static communications equipment is installed.</em></p>



<p>In 2023 we challenged popular misconceptions that LiDAR is better for accuracy with a <a href="https://cloudrf.com/calibrating-beyond-line-of-sight-rf-modelling-with-field-testing/">DTM/DSM field test</a> where we achieved higher accuracy with calibrated clutter than precision LiDAR. This holds true for NLOS signals.</p>



<p>We proved the accuracy of the design choice with LTE and UHF field tests around <a href="https://cloudrf.com/field-testing-diffraction/">mountains</a>, buildings and <a href="https://cloudrf.com/antenna-drive-testing/">trees</a> but were conscious that a field test <em>inside</em> a forest would not be as accurate as whilst some RF would scatter from the canopy within a forest, this phenomenon was not nearly as reliable for planning as a nominal value per meter based upon the vegetation type. For example, a wet jungle attenuates more than most.</p>



<p>Now we can model both rays without compromise which for DTM produces visually different results. Previously, a building roof or tree canopy in DTM + Buildings would have been hot but now will be cold, or non-existent, since the receiver is within the obstruction and attenuation is being applied consistently throughout the obstacle (and prior obstacles).</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://cloudrf.com/wp-content/uploads/2025/07/attenuation_diffraction_modelling.jpg" rel="lightbox[49327]"><img loading="lazy" decoding="async" width="1024" height="620" src="https://cloudrf.com/wp-content/uploads/2025/07/attenuation_diffraction_modelling-1024x620.jpg" alt="" class="wp-image-49952" srcset="https://cloudrf.com/wp-content/uploads/2025/07/attenuation_diffraction_modelling-1024x620.jpg 1024w, https://cloudrf.com/wp-content/uploads/2025/07/attenuation_diffraction_modelling-300x182.jpg 300w, https://cloudrf.com/wp-content/uploads/2025/07/attenuation_diffraction_modelling-768x465.jpg 768w, https://cloudrf.com/wp-content/uploads/2025/07/attenuation_diffraction_modelling-416x252.jpg 416w, https://cloudrf.com/wp-content/uploads/2025/07/attenuation_diffraction_modelling.jpg 1219w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Coverage through and beyond trees and buildings with attenuation and diffraction</figcaption></figure>
</div>


<h2 class="wp-block-heading">Reverse engineering a forest </h2>



<p>There are many historic studies into vegetation and material attenuation which have been summarised within a standard, <a href="https://www.itu.int/rec/R-REC-P.833/en">ITU-R P.833</a>.  The ITU recommendation provides a useful reference for appropriate attenuation figures (dB/m) for varying wavelengths but does not prescribe a value for every material in every season. The best way to improve upon this is using field test data with calibrated clutter.</p>



<p>First, find two paths that go through and beside some uniform trees, eg. a wood block, on level ground. Calibrate the model so the clear path (B) beside the trees aligns with simulations and then note the difference of the obstructed path (A) eg. +30dB attenuation loss.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://cloudrf.com/wp-content/uploads/2025/07/tree-calibration.jpg" rel="lightbox[49327]"><img loading="lazy" decoding="async" width="1024" height="564" src="https://cloudrf.com/wp-content/uploads/2025/07/tree-calibration-1024x564.jpg" alt="" class="wp-image-49900" srcset="https://cloudrf.com/wp-content/uploads/2025/07/tree-calibration-1024x564.jpg 1024w, https://cloudrf.com/wp-content/uploads/2025/07/tree-calibration-300x165.jpg 300w, https://cloudrf.com/wp-content/uploads/2025/07/tree-calibration-768x423.jpg 768w, https://cloudrf.com/wp-content/uploads/2025/07/tree-calibration-416x229.jpg 416w, https://cloudrf.com/wp-content/uploads/2025/07/tree-calibration.jpg 1230w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Comparing two radio paths to identify vegetation attenuation</figcaption></figure>
</div>


<p>Using the difference in decibels divided by the depth of the trees you can compute a nominal attenuation per meter and adjust your clutter profile accordingly. In our experience, this is the best way to get to an accurate, regional, nominal value that works well for other paths providing the trees are similar. Looks can be deceiving as mature trees often have higher leaf canopies so may permit more RF than you might think! </p>



<p>The expected range for vegetation attenuation is 0.03 to 0.5dB per meter. </p>



<h2 class="wp-block-heading">Dilution by diversity</h2>



<p>Across a wide area there will be different types of vegetation. When using space based land cover data, like ESA Worldcover, the classification is an approximation eg. &#8220;Trees&#8221; or &#8220;Shubland&#8221; with the net result that the best overall attenuation value will be lower than the nominal value for a single type. For example, a northern pine forest may have an attenuation value of 0.3dB/m but when used in a larger context with different vegetation types, the best value may be 0.03dB/m.</p>



<p>The key to getting this tree/building figure right for an area is having a large amount of diverse survey data.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://cloudrf.com/wp-content/uploads/2025/07/landcover-examples-1.jpg" rel="lightbox[49327]"><img loading="lazy" decoding="async" width="1008" height="495" src="https://cloudrf.com/wp-content/uploads/2025/07/landcover-examples-1.jpg" alt="" class="wp-image-49944" srcset="https://cloudrf.com/wp-content/uploads/2025/07/landcover-examples-1.jpg 1008w, https://cloudrf.com/wp-content/uploads/2025/07/landcover-examples-1-300x147.jpg 300w, https://cloudrf.com/wp-content/uploads/2025/07/landcover-examples-1-768x377.jpg 768w, https://cloudrf.com/wp-content/uploads/2025/07/landcover-examples-1-416x204.jpg 416w" sizes="auto, (max-width: 1008px) 100vw, 1008px" /></a><figcaption class="wp-element-caption">ESA Land cover segmentation</figcaption></figure>
</div>


<h2 class="wp-block-heading">Calibrating for success</h2>



<p>We used OFCOM spectrum data for the UHF 450 band to prove the accuracy of our refactor and were pleased to improve upon our accuracy scores and speed. The lower UHF band was chosen as it would have the most penetration which is a notably more expensive problem to compute than a LOS viewshed.</p>



<p>The chosen data set is on the outskirts of a coastal city covering hills, forests and has over 10e3 samples taken by vehicle. We load this data into our calibration tool within our web interface and make appropriate clutter adjustments to tighten up the score. In our experience, you can fit the General Purpose model to most frequencies if you focus on <strong>adjusting the clutter instead of the model</strong>. <em>Recomputing the 16 million point model takes several seconds with a GPU.</em></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-large"><a href="https://cloudrf.com/wp-content/uploads/2025/07/old-calib-southampton-1.jpg" rel="lightbox[49327]"><img loading="lazy" decoding="async" width="1024" height="683" data-id="49967" src="https://cloudrf.com/wp-content/uploads/2025/07/old-calib-southampton-1-1024x683.jpg" alt="" class="wp-image-49967" srcset="https://cloudrf.com/wp-content/uploads/2025/07/old-calib-southampton-1-1024x683.jpg 1024w, https://cloudrf.com/wp-content/uploads/2025/07/old-calib-southampton-1-300x200.jpg 300w, https://cloudrf.com/wp-content/uploads/2025/07/old-calib-southampton-1-768x512.jpg 768w, https://cloudrf.com/wp-content/uploads/2025/07/old-calib-southampton-1-416x277.jpg 416w, https://cloudrf.com/wp-content/uploads/2025/07/old-calib-southampton-1.jpg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Old calibration score: 8.5dB</figcaption></figure>



<figure class="wp-block-image size-large"><a href="https://cloudrf.com/wp-content/uploads/2025/07/new-calib-southampton.jpg" rel="lightbox[49327]"><img loading="lazy" decoding="async" width="1024" height="683" data-id="49966" src="https://cloudrf.com/wp-content/uploads/2025/07/new-calib-southampton-1024x683.jpg" alt="" class="wp-image-49966" srcset="https://cloudrf.com/wp-content/uploads/2025/07/new-calib-southampton-1024x683.jpg 1024w, https://cloudrf.com/wp-content/uploads/2025/07/new-calib-southampton-300x200.jpg 300w, https://cloudrf.com/wp-content/uploads/2025/07/new-calib-southampton-768x512.jpg 768w, https://cloudrf.com/wp-content/uploads/2025/07/new-calib-southampton-416x277.jpg 416w, https://cloudrf.com/wp-content/uploads/2025/07/new-calib-southampton.jpg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">New calibration score: 6.8dB</figcaption></figure>
</figure>



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



<p>The results show a 1.6 dB improvement (20% better than old score) in accuracy and a 78% speedup for GPU calculations with clutter. The CPU refactor is 1.8 dB more accurate but slower when clutter is enabled. Both engines will now show reduced coverage when working with clutter in NLOS regions but will look the same for where there is LOS or no clutter.</p>



<figure class="wp-block-table is-style-stripes"><table><tbody><tr><td><strong>Test</strong></td><td><strong>Old </strong></td><td><strong>Refactor</strong></td></tr><tr><td>GP model with Deygout 94 diffraction<br>16MP resolution<br>DTM, Landcover, Buildings<br>GPU Engine (RTX3050)</td><td>Elapsed: 11.7s<br>RMSE: 8.4dB<br>Coverage: 82%</td><td>Elapsed: 2.6s<br>RMSE: 6.8dB<br>Coverage: 56%</td></tr><tr><td>GP model with Deygout 94 diffraction<br>16MP resolution<br>DTM, Landcover, Buildings<br>CPU Engine (Ryzen 9, 8 threads)</td><td>Elapsed: 24.1s<br>RMSE: 9.2dB<br>Coverage: 84%<br></td><td>Elapsed: 33.7s<br>RMSE: 7.4dB<br>Coverage: 71%<br></td></tr><tr><td>GPU Multisite <br>DTM, Landcover, Buildings<br>4MP resolution, x3 sites</td><td>Elapsed: 4.3s</td><td>Elapsed: 1.6s</td></tr><tr><td>CPU path, 20km<br>DTM, Landcover, Buildings</td><td>Elapsed: 0.133s</td><td>Elapsed: 0.142s</td></tr><tr><td>CPU path, 20km<br>DTM</td><td>Elapsed: 0.07s</td><td>Elapsed: 0.07s</td></tr></tbody></table><figcaption class="wp-element-caption">Table of results</figcaption></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p></p>



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



<p>This optimisation will change how heatmaps appear for DTM and clutter, especially around buildings which will change from hot to cold. The improvement to accuracy for both CPU and GPU is notable and we can now offer much better planning for radio users within forests as a result.</p>



<p>All propagation models, including ITM, will be adjusted when clutter is enabled for future calculations only. Legacy calculations are unaffected and users  can choose to disable clutter or minimise the amount of change with the Minimal.clt (default) clutter profile.</p>



<p>For simulations using DTM or DSM layers only there will be no difference.</p>



<p>The change does not affect DSM mode so LOS studies of rooftops will be unaffected.</p>



<h2 class="wp-block-heading">Look forward</h2>



<p>Expect to see a field test in a forest. </p>



<p>We&#8217;ll buck the trend of collecting data from the comfort of a car and go off-roading to investigate VHF/UHF attenuation in trees. This data will help us refine our clutter profiles so we can offer better defaults. </p>
<p>The post <a href="https://cloudrf.com/improving-accuracy-in-the-trees/">Improving accuracy in the trees</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Mapping Noise</title>
		<link>https://cloudrf.com/mapping-noise/</link>
		
		<dc:creator><![CDATA[CloudRF]]></dc:creator>
		<pubDate>Fri, 23 May 2025 12:36:21 +0000</pubDate>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Electronic Counter Measures (ECM)]]></category>
		<category><![CDATA[Modelling]]></category>
		<category><![CDATA[Theory]]></category>
		<guid isPermaLink="false">https://cloudrf.com/?p=48809</guid>

					<description><![CDATA[<p>Noise is the single biggest factor in determining the quality of a communications link. It&#8217;s also the reason why there is low confidence in the accuracy of (RF) simulation in complex environments as it&#8217;s rarely done well, if at all. Budgeting for noise is critical to achieve desired signal levels. Historically, it was done with [&#8230;]</p>
<p>The post <a href="https://cloudrf.com/mapping-noise/">Mapping Noise</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Noise is the <strong>single biggest factor in determining the <em>quality</em> of a communications link</strong>. It&#8217;s also the reason why there is low confidence in the accuracy of (RF) simulation in complex environments as <strong>it&#8217;s rarely done well, if at all.</strong></p>



<p>Budgeting for noise is critical to achieve desired signal levels. Historically, it was done with a single figure to satisfy all locations, eg. &#8216;-100dBm&#8217;. This simplification is a time/accuracy trade-off and is no longer relevant in the age of dynamic spectrum management and cognitive radio. </p>



<p><strong>Noise varies</strong> widely between locations, <strong>and changes constantly</strong>, so we have invested in developing living noise maps to reflect this dynamic nature. <strong>Like a terrain layer that moves</strong>, noise data can be used to improve the accuracy and relevance of planning in dynamic environments.</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 noise API for better RF simulation" width="980" height="551" src="https://www.youtube.com/embed/fuMxtmIeanU?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">Using SDRs and APIs to improve simulation accuracy with live noise</figcaption></figure>



<h2 class="wp-block-heading">Evolution of simulating noise</h2>



<h3 class="wp-block-heading">A noise figure (2022)</h3>



<p>Back when we added Signal-to-Noise (SNR) output units in API v2.7, we needed to express the noise floor as a (dBm) figure to provide a reference for a signal&#8217;s quality eg. 15dB. Users interested in SNR enter a single value like -100dBm, hopefully based on the local environment, to describe noise across the entire area, or link. As this guesswork is prone to error, we automatically recommended a conservative value, to budget for high noise.</p>



<p>For example if the thermal noise for a narrow channel is -133dBm, our interface automatically recommends -113dBm as a floor for planning which provides 20dB for unknown noise.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://cloudrf.com/wp-content/uploads/2025/05/image.png" rel="lightbox[48809]"><img loading="lazy" decoding="async" width="1024" height="275" src="https://cloudrf.com/wp-content/uploads/2025/05/image-1024x275.png" alt="" class="wp-image-48822" srcset="https://cloudrf.com/wp-content/uploads/2025/05/image-1024x275.png 1024w, https://cloudrf.com/wp-content/uploads/2025/05/image-300x81.png 300w, https://cloudrf.com/wp-content/uploads/2025/05/image-768x206.png 768w, https://cloudrf.com/wp-content/uploads/2025/05/image-416x112.png 416w, https://cloudrf.com/wp-content/uploads/2025/05/image.png 1159w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<p>The noise figure could be measured <a href="https://github.com/Cloud-RF/CloudRF-API-clients/tree/master/integrations/CRFS">direct from a networked sensor</a> which we published in early 2023.</p>



<h3 class="wp-block-heading">A Noise database (2023)</h3>



<p>Noise varies by location (and frequency) and the previous method didn&#8217;t scale so we developed a <a href="https://cloudrf.com/documentation/developer/#/Manage/noiseCreate">noise API</a> to store noise data and reference it in calculations. The private data was used on a per-site basis so you could model a network with different noise at each site. A marked improvement on a single figure.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://cloudrf.com/wp-content/uploads/2025/05/image-1.png" rel="lightbox[48809]"><img loading="lazy" decoding="async" width="430" height="172" src="https://cloudrf.com/wp-content/uploads/2025/05/image-1.png" alt="" class="wp-image-48823" srcset="https://cloudrf.com/wp-content/uploads/2025/05/image-1.png 430w, https://cloudrf.com/wp-content/uploads/2025/05/image-1-300x120.png 300w, https://cloudrf.com/wp-content/uploads/2025/05/image-1-416x166.png 416w" sizes="auto, (max-width: 430px) 100vw, 430px" /></a></figure>
</div>


<p>This development represented a leap forward in network planning as each node could be configured for the local environment, which can vary drastically. Two different users might have different needs so it is isolated to the user&#8217;s account. A multisite API call accepts different noise values for each site.</p>



<h3 class="wp-block-heading">A Noise map (2025)</h3>



<p>Building upon our <a href="https://cloudrf.com/documentation/developer/#/Manage/noiseCreate">Noise API</a>, stored data was used to generate a noise map, specifically a raster layer of measurements, similar to clutter which our API can reference. This noise map describes thousands of noise points across the area or link of interest and provides <strong>high resolution</strong> <strong>noise</strong>. Now you can see the real impact of noise with minimal effort at each location covered. </p>



<p>Any calculation requested with the <strong>database</strong> option versus the legacy single figure method will create and use a noise map at the API. The quality of the noise is determined by the data you can provide and any missing values will be interpolated. The maximum resolution is 12m supporting dense urban planning so you can have different noise levels in adjacent streets, which is common in urban canyons.</p>



<p>Better still, <strong>with live noise data, you get live coverage.</strong> Ideal for autonomous systems and future spectrum management systems which will need to be automated to remain relevant.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://cloudrf.com/wp-content/uploads/2025/05/Noise-map-animation-1.gif" rel="lightbox[48809]"><img loading="lazy" decoding="async" width="691" height="389" src="https://cloudrf.com/wp-content/uploads/2025/05/Noise-map-animation-1.gif" alt="" class="wp-image-48829"/></a><figcaption class="wp-element-caption">SNR </figcaption></figure>
</div>


<h1 class="wp-block-heading">Collecting noise with DORA</h1>



<p>DORA (Distributed Open Receiver API) is an <a href="https://github.com/Cloud-RF/DORA">open source project</a> sponsored by CloudRF designed to collect noise measurements using various <strong>Software Defined Radio</strong> (SDR) receivers and mature open source utilities.</p>



<p>It uses consumer grade SDRs via a remote service present on the <a href="https://sourceforge.net/projects/dragonos-focal/">DragonOS operating system</a>. Designed for SBCs like Raspberry Pis, DORA presents a <strong>common API for RF sensing across different radios</strong>. Nodes perform a local FFT to measure average power (with configurable bandwidth) and then publish the PSD data via an API endpoint. A server fetches and collates these to present them in an interface to provide spectrum visibility.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://cloudrf.com/wp-content/uploads/2025/05/Screenshot_2025-05-22_175021.png" rel="lightbox[48809]"><img loading="lazy" decoding="async" width="1024" height="348" src="https://cloudrf.com/wp-content/uploads/2025/05/Screenshot_2025-05-22_175021-1024x348.png" alt="" class="wp-image-48852" srcset="https://cloudrf.com/wp-content/uploads/2025/05/Screenshot_2025-05-22_175021-1024x348.png 1024w, https://cloudrf.com/wp-content/uploads/2025/05/Screenshot_2025-05-22_175021-300x102.png 300w, https://cloudrf.com/wp-content/uploads/2025/05/Screenshot_2025-05-22_175021-768x261.png 768w, https://cloudrf.com/wp-content/uploads/2025/05/Screenshot_2025-05-22_175021-416x141.png 416w, https://cloudrf.com/wp-content/uploads/2025/05/Screenshot_2025-05-22_175021.png 1138w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<p>When a CloudRF API key is provided,  the server sends data to our noise API giving a user <strong>live noise data for accurate planning</strong>. DORA&#8217;s low cost (£200 BOM per node) makes it scalable  and cost effective. It won&#8217;t give you a pretty waterfall like Government spec hardware but <strong>it will provide the scale needed for autonomous spectrum management</strong>, powered by the CloudRF API.</p>



<p><em>If you do want an open source FFT and waterfall we recommend <a href="https://www.openwebrx.de/">OpenWebRx</a>.</em></p>



<p>You can contribute to the future of scalable spectrum sensing over on <a href="https://github.com/Cloud-RF/DORA">Github</a> with issues, feedback and features.</p>



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



<p>This noise map feature is live now and works with any receiver capable of reporting noise as dBm. The benefit of using live noise in planning is improved accuracy but also relevance, and in time confidence, as <strong>the simulation will match the environment</strong>.</p>
<p>The post <a href="https://cloudrf.com/mapping-noise/">Mapping Noise</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>RF planning at the Edge</title>
		<link>https://cloudrf.com/rf-planning-at-the-edge/</link>
		
		<dc:creator><![CDATA[CloudRF]]></dc:creator>
		<pubDate>Mon, 24 Feb 2025 12:35:39 +0000</pubDate>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Self-hosted]]></category>
		<guid isPermaLink="false">https://cloudrf.com/?p=46602</guid>

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



<p></p>



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



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



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



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



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



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



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



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



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



<figure class="wp-block-gallery aligncenter has-nested-images columns-default is-cropped wp-block-gallery-4 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>Interference analysis</title>
		<link>https://cloudrf.com/interference-analysis/</link>
		
		<dc:creator><![CDATA[CloudRF]]></dc:creator>
		<pubDate>Mon, 16 Dec 2024 18:09:10 +0000</pubDate>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Broadcasting]]></category>
		<category><![CDATA[Modelling]]></category>
		<category><![CDATA[Theory]]></category>
		<guid isPermaLink="false">https://cloudrf.com/?p=43945</guid>

					<description><![CDATA[<p>Interference is one of the single biggest issues in radio which limits the potential of a system or network. There are different types of interference but the problem of interference visualisation is common to all. With simulation software you can model your system, and an interfering system, but understanding the interplay where the coverage of [&#8230;]</p>
<p>The post <a href="https://cloudrf.com/interference-analysis/">Interference analysis</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><strong>Interference</strong> is one of the single biggest issues in radio which limits the potential of a system or network.</p>



<p>There are different types of interference but the problem of <strong>interference visualisation</strong> is common to all. With simulation software you can model your system, and an interfering system, but understanding the interplay where the coverage of the two overlap is crucial. Like many radio engineering concepts it&#8217;s a complex topic so <strong>making it simple </strong>requires abstraction which our API provides.</p>



<p><em>Up until now we offered a basic interference capability, capable only of colour promotion. It was unable to consider signal parameters or to show the level of interference.</em></p>



<h2 class="wp-block-heading">Enhanced Interference API</h2>



<p>The upgraded interference API considers the signal parameters <strong>frequency, bandwidth and power.</strong> It accepts two arrays of sites, one for the &#8220;signal&#8221; network and another for the &#8220;noise&#8221; network so you can compare two sites or scale the concept for two networks.</p>



<p><strong>Frequency</strong> is obvious as two local signals on the same wavelength will interfere. This technology agnostic API considers the signal as a constant carrier. This means it does not consider features of the waveform since modern technologies, like 802.11, employ back-off mechanisms in the PHY to manage collisions whereby a transmission will pause momentarily if it detects noise.</p>



<p><strong>Bandwidth</strong> is important as even if the signals are on different channels, their bandwidth may overlap. In 802.11, adjacent channels overlap by design when using wide (20MHz) signals but the amount is small enough that the spread spectrum signal can overcome it in error recovery mechanisms. As a result, many signals can operate in a dense slice of spectrum.</p>



<p><strong>Power </strong>is harder to plan for in spectrum planning where the focus is normally on frequency management and is the source of most interference reports. <strong>Even if two signals are on different channels, with non-overlapping bandwidth, they can still interfere</strong> if one of them is sufficiently powerful. This is because a signal produces frequency harmonics at multiples of itself and power in the spectrum appears as a Gaussian function which looks like a bell curve. <strong>A powerful signal will bleed power into the spectrum adjacent to it</strong> and if a receiver does not have an adequate filter, it will receive this power even if it&#8217;s on an adjacent channel! </p>



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


<div class="wp-block-image">
<figure class="alignright size-full is-resized"><a href="https://cloudrf.com/wp-content/uploads/2024/12/image-2.png" rel="lightbox[43945]"><img loading="lazy" decoding="async" width="40" height="213" src="https://cloudrf.com/wp-content/uploads/2024/12/image-2.png" alt="" class="wp-image-44083" style="width:75px;height:auto"/></a></figure>
</div>


<p>We use decibels (dB) as the measurement unit to describe interference along with a special purpose colour key called JS (Jam to Signal). The J/S ratio, as the name implies, shows the interference (Jammer) power over the signal power.  A bad JS ratio implying strong interference would be greater than 0 eg. 12dB and a good ratio would be negative eg. -12dB. </p>



<p>The level at which this interference presents a problem to a given waveform varies. Some waveforms are designed to operate <em>within</em> noise such as LoRa and others like WiFi fail gradually with noise: When people say &#8220;the WiFi is slow&#8221; yet they have a strong signal, the problem is interference which causes sampling errors, and reduces data bandwidth. </p>



<p>Using -3dB as a interference limit in planning is recommended. This is green on our colour key. </p>



<p>Anything higher than this and there will be reduced performance / speeds. An interference ratio higher than 0dB will likely stop you communicating altogether if your signal requires a positive SNR ratio &#8211; as most do. For reference, high capacity data waveforms require 20dB SNR and commercial telemetry requires less at 3dB SNR.</p>



<h2 class="wp-block-heading">Demo: Signal jammer (Frequency)</h2>



<p>This high resolution <strong>frequency</strong> demo shows the impact of a 10W signal jammer against a high powered urban rooftop cell tower radiating ten times more power at 100W EIRP.</p>



<p>Despite being near to the strong, and elevated, cell, the lower powered omni directional jammer is able to overcome the cell in building shadows and coverage nulls caused by the directional antenna pattern.</p>



<p>Where the interference is equal to or greater than 0dB, it is very likely that cell coverage would be disrupted.</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: Cellular Jammer" width="980" height="551" src="https://www.youtube.com/embed/9-F8UAOiBbk?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">Demo: FM broadcasting (Power)</h2>



<p>This is a <strong>power </strong>problem whereby channels have been separated in frequency but there is interference from <em>neighbouring</em> channels. This is because a signal is shaped with a Gaussian function resembling a bell curve and has power either side of it in the spectrum. The stronger the signal, the more power bleeds into neighbouring channels.</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: FM Broadcasting" width="980" height="551" src="https://www.youtube.com/embed/9cHzbzD4GRw?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">Demo: Microwave link (Bandwidth)</h2>



<p>A high power microwave link uses parabolic dishes to focus a <strong>high bandwidth </strong>beam towards a distant point. </p>



<p>On the path of the link is relatively low power 3GHz cellular system separated in frequency by 45MHz. There is no guard channel so the two signals are adjacent to each other. The directional pattern experiences interference at the edge but is not affected on the main beam.</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: Microwave link" width="980" height="551" src="https://www.youtube.com/embed/ByoXWQfXGa8?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></p>



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



<p>We have published a new API demo to demonstrate this scalable capability using vehicles using PMR 446 radios which are being interfered with by other vehicles with different technology in the 446 band.</p>



<p>It uses our Multisite API to model each network for the Signal (Blue) and Noise (Red).  When a transmitter, or vehicle in this case, moves, the network is updated and the interference simulated.</p>



<p>Link: <a href="https://cloud-rf.github.io/CloudRF-API-clients/slippy-maps/leaflet-interference.html">https://cloud-rf.github.io/CloudRF-API-clients/slippy-maps/leaflet-interference.html</a></p>


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


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



<p>API reference</p>



<p><a href="https://cloudrf.com/documentation/developer/#/Analyse/interference">https://cloudrf.com/documentation/developer/#/Analyse/interference</a></p>



<p>User documentation</p>



<p><a href="https://cloudrf.com/documentation/04_web_interface_functions.html#interference-analysis">https://cloudrf.com/documentation/04_web_interface_functions.html#interference-analysis</a></p>



<p>Complete Code example</p>



<p><a href="https://github.com/Cloud-RF/CloudRF-API-clients/blob/master/slippy-maps/leaflet-interference.html">https://github.com/Cloud-RF/CloudRF-API-clients/blob/master/slippy-maps/leaflet-interference.html</a></p>



<p></p>
<p>The post <a href="https://cloudrf.com/interference-analysis/">Interference analysis</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>HF Skywave</title>
		<link>https://cloudrf.com/hf-skywave/</link>
		
		<dc:creator><![CDATA[CloudRF]]></dc:creator>
		<pubDate>Tue, 12 Nov 2024 15:46:53 +0000</pubDate>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Modelling]]></category>
		<guid isPermaLink="false">https://cloudrf.com/?p=42217</guid>

					<description><![CDATA[<p>HF Ionospheric propagation, known as Skywave, has been added to the CloudRF API. While Satcom offers clear advantages in terms of speed, bandwidth, and the ability to provide real-time, high-quality data transmission, HF remains a crucial alternative where cost, independence from satellites, portability, power efficiency, and resiliency are important. Wide area simulation The new /hf/area [&#8230;]</p>
<p>The post <a href="https://cloudrf.com/hf-skywave/">HF Skywave</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>HF Ionospheric propagation, known as Skywave, has been added to the CloudRF API.</p>



<p>While Satcom offers clear advantages in terms of speed, bandwidth, and the ability to provide real-time, high-quality data transmission, <strong>HF </strong>remains a crucial alternative where cost, independence from satellites, portability, power efficiency, and resiliency are important.</p>



<h2 class="wp-block-heading">Wide area simulation</h2>



<p>The new <strong>/hf/area</strong> API endpoint uses the proven <a href="https://www.voacap.com/">VOACAP</a> engine to simulate coverage for a given transmitter at a given time of day. It combines CloudRF&#8217;s familiar JSON interface structure (transmitter, antenna, receiver, environment) with VOACAP antenna patterns and temporal parameters (Month and hour).</p>



<p>The maximum range for the simulation is 10,000km which takes several seconds and like other (area) layers it can be exported to KMZ, GeoTIFF and SHP.</p>



<p>API reference: <a href="https://cloudrf.com/documentation/developer/#/Create/hf%2Farea">https://cloudrf.com/documentation/developer/#/Create/hf%2Farea</a></p>



<h2 class="wp-block-heading">Link frequency prediction</h2>



<p>The new <strong>/hf/prediction</strong> API endpoint provides a HF frequency prediction capability, powered by VOACAP, for a given link. It uses the same workflow as the path tool whereby the transmitter is placed upon the map, the path tool is selected and the receiver is placed.</p>



<p>The output is a chart of frequency SNR values for the link across the HF band from 2 to 20MHz and hours of the day. As ionospheric activity varies considerably between day and night, the chart helps select an optimal frequency and can be exported to PNG.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://cloudrf.com/wp-content/uploads/2024/11/HF_link.jpg" rel="lightbox[42217]"><img loading="lazy" decoding="async" width="1024" height="347" src="https://cloudrf.com/wp-content/uploads/2024/11/HF_link-1024x347.jpg" alt="SNR graph for a HF link" class="wp-image-42283" srcset="https://cloudrf.com/wp-content/uploads/2024/11/HF_link-1024x347.jpg 1024w, https://cloudrf.com/wp-content/uploads/2024/11/HF_link-300x102.jpg 300w, https://cloudrf.com/wp-content/uploads/2024/11/HF_link-768x260.jpg 768w, https://cloudrf.com/wp-content/uploads/2024/11/HF_link-1536x520.jpg 1536w, https://cloudrf.com/wp-content/uploads/2024/11/HF_link-416x141.jpg 416w, https://cloudrf.com/wp-content/uploads/2024/11/HF_link.jpg 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<p>API reference: <a href="https://cloudrf.com/documentation/developer/#/Create/hf%2Fprediction">https://cloudrf.com/documentation/developer/#/Create/hf%2Fprediction</a></p>



<h2 class="wp-block-heading">HF parameters: Time and Sunspots</h2>


<div class="wp-block-image">
<figure class="alignleft size-full"><a href="https://cloudrf.com/wp-content/uploads/2024/11/HF-parameters.png" rel="lightbox[42217]"><img loading="lazy" decoding="async" width="398" height="341" src="https://cloudrf.com/wp-content/uploads/2024/11/HF-parameters.png" alt="" class="wp-image-42286" srcset="https://cloudrf.com/wp-content/uploads/2024/11/HF-parameters.png 398w, https://cloudrf.com/wp-content/uploads/2024/11/HF-parameters-300x257.png 300w" sizes="auto, (max-width: 398px) 100vw, 398px" /></a></figure>
</div>


<p>Time is critical with ionospheric communications so the &#8220;model&#8221; section has been extended to include three new variables.</p>



<p>Diffraction is disabled and the two familiar reliability and context variables can be tuned as with other models to match empirical measurements.</p>



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



<p>The month is defined as a integer from 1 to 12. </p>



<p>The relevance to HF is that during the summer, solar activity, and therefore refraction, is increased.</p>



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



<p>The hour is defined as an integer from 0 to 23 and is in UTC.</p>



<p>The relevance to HF is that during darkness, the lower &#8220;D&#8221; layer collapses so RF which was previously attenuated is free to reach the higher &#8220;E&#8221; and &#8220;F&#8221; layers which increases both noise and global reach.</p>



<h3 class="wp-block-heading">Sunspot R12 number</h3>



<p>Solar activity follows a ten year cycle which can be predicted. The year 2024 is at the peak of this cycle so the &#8220;R12&#8221; number is high at ~150. In 2030 this will be low at (~25) and equivalent HF links will be more difficult.</p>



<p>Solar activity is subject to random bursts of radiation (Sporadic E) which makes predicting and calibrating HF communications harder than short range terrestrial links. Using empirical live measurements from sounders and crowd sourced networks, the random element can be mitigated but not removed.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://cloudrf.com/wp-content/uploads/2024/11/sunspot.png" rel="lightbox[42217]"><img loading="lazy" decoding="async" width="640" height="480" src="https://cloudrf.com/wp-content/uploads/2024/11/sunspot.png" alt="" class="wp-image-42289" srcset="https://cloudrf.com/wp-content/uploads/2024/11/sunspot.png 640w, https://cloudrf.com/wp-content/uploads/2024/11/sunspot-300x225.png 300w, https://cloudrf.com/wp-content/uploads/2024/11/sunspot-416x312.png 416w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a><figcaption class="wp-element-caption">Sunspot chart © Australian Bureau of Meterology</figcaption></figure>
</div>


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



<p>HF antenna theory is a complex art form. For example, the same physical antenna will produce very different propagation depending upon its height above the ground where reflection takes place. </p>



<p>The reflection depth varies by terrain so a swamp has a ground level water table but a desert could have a reflection height much deeper so an antenna may not need elevating much at all to achieve a link.</p>



<p>This reflection height determines the &#8220;take off angle&#8221;, and skip zone, whereby a tall antenna between two tall masts has a lower take off angle, and longer range compared with a waist height antenna which has a steep angle and relatively short range for Near Vertical Incidence Skywave (NVIS), which we have a separate model for.</p>



<p>When selecting the HF model, you will be given a fixed list of VOACAP antenna patterns with which you can manipulate the gain, height and the azimuth. A typical gain figure for a dipole will be between 1 and 2.15dBi whereas a LPA could be 9dBi depending on elements.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://cloudrf.com/wp-content/uploads/2024/11/HF-antenna-form.png" rel="lightbox[42217]"><img loading="lazy" decoding="async" width="393" height="176" src="https://cloudrf.com/wp-content/uploads/2024/11/HF-antenna-form.png" alt="" class="wp-image-42307" srcset="https://cloudrf.com/wp-content/uploads/2024/11/HF-antenna-form.png 393w, https://cloudrf.com/wp-content/uploads/2024/11/HF-antenna-form-300x134.png 300w" sizes="auto, (max-width: 393px) 100vw, 393px" /></a></figure>
</div>


<figure class="wp-block-table is-style-stripes"><table><tbody><tr><td><strong>Antenna</strong></td><td><strong>Description</strong></td><td><strong>API code</strong></td></tr><tr><td>ITSA-1 Horizontal Dipole</td><td>Center fed symmetrical design with arms matched to half a wavelength. Deployed broadside to the target.</td><td>2</td></tr><tr><td>ITSA-1 Horizontal Yagi</td><td>Directional array which can be steered to a target.</td><td>3</td></tr><tr><td>ITSA-1 Vertical Log Periodic</td><td>Highly directional array with a focused beam pointed at a target.</td><td>4</td></tr><tr><td>ITSA-1 Sloping Vee</td><td>Simple directional antenna which only requires one mast. Arms are measured to 1/2 the wavelength and staked out towards the target.</td><td>5</td></tr><tr><td>ITSA-1 Inverted L</td><td>End-fed mixed polarisation antenna capable of local groundwave and distant Skywave. 1/4 wavelength up and 1/2 wavelength along.</td><td>6</td></tr><tr><td>ITS-78 Inverted L</td><td>End-fed mixed polarisation antenna capable of local groundwave and distant Skywave. 1/4 wavelength up and 1/2 wavelength along.</td><td>8</td></tr><tr><td>ITS-78 Sloping Long Wire</td><td>Simple end-fed wire orientated towards the target.</td><td>9</td></tr><tr><td>ITS-78 Arbitrary Tilted Dipole</td><td>Dipole tilted to achieve maximum gain.</td><td>10</td></tr><tr><td>ITS-78 Terminated Sloping Vee</td><td>Simple directional antenna which only requires one mast. Arms are staked out towards the target and terminated with a load.</td><td>11</td></tr></tbody></table><figcaption class="wp-element-caption">Table of HF antennas and CloudRF antenna codes</figcaption></figure>



<p> </p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://cloudrf.com/wp-content/uploads/2024/11/HF-skip-distance.jpg" rel="lightbox[42217]"><img loading="lazy" decoding="async" width="650" height="501" src="https://cloudrf.com/wp-content/uploads/2024/11/HF-skip-distance.jpg" alt="" class="wp-image-42301" srcset="https://cloudrf.com/wp-content/uploads/2024/11/HF-skip-distance.jpg 650w, https://cloudrf.com/wp-content/uploads/2024/11/HF-skip-distance-300x231.jpg 300w, https://cloudrf.com/wp-content/uploads/2024/11/HF-skip-distance-416x321.jpg 416w" sizes="auto, (max-width: 650px) 100vw, 650px" /></a><figcaption class="wp-element-caption">Skip zone for a low take off angle</figcaption></figure>
</div>


<h2 class="wp-block-heading">Example HF API request</h2>



<p>This simulation request is for a 10MHz half wave dipole, 8m above the ground, radiating 30W of RF power.</p>



<p>The month is November and the time is 8am UTC. </p>



<p>The sunspot R12 number is ~150 for late 2024 based on the solar cycle.</p>



<pre class="wp-block-code"><code>{
    "site": "Tx",
    "network": "HF",
    "transmitter": {
        "lat": "46.3936",
        "lon": "6.8835",
        "alt": "8",
        "frq": "10",
        "txw": "30",
        "bwi": "0.012"
    },
    "receiver": {
        "alt": "1",
        "rxg": "1",
        "rxs": "-125"
    },
    "antenna": {
        "txg": "2",
        "txl": "0",
        "ant": "2",
        "azi": "45"
    },
    "model": {
        "pm": "13",
        "pe": "3",
        "rel": "50",
        "month": 11,
        "hour": 8,
        "sunspots_r12": 150
    },
    "output": {
        "units": "m",
        "col": "HF.dBm",
        "out": "2",
        "nf": "-112",
        "res": "20",
        "rad": "5000",
        "bounds": {
            "north": 89,
            "east": 62.25,
            "south": 1.42,
            "west": -48.49
        }
    }
}</code></pre>



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



<p>Using crowd sourced link measurements from the amateur <a href="https://www.wsprnet.org/drupal/wsprnet/map">Weak Signal Propagation Netw</a>ork (WSPR), the VOACAP engine can be calibrated using our native calibration utility. Data can be filtered by station and processed ready for import to the <a href="https://cloudrf.com/documentation/05_web_interface_import_data.html#calibration">calibration utility</a>.  The data reports Signal-to-Noise (SNR) measurements which reference an unknown noise floor. We recommend an average value of -100dBm for the 10MHz noise as any error in measurement is less than the other variables such as the variable solar radiation and distant station antenna gain for example.</p>



<p><em>The WSPR data required pre-processing to convert the 6 figure Maidenhead grid squares to WGS-84 coordinates. The maidenhead python library is recommended for this. </em></p>



<p>Filtering a time window is critical due to the propagation changes which occur throughout the day. For example, you cannot calibrate measurements from day and night together but you can calibrate an hour as a separate file.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://cloudrf.com/wp-content/uploads/2024/11/HF-calibration.jpg" rel="lightbox[42217]"><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" 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><figcaption class="wp-element-caption">Calibrated 10MHz signal from UK across Atlantic at 9am UTC</figcaption></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://cloudrf.com/wp-content/uploads/2024/11/HF-calib-data.jpg" rel="lightbox[42217]"><img loading="lazy" decoding="async" width="827" height="466" src="https://cloudrf.com/wp-content/uploads/2024/11/HF-calib-data.jpg" alt="" class="wp-image-42319" srcset="https://cloudrf.com/wp-content/uploads/2024/11/HF-calib-data.jpg 827w, https://cloudrf.com/wp-content/uploads/2024/11/HF-calib-data-300x169.jpg 300w, https://cloudrf.com/wp-content/uploads/2024/11/HF-calib-data-768x433.jpg 768w, https://cloudrf.com/wp-content/uploads/2024/11/HF-calib-data-416x234.jpg 416w" sizes="auto, (max-width: 827px) 100vw, 827px" /></a><figcaption class="wp-element-caption">WSPR data for station G8ORM</figcaption></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://cloudrf.com/wp-content/uploads/2024/11/HF-propagation-over-time.gif" rel="lightbox[42217]"><img loading="lazy" decoding="async" width="960" height="540" src="https://cloudrf.com/wp-content/uploads/2024/11/HF-propagation-over-time.gif" alt="" class="wp-image-42328"/></a><figcaption class="wp-element-caption">HF propagation on 10MHz over 24hrs</figcaption></figure>
</div>


<h2 class="wp-block-heading">A look ahead</h2>



<p>Now that we have published an API, we want to integrate it into some systems. ATAK is an obvious candidate for starters but a HF radio which can see into the future or a ALE modem which doesn&#8217;t need to radiate to know it can, or cannot, communicate.</p>



<p>This capability will be available with the next SOOTHSAYER release.</p>



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



<p>Credit to the many VOACAP developers and maintainers over the years who have maintained this powerful capability. It is arguably one of the most senior pieces of operational software in the commercial world. </p>



<p>We have only put a shell on this incredible engine but hope our API will introduce a new generation of software developers and communicators to the magic of HF.</p>
<p>The post <a href="https://cloudrf.com/hf-skywave/">HF Skywave</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Model and Clutter improvements</title>
		<link>https://cloudrf.com/model-and-clutter-improvements/</link>
		
		<dc:creator><![CDATA[CloudRF]]></dc:creator>
		<pubDate>Mon, 08 Jul 2024 15:45:07 +0000</pubDate>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Modelling]]></category>
		<guid isPermaLink="false">https://cloudrf.com/?p=35380</guid>

					<description><![CDATA[<p>Monday 8th July 2024 Following our most recent field testing, we have identified two significant improvements in accuracy: The first is a new deterministic propagation model; the General Purpose model. This is a frequency agnostic curve which takes its accuracy from high quality reference data. It&#8217;s dependency on high resolution clutter sets it apart from [&#8230;]</p>
<p>The post <a href="https://cloudrf.com/model-and-clutter-improvements/">Model and Clutter improvements</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Monday 8th July 2024</p>



<p>Following our most <a href="https://cloudrf.com/antenna-drive-testing/">recent field testing</a>, we have identified two significant improvements in accuracy:</p>



<p>The first is a new deterministic propagation model; the <strong>General Purpose model</strong>. This is a frequency agnostic curve which takes its accuracy from high quality reference data. It&#8217;s dependency on high resolution clutter sets it apart from legacy cellular models which are more complex empirical curves designed in an era of basic digital models. </p>



<p>The second improvement is better default clutter values which align with <a href="https://www.itu.int/rec/R-REC-P.833/en">ITU-R P.833</a> recommendations, as opposed to our current light clutter values which have been retro-fitted to tune the ITM model, also designed before clutter data was widely available.</p>



<h2 class="wp-block-heading">Dense clutter</h2>



<p>When input settings are adjusted to match field measurements, the model and clutter parameters are adjusted to achieve the best match, measured by the error where a low score eg. 3dB is best. Previously, the calibration adjustments were weighted towards the model with clutter accounting for a relatively minor change. </p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><a href="https://cloudrf.com/wp-content/uploads/2024/06/Europe-clutter-profile.png" rel="lightbox[35380]"><img loading="lazy" decoding="async" width="1024" height="636" src="https://cloudrf.com/wp-content/uploads/2024/06/Europe-clutter-profile-1024x636.png" alt="" class="wp-image-34879" style="width:626px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2024/06/Europe-clutter-profile-1024x636.png 1024w, https://cloudrf.com/wp-content/uploads/2024/06/Europe-clutter-profile-300x186.png 300w, https://cloudrf.com/wp-content/uploads/2024/06/Europe-clutter-profile-768x477.png 768w, https://cloudrf.com/wp-content/uploads/2024/06/Europe-clutter-profile-416x258.png 416w, https://cloudrf.com/wp-content/uploads/2024/06/Europe-clutter-profile.png 1048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<p>With our new dense clutter values, we have referenced the ITU-R P.833 recommendation for vegetation values and other papers for buildings. As a result we have new, dense, clutter profiles which when combined with improved diffraction will improve accuracy.</p>



<p>These templates are optimised for 1GHz. Actual attenuation will vary by wavelength so you are advised to create your own if using a very short wavelength with adjusted attenuation.</p>



<p class="has-medium-font-size">CITY</p>



<p>Buildings are very dense (3.0dB/m), with variable heights and trees are short (8m) and light (0.4dB/m)</p>



<p class="has-medium-font-size">SUBURB</p>



<p>Buildings are dense (2.0dB/m), with variable heights and trees are taller (10m) and denser (0.5dB/m)</p>



<p class="has-medium-font-size">FOREST</p>



<p>Buildings are light (1.0dB/m), with variable heights and trees are tall (12m) and dense (0.6dB/m)</p>



<h2 class="wp-block-heading">ITM model warning</h2>



<p>There is one exception to this which is the ITM model: This is our oldest and most complex model which (uniquely) includes its own Vogler diffraction routine. The new dense clutter will not work with the ITM model which can only be used without clutter or a very light profile such as Minimal.clt.</p>



<p>The following table lists changes to combinations of models and clutter:</p>



<figure class="wp-block-table is-style-stripes"><table><tbody><tr><td>Model</td><td>Clutter</td><td>Comment</td></tr><tr><td>ITM</td><td>Minimal / Temperate / Urban</td><td><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-green-cyan-color">No change to coverage</mark></td></tr><tr><td>ITM</td><td>CITY / SUBURB / FOREST</td><td><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">WARNING: Coverage will be very conservative. Do not use ITM with these profiles</mark>.</td></tr><tr><td>Others</td><td>Minimal / Temperate / Urban</td><td><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-orange-color">Coverage will be optimistic where clutter is present</mark></td></tr><tr><td>Others </td><td>CITY / SUBURB / FOREST</td><td><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-green-cyan-color">Coverage accuracy will be improved where clutter is present</mark></td></tr><tr><td>All</td><td>NONE</td><td><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-green-cyan-color">No change to coverage</mark></td></tr></tbody></table><figcaption class="wp-element-caption">Propagation models and clutter changes</figcaption></figure>



<p></p>



<h2 class="wp-block-heading">Release schedule</h2>



<p>The updated engines and matching clutter profiles are scheduled to be published on CloudRF on Friday the 12th July 2024.</p>



<p></p>



<p></p>



<p></p>
<p>The post <a href="https://cloudrf.com/model-and-clutter-improvements/">Model and Clutter improvements</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>3D radio propagation API</title>
		<link>https://cloudrf.com/3d-radio-propagation-api/</link>
		
		<dc:creator><![CDATA[CloudRF]]></dc:creator>
		<pubDate>Wed, 19 Jun 2024 10:27:19 +0000</pubDate>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Modelling]]></category>
		<guid isPermaLink="false">https://cloudrf.com/?p=34096</guid>

					<description><![CDATA[<p>True 3D multi-path Following two years of R&#38;D, our new 3D engine and API is live. It uses an advanced volumetric design to simulate propagation in all directions making it more advanced than 2D engines which can only produce flat images. By design, it supports multi-path and phase tracking to model &#8220;fast fading&#8221; when signals [&#8230;]</p>
<p>The post <a href="https://cloudrf.com/3d-radio-propagation-api/">3D radio propagation API</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">True 3D multi-path</h2>



<p><strong>Following two years of R&amp;D, our new 3D engine and API is live. </strong></p>



<p>It uses an advanced volumetric design to simulate propagation in <em>all </em>directions making it more advanced than 2D engines which can only produce flat images.  By design, it supports multi-path and phase tracking to model &#8220;fast fading&#8221; when signals collide making it well suited to challenging urban and subterranean environments.</p>



<p>Key features include:</p>



<ul class="wp-block-list">
<li class="has-medium-font-size">3D antenna patterns</li>



<li class="has-medium-font-size">Configurable reflections (up to 10)</li>



<li class="has-medium-font-size">Configurable material attenuation (dB/m)</li>



<li class="has-medium-font-size">Configurable material reflectivity (dB)</li>



<li class="has-medium-font-size">Configurable material diffusivity (Metal v Stone)</li>



<li class="has-medium-font-size">Multi-site support (<em>n</em> transmitters)</li>



<li class="has-medium-font-size">Phase tracking for multi-path effects (Constructive and destructive multipath)</li>



<li class="has-medium-font-size">Configurable resolution from 10cm, subject to model size</li>
</ul>



<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>CloudRF Blender plugin</p>



<h2 class="wp-block-heading">An open file standard and an Open API</h2>


<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[34096]"><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:257px;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>We&#8217;ve chosen the growing glTF 3D standard by the Khronos Group for our input and output. It is supported by most devices, GIS software, graphics engines and 3D viewers.</p>



<p>You can transform LiDAR point cloud scans into a glTF mesh using a number of free packages to exploit popular formats like LAS and LAZ.</p>



<p></p>


<div class="wp-block-image">
<figure class="alignleft size-full is-resized"><a href="https://cloudrf.com/wp-content/uploads/2021/06/openapi.png" rel="lightbox[34096]"><img loading="lazy" decoding="async" width="1025" height="512" src="https://cloudrf.com/wp-content/uploads/2021/06/openapi.png" alt="" class="wp-image-7316" style="width:356px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2021/06/openapi.png 1025w, https://cloudrf.com/wp-content/uploads/2021/06/openapi-300x150.png 300w, https://cloudrf.com/wp-content/uploads/2021/06/openapi-768x384.png 768w, https://cloudrf.com/wp-content/uploads/2021/06/openapi-416x208.png 416w, https://cloudrf.com/wp-content/uploads/2021/06/openapi-120x60.png 120w, https://cloudrf.com/wp-content/uploads/2021/06/openapi-180x90.png 180w" sizes="auto, (max-width: 1025px) 100vw, 1025px" /></a></figure>
</div>


<p>As per our open architecture and API-first design, the 3D API is available now as an open API. You will require a premium CloudRF account and an API key to use it. </p>



<p>With the API, you can push up a model, perform coverage analysis, and view the output using a hosted viewer supported by popular browsers. </p>



<h2 class="wp-block-heading">Multi-path visualisation</h2>



<p>Everyone talks about multi-path, the behaviour of colliding radio waves but can they visualise it? Signals schools teach students that a &#8220;little movement&#8221; will cure a dead spot. That&#8217;s good but when a little more movement puts them back in a dead spot again it doesn&#8217;t solve the real issue, current software cannot practically do multi-path.</p>



<p>There are expensive ray tracing solutions designed for design engineers but not operators deploying equipment, or students even who are taught to <em>move</em>, but don&#8217;t know where to!</p>



<p>In the screenshot below, a directional 5G antenna is pointed towards Tower bridge in London. Where there is line of sight on the river Thames the signal is a solid green. Where there are reflections, the signal is patchy and adjacent to the bridge there is a <strong>notable area of destructive multipath in the middle of the river</strong>. This huge dead spot is caused by strong reflections coming from the south tower of Tower Bridge. The north tower isn&#8217;t as affected due to the angle of incidence which creates a longer reflection path, and weaker reflection.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://cloudrf.com/wp-content/uploads/2024/06/tower_bridge_5g_multipath.jpg" rel="lightbox[34096]"><img loading="lazy" decoding="async" width="1024" height="584" src="https://cloudrf.com/wp-content/uploads/2024/06/tower_bridge_5g_multipath-1024x584.jpg" alt="" class="wp-image-34225" srcset="https://cloudrf.com/wp-content/uploads/2024/06/tower_bridge_5g_multipath-1024x584.jpg 1024w, https://cloudrf.com/wp-content/uploads/2024/06/tower_bridge_5g_multipath-300x171.jpg 300w, https://cloudrf.com/wp-content/uploads/2024/06/tower_bridge_5g_multipath-768x438.jpg 768w, https://cloudrf.com/wp-content/uploads/2024/06/tower_bridge_5g_multipath-416x237.jpg 416w, https://cloudrf.com/wp-content/uploads/2024/06/tower_bridge_5g_multipath.jpg 1112w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<p>Destructive multipath in the middle of a river.</p>



<p></p>



<h2 class="wp-block-heading">Viewer agnostic</h2>



<p>As an open standards API our mesh output can be consumed by browsers, third party apps and AR viewers. We&#8217;ve already integrated it into a <a href="https://cloudrf.com/3d-simulation-roadmap/">Hologram</a> and the popular <a href="https://www.blender.org/">Blender </a>3D software and will add it to our web interface soon since we use Cesium which has <a href="https://www.khronos.org/news/permalink/cesium-now-has-full-support-for-gltf-models">supported glTF since 2014</a>.</p>



<p>You can add glTF models direct into ESRI&#8217;s <a href="https://developers.arcgis.com/javascript/latest/sample-code/import-gltf/">ArcGIS Maps SDK</a>. Demo code is right <a href="https://developers.arcgis.com/javascript/latest/sample-code/import-gltf/">here!</a></p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><a href="https://cloudrf.com/wp-content/uploads/2024/06/tarana_3d_antenna.jpg" rel="lightbox[34096]"><img loading="lazy" decoding="async" width="937" height="611" src="https://cloudrf.com/wp-content/uploads/2024/06/tarana_3d_antenna.jpg" alt="" class="wp-image-34138" style="width:666px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2024/06/tarana_3d_antenna.jpg 937w, https://cloudrf.com/wp-content/uploads/2024/06/tarana_3d_antenna-300x196.jpg 300w, https://cloudrf.com/wp-content/uploads/2024/06/tarana_3d_antenna-768x501.jpg 768w, https://cloudrf.com/wp-content/uploads/2024/06/tarana_3d_antenna-416x271.jpg 416w" sizes="auto, (max-width: 937px) 100vw, 937px" /></a></figure>
</div>


<h2 class="wp-block-heading">Blender plugin</h2>



<p>Whilst developing this we used the popular <a href="https://www.blender.org/">Blender open source </a>3D platform to create obstacles and inspect output. We developed a plugin for Blender which we have open sourced so you can drive it directly from Blender. <a href="https://github.com/Cloud-RF/CloudRF-API-clients/tree/master/integrations/blender">The plugin </a>will upload your model and allow you to use it, along with CloudRF radio templates, to simulate RF coverage.</p>



<p>For more information on the plugin <a href="https://github.com/Cloud-RF/CloudRF-API-clients/tree/master/integrations/blender">see here.</a></p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><a href="https://cloudrf.com/wp-content/uploads/2024/06/blender_plugin.jpg" rel="lightbox[34096]"><img loading="lazy" decoding="async" width="901" height="541" src="https://cloudrf.com/wp-content/uploads/2024/06/blender_plugin.jpg" alt="" class="wp-image-34144" style="width:684px;height:auto" srcset="https://cloudrf.com/wp-content/uploads/2024/06/blender_plugin.jpg 901w, https://cloudrf.com/wp-content/uploads/2024/06/blender_plugin-300x180.jpg 300w, https://cloudrf.com/wp-content/uploads/2024/06/blender_plugin-768x461.jpg 768w, https://cloudrf.com/wp-content/uploads/2024/06/blender_plugin-416x250.jpg 416w" sizes="auto, (max-width: 901px) 100vw, 901px" /></a></figure>
</div>


<p>  </p>



<h1 class="wp-block-heading">3D properties</h1>



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



<p>Instead of a geographic projection like WGS-84, this engine uses XYZ coordinates relative to the model origin (x=0,y=0,z=0). This is better for modelling buildings in isolation like architecture designs which don&#8217;t exist!</p>



<p>When a building is placed upon the earth, the translation to these values should be performed by the client, such as Blender so ideally the user does not need to know what/where they are &#8211; it just looks right.</p>



<h2 class="wp-block-heading">Up and Forward</h2>


<div class="wp-block-image">
<figure class="alignright size-full"><a href="https://cloudrf.com/wp-content/uploads/2024/06/blender_rotate.png" rel="lightbox[34096]"><img loading="lazy" decoding="async" width="299" height="259" src="https://cloudrf.com/wp-content/uploads/2024/06/blender_rotate.png" alt="" class="wp-image-34213"/></a></figure>
</div>


<p>Cartesian vector coordinates are more complex to express than latitude and longitude. </p>



<p>This is best left to the client like <a href="https://github.com/Cloud-RF/CloudRF-API-clients/tree/master/integrations/blender">Blender</a> for example. As a minimum the position is required as XYZ and for advanced usage the API allows &#8220;up&#8221; or &#8220;forward&#8221; XYZ directions to be used to express rotation. Different platforms do different things with coordinates so we have opened up our API to support as many as possible.</p>



<p></p>



<p></p>



<h1 class="wp-block-heading">Materials</h1>



<p>We&#8217;ve supported configurable clutter for years but with multi-path support we have extended support for both attenuation, reflection and diffusion. The glTF standard supports materials by standard with human readable names eg. &#8220;Wood&#8221;. You should match the materials you are using with the &#8220;Keys&#8221; section to capture variants in your model for example: &#8220;Wood&#8221;, &#8220;Oak Wood&#8221;, &#8220;Timber&#8221;. </p>



<h2 class="wp-block-heading">Reflection loss</h2>



<p>Measured in decibels, this is loss incurred by a reflection from a surface. Solid surfaces like Metal reflect most of the energy so have a low loss value of between 1 and 3 dB and softer surfaces like timber absorb more energy so have higher loss values of 3 to 6 dB. </p>



<h2 class="wp-block-heading">Transmission loss</h2>


<div class="wp-block-image">
<figure class="alignleft size-full"><a href="https://cloudrf.com/wp-content/uploads/2024/06/image.png" rel="lightbox[34096]"><img loading="lazy" decoding="async" width="413" height="746" src="https://cloudrf.com/wp-content/uploads/2024/06/image.png" alt="" class="wp-image-34216" srcset="https://cloudrf.com/wp-content/uploads/2024/06/image.png 413w, https://cloudrf.com/wp-content/uploads/2024/06/image-166x300.png 166w" sizes="auto, (max-width: 413px) 100vw, 413px" /></a></figure>
</div>


<p>Measured in decibels per meter, this is absorption loss. These figures will be much higher than what you might have used with our other APIs since those are nominal values based on average attenuation through a house whereas these are the actual value for the <em>material(s) </em>(eg. brick) not the parent obstacle (a brick house).</p>



<p>For example; a brick house measuring 10m wide might have 2 blocking walls at 10dB each for a given UHF frequency. </p>



<p>With the 2D API, this would be represented as a attenuation figure of 20dB / 10m = 2dB. In the 3D API the brick wall would be the simpler 10dB! </p>



<p>The advantage of this is we can now model inside rooms with different materials and furniture &#8211; if you have the model&#8230;</p>



<p></p>



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



<p>Radio waves scatter when they hit a wall. The behaviour varies by the material so you can define this behaviour with the diffusion parameter. It&#8217;s a randomisation ratio from 0 to 10. At 0 there is no diffusion and you are only considering the input ray. With 0.1 a small amount of randomisation is occurring so the reflection is very predictable like a game of pool.</p>



<p>With 10.0 the reflections are truly random in all directions. This would be suitable for a gravel path for example.</p>



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



<p>Modelling a cube is harder than a 2D plane so this takes longer. How long depends upon your model size and resolution and reflections. Increasing reflections doesn&#8217;t add as much work as you might expect due to our efficient design but asking for 20cm resolution for an entire neighbourhood will leave you waiting for a few minutes.</p>



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



<ul class="wp-block-list">
<li>Start with 1m resolution and a small model </li>



<li>Keep you input model minimal. If you have every pot plant in the town it will be a big mesh file and will take longer!</li>



<li>Pretty photo realistic 3D tiles are pretty but take a <em>long</em> time to model. Go ugly early with basic models for speed.</li>
</ul>



<p></p>



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



<p>The swagger documentation is located <a href="https://cloudrf.com/documentation/developer/">here</a>.</p>



<p>The blender plugin is located <a href="https://github.com/Cloud-RF/CloudRF-API-clients/tree/master/integrations/blender">here.</a></p>



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



<p></p>



<p></p>
<p>The post <a href="https://cloudrf.com/3d-radio-propagation-api/">3D radio propagation API</a> appeared first on <a href="https://cloudrf.com">CloudRF</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
