<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Rf on Zero-Entry</title>
    <link>https://zero-entry.co.za/tags/rf/</link>
    <description>Recent content in Rf on Zero-Entry</description>
    <generator>Hugo -- 0.147.7</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 24 Apr 2026 14:26:40 +0400</lastBuildDate>
    <atom:link href="https://zero-entry.co.za/tags/rf/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>WTH I&#39;m Doing RF Now: RTL-SDR &#43; HackRF One (and the dumb problems I hit)</title>
      <link>https://zero-entry.co.za/posts/wth-im-doing-rf-now/</link>
      <pubDate>Sun, 22 Feb 2026 00:00:00 +0200</pubDate>
      <guid>https://zero-entry.co.za/posts/wth-im-doing-rf-now/</guid>
      <description>First sessions with RTL-SDR and HackRF One: scanning 433 MHz, fixing udev permissions, building a passive logger, and the practical lessons from the first two hours.</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="/images/Pasted%20image%2020260219202312.png"></p>
<p>I&rsquo;ve started digging into RF, meaning anything noisy in the air that my SDR can see. This is a quick log of the first sessions using an RTL-SDR (cheap, RX-only) and a HackRF One (wider bandwidth, TX-capable, which stays off outside a legal setup).</p>
<p>This isn&rsquo;t a decoding write-up. The goal for now is observation: watch the spectrum, log activity, and build something useful.</p>
<h2 id="the-kit">The kit</h2>
<ul>
<li><strong>RTL-SDR</strong> (RTL2832U + R820T): cheap receive, wide community support, good for learning.</li>
<li><strong>HackRF One</strong>: wider tuning range, bigger bandwidth, better lab potential.</li>
</ul>
<p>Antennas matter more than most people want to admit. A random wire will pick something up, but it&rsquo;ll also mislead you.</p>
<h2 id="what-im-trying-to-do-v1">What I&rsquo;m trying to do (v1)</h2>
<p>Three things:</p>
<ol>
<li>Scan a band, starting with the 433 MHz junk drawer</li>
<li>Log energy and activity over time to CSV</li>
<li>Watch live when a remote is pressed or something triggers</li>
</ol>
<p>No demodulation, no protocol reversing yet. Just what&rsquo;s alive and when.</p>
<h2 id="rtl-sdr-first-scans-and-the-empty-csv-problem">RTL-SDR: first scans and the empty CSV problem</h2>
<p><code>rtl_power</code> is the right starting point for band surveys:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">rtl_power -f 430M:440M:50k -i <span class="m">1</span> -g <span class="m">30</span> -e 15s /tmp/rtl_433_test.csv
</span></span><span class="line"><span class="cl">head -n <span class="m">3</span> /tmp/rtl_433_test.csv
</span></span></code></pre></div><p>Two things showed up immediately:</p>
<ul>
<li>Frequency hops, FFT bins, the tool doing its job.</li>
<li>This line:</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">[R82XX] PLL not locked!
</span></span></code></pre></div><p>It looks bad. In practice it&rsquo;s common with these dongles and the data is often usable anyway. If it looks broken, try adjusting the frequency range slightly, dropping the gain, swapping the USB port or cable, or ruling out power starvation.</p>
<p>The other thing: the numbers move even when you think nothing is happening. Your receiver sees something constantly. The job is separating signal from noise and logging it so you can compare runs over time.</p>
<h2 id="hackrf-the-access-denied-wall">HackRF: the access denied wall</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">hackrf_info
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">hackrf_open() failed: Access denied (insufficient permissions) (-1000)
</span></span></code></pre></div><p>Linux has the hardware, you don&rsquo;t. Fix it with udev rules.</p>
<h3 id="the-fix">The fix</h3>
<p>Add yourself to the plugdev group:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo usermod -aG plugdev <span class="nv">$USER</span>
</span></span><span class="line"><span class="cl"><span class="c1"># log out and back in after this</span>
</span></span></code></pre></div><p>Check whether HackRF udev rules exist for your distro. If not, create them:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo nano /etc/udev/rules.d/53-hackrf.rules
</span></span></code></pre></div><p>Rule:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">SUBSYSTEM==&#34;usb&#34;, ATTR{idVendor}==&#34;1d50&#34;, ATTR{idProduct}==&#34;6089&#34;, MODE=&#34;0666&#34;
</span></span></code></pre></div><p>Reload:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo udevadm control --reload-rules
</span></span><span class="line"><span class="cl">sudo udevadm trigger
</span></span></code></pre></div><p>After that, <code>hackrf_info</code> works.</p>
<h2 id="driver-detach-and-reattach-noise">Driver detach and reattach noise</h2>
<p>RTL tools print this during normal operation:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Detached kernel driver
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">Reattached kernel driver
</span></span></code></pre></div><p>The SDR tooling takes temporary ownership of the USB device. It becomes a problem when another service grabs the device at the same time, or when you switch tools quickly and the reattach doesn&rsquo;t complete cleanly. Unplug and replug is a valid fix.</p>
<h2 id="current-workflow">Current workflow</h2>
<h3 id="1-quick-band-scan">1. Quick band scan</h3>
<p>Pick a known band, collect a short sample, inspect.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">rtl_power -f 430M:440M:50k -i <span class="m">1</span> -g <span class="m">30</span> -e 60s ./rf_433_1min.csv
</span></span></code></pre></div><h3 id="2-trigger-devices-while-logging">2. Trigger devices while logging</h3>
<p>Press a remote, ring a doorbell, whatever you own and are allowed to test. Watch what shows up.</p>
<h3 id="3-passive-logger">3. Passive logger</h3>
<p>A script that samples a band, writes a CSV row with timestamp and strongest bins, and repeats for hours or days. The goal is trend visibility: activity spikes at these times, at these frequencies.</p>
<h3 id="4-long-runs-in-screen">4. Long runs in screen</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">screen -S rfwatch
</span></span><span class="line"><span class="cl"><span class="c1"># run your loop / script</span>
</span></span><span class="line"><span class="cl"><span class="c1"># detach: Ctrl+A then D</span>
</span></span><span class="line"><span class="cl">screen -r rfwatch
</span></span></code></pre></div><h2 id="lessons-from-the-first-two-hours">Lessons from the first two hours</h2>
<ul>
<li>Antenna placement matters more than gain settings. Move it 30cm and signal becomes noise.</li>
<li>Gain is not volume. Too much gain makes every bin look busy and kills your ability to compare runs.</li>
<li>433 MHz is crowded. Good for learning, bad for clean data.</li>
<li>A CSV you can graph beats ten live waterfall sessions.</li>
<li>Fix udev permissions before you need them, not during a session.</li>
</ul>
<h2 id="rtl-sdr-vs-hackrf">RTL-SDR vs HackRF</h2>
<p><strong>RTL-SDR</strong>: default always-on receiver. Cheap enough to leave plugged in and logging. Good for band surveys and learning.</p>
<p><strong>HackRF One</strong>: used for broader coverage and lab work. TX stays off unless the environment is controlled and the use is legal.</p>
<h2 id="whats-next">What&rsquo;s next</h2>
<ul>
<li>A 24-hour monitor for 433 MHz, then other bands</li>
<li>Lightweight analysis: top active frequencies, time-of-day patterns, spikes worth investigating</li>
<li>Mapping RF fingerprints in the environment: gates, remotes, alarms, sensors. What&rsquo;s constant vs what&rsquo;s event-driven.</li>
</ul>
<h2 id="legal">Legal</h2>
<p>I&rsquo;m monitoring what I&rsquo;m allowed to monitor, on equipment I own, in environments where I have permission. RF gets murky fast if you treat it like network recon without thinking about it first.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
