KerberosSDR is available for sale on the Othernet Store and Hacker Warehouse.
Note: If you have issues or questions please ask in our KerberosSDR forum. We also post updates in the forum.
Overview Videos for Direction Finding
Scroll down for text information.
This video is for Android App V1.3, but most settings remain the same in newer versions.
New videos showing V2.2 App direction finding features:
A great video from SignalsEverywhere:
Powering and Connecting the Hardware
Your KerberosSDR should already come fully assembled.
As there are four on board RTL-SDRs, KerberosSDR has fairly high power requirements. A single USB 3.0 port on a computer that can handle up to 3A is enough to power the device from one high quality USB cable. Note that only the microUSB port is connected to the computers USB port and that the USB-C port is only for additional power.
If you only have USB 2.0 hardware, or cannot provide 3A from the USB port (e.g. single board PCs cannot provide this much current), then you'll need to plug a second power source into the USB-C port on the KerberosSDR. USB-C is used for the dedicated power port as it has much less voltage drop, and the cables are generally higher quality. This power source should be an plugged into a wall 5V USB supply or external 5V battery if going portable.
Note that the USB-C port will not activate for high voltage "power delivery" (PD) USB-C power supplies, such as those used with laptops. It will only work on normal 5V power supplies.
BATCH 2 USB CHANGES (BATCH 2 SHIPPING SINCE FEB 1 2019):
Please note the USB-C port shown in the image below has been replaced with a microUSB port.
Due to too many people having issues finding USB-C supplies that work, batch 2 reverts to microUSB on the power port. If you purchased after FEB1 2019, you will have a batch 2 unit.
Antenna 1 is the port to the left. You can confirm this by looking at the DIP switches. The writing on the DIP switches indicates the antenna order.
40 Pin Header
Please note that this header is experimental only and we are not supporting use of this feature at the moment.
It is designed for powering a Raspberry Pi. If you connect a Raspberry Pi to the header, and power the KerberosSDR you can power it this way. But you must have a very good power supply for the KerberosSDR.
Raspberry Pi/Single Board Computer (SBC) Ready to Use Images
We strongly recommend running your KerberosSDR on a Pi 3/4 or Tinkerboard and using these ready to use images. Other platforms like Linux PCs, and other SBCs do work, but it will be difficult to provide support for other platforms as there are too many variables. At least test your unit on these platforms first.
On your SBCs, it is important to make sure thermal throttling is not occurring (via appropriate heatsinking/fans on the SBC if needed) otherwise sample loss, and hence coherent lock failure may occur.
Raspberry Pi 3 / 4
External WiFi AutoConnect Hotspot: KerberosAndroid
External WiFi AutoConnect Password: KerberosAndroid
External WiFi IP Address: Check WiFi Hotspot Device for assigned IP
Internal WiFi Hotspot: KerberosPi
Internal WiFi Password: KerberosPi
Internal WiFi IP Address: 192.168.4.1 (for VNC, web interface and Android App)
VNC & Linux Username: pi
VNC & Linux Password: raspberry
Internal Hotspot Address for Web Control: IP_ADDR:8080/init
Internal Hotspot Address for Android App: IP_ADDR:8081
Update Notes: Only the latest IMG V1.5 & 1.6 works on the Pi 4. IMG1.6 fixes long term sync stability on the Pi 4, upgrades the web UI, add PR peak hold & improves update rates significantly. 1.6.1 Fixes a HTML bug on the passive radar web display.
Download IMG 1.6.1: https://drive.google.com/open?id=1DhCLYv99QHwpJRM2gvG6UtrIM1RO8_Ua
Download IMG V1.6: https://drive.google.com/open?id=1MK9OiGCznLAv8hENDZoOMKl_F0_GYCZs
Download IMG V1.5: https://drive.google.com/file/d/14AVWcNOKr6wyBtfkwIBFqNrN3d9xAweA/view?usp=sharing
Download IMG V1.4: https://drive.google.com/file/d/1H77bUt9AXVZC8NXvcl0cBubuh9yuMTti/view?usp=sharing
Download IMG V1.3: https://drive.google.com/file/d/1Vwt-bcQNDP6KEWtqdadOdZOT-LBGQXhj/view?usp=sharing
External WiFi AutoConnect Hotspot: KerberosAndroid
External WiFi AutoConnect Password: KerberosAndroid
External WiFi IP Address: Check WiFi Hotspot Device for assigned IP
Internal WiFi Hotspot: Kerberos_Tinker
Internal WiFi Password: kerberos
Internal WiFi IP Address: 192.168.4.1 (for VNC, web interface and Android App)
Linux Password: kerberos
Default Internal Hotspot IP address for VNC: IP_ADDR:5900 (no password)
Address for web control: IP_ADDR:8080/init
Address for Android App: IP_ADDR:8081
Download IMG V1.4: https://drive.google.com/open?id=1shO-9xD2prrqGBSg9Zjj5tVCighqPg3p
Note please see our current issues forum thread for any currently known issues.
We have decided to release images only for the Pi 3 and Tinkerboard at the moment. Other SBCs like the Odroid XU4 do not have built in WiFi and the Rock Pi 4 appear to have show stopping bugs with the WiFi Hotspot which we use for connections. However, the software does work on the XU4 and Rockpi4, so feel free to manually install it. (We will have an image for the Pi 4 soon)
Single Board Computer (SBC) Quickstart
- Burn SD Card and insert into SBC (or flash eMMC).
- Plug KerberosSDR into SBC, and connected the KerberosSDR's power cable.
- On your Android device create a Mobile Hotspot with username/password "KerberosAndroid" on your phone.
- Turn on your SBC, and wait a couple of minutes for it to boot and connect.
- Check your Android Mobile Hotspot settings for the connected devices, and get the IP address.
- Enter the address for web control (IP_ADDR:8080/init) in a browser or in the app.
- Go through configure and sync steps described further below.
Manually Installing the software on a PC / Other SBC
NOTE: There has been some confusion around this, if you are using the ready to use images shown above you DO NOT need to follow this manual installation guide as the software is already pre-installed on the ready to use images. These manual installation steps are only for installing the software yourself on a PC or your own SBC.
The KerberosSDR software has been tested on Ubuntu Debian systems.
Install Dependencies via apt:
sudo apt update sudo apt install python3-pip python3-pyqt4 build-essential gfortran libatlas3-base libatlas-base-dev python3-dev python3-setuptools libffi6 libffi-dev python3-tk pkg-config libfreetype6-dev php-cli wondershaper
Just in case, try to uninstall any previously installed numpy packages as we want to install with pip3 to get optimized BLAS routines.
sudo apt remove python3-numpy
Install Dependencies via pip3:
pip3 install numpy pip3 install matplotlib pip3 install scipy pip3 install cairocffi pip3 install pyapril pip3 install pyargus pip3 install pyqtgraph pip3 install peakutils pip3 install bottle pip3 install paste
Install RTL-SDR-Kerberos Drivers
Our Kerberos RTL-SDR driver branch contains code for slightly modified Osmocom RTL-SDR drivers that enable GPIO, disable dithering, and disables zerocopy buffers which seems to cause trouble on some ARM devices.
sudo apt-get install libusb-1.0-0-dev git cmake git clone https://github.com/rtlsdrblog/rtl-sdr-kerberos cd rtl-sdr-kerberos mkdir build cd build cmake ../ -DINSTALL_UDEV_RULES=ON make sudo make install sudo ldconfig echo 'blacklist dvb_usb_rtl28xxu' | sudo tee --append /etc/modprobe.d/blacklist-dvb_usb_rtl28xxu.conf
Now you may need to reboot, but on most systems you should be able to run rtl_test as described below already.
Test 4x Tuners (Optional)
At this stage we recommend first testing your four tuners with rtl_test. Open four terminal windows, or tabs, and in each window run "rtl_test -d 0", "rtl_test -d 1", "rtl_test -d 2" and "rtl_test -d 3". Ensure that each unit connects and displays no errors.
Install and Run KerberosSDR Demo Software
Clone the demo software from the GitHub:
cd ~ git clone https://github.com/rtlsdrblog/kerberossdr
If you are running on an SBC, you will probably want to first edit the C code Makefile compiler flags to be optimized for your particular architecture. The Makefile is stored in _receiver/C. Otherwise if running on a PC/laptop, simply run the following script to compile the code.
cd kerberossdr sh setup_init.sh
(Optional if you are using an SBC and/or intend to use the web interface features). Using a text editor like gedit or nano, edit the IP address parameter in run.sh, and set it to your machines IP address. On SBCs you may also wish to enable the lines in run.sh that enable the "performance" CPU mode to reduce the likelihood of CPU throttling. On a Pi 3 or other SBC that shares Ethernet/WiFi and USB bandwidth please also enable the wondershaper lines, to ensure the USB bandwidth is not suffocated by network use.
Now you can run the software by typing:
Synchronizing and Calibrating KerberosSDR in the Demo Software
These steps assume that you've connected your KerberosSDR to the PC and power. The steps to the software are summarized as follows:
- Set the frequency, sample rate and gain settings.
- Calibrate the SDR with the noise source.
- Connect antennas.
- Use the DOA or Passive Radar tabs.
Setting The Frequency and Gain
- Click on the Configuration and Spectrum screen
- Click on start processing. Confirm that an update rate is showing.
- Under receiver configuration enter the center frequency of your signal of interest, and a sampling rate. For sampling rates we recommend 2.56 MSPS for passive radar, and 1.0 MSPS for direction finding.
- Set the gains for each receiver as required to optimize the signal SNR. The gains of each receiver must be set at 15.7 or higher in order to successfully sync KerberosSDR. (Note that Passive Radar only needs the first two receivers, but you still need to set the gains on all receivers above 15.7 for sync)
- Click on the "Set" button to write the frequency, sampling rate and gain settings to the KerberosSDR.
- Check DC compensation on for slightly better results (optional).
- Click the "Enable spectrum display" checkbox if desired to check the spectrum. This will show you the spectrum visually and you can check that your signals are being received.
- Disable the spectrum display when finished to reduce the CPU load.
Synchronization and Calibration Process
Initial Step: When synchronizing, we recommend disconnecting your antennas first.
- Direction Finding: Disconnect antennas and optionally connect the included 4x 50 Ohm terminators. Connecting the terminators is optional, but doing so may give you slightly more accurate results. You must perform both sample and phase calibration.
- Passive Radar: If you are doing passive radar, you do not need to connect the terminators. Only sample calibration is required.
Alternatively, you can also synchronize your KerberosSDR with the antennas connected. BUT, if there are signals within the bandwidth being currently received then this can distort the phase calibration. So we recommend checking for signals first in the spectrum graphs.
IMPORTANT: Always calibrate with the FIR filter set to zero, and the decimation set to 1.
- Calibration assumes that you have already set the desired frequency, sample rate and gains. Every time you change those settings by clicking on the "Set" button, you will need to re-calibrate.
- Click on the Sync tab.
- Enable the Noise source and sync display check boxes. Notice that the Abs X corr graph has three peaks, and that the Sample delay history and phase diff history is non-zero. This indicates that the KerberosSDR is not synced.
- Click on "Sample Sync". Wait until the sample delay history graph and Abs X Corr graphs become zero'd.
- If doing direction finding, click on Correct IQ. Wait until the Phase diff history graph is zero'd.
- At this point KerberosSDR is in sample and phase sync. Please note that you must perform these steps every time you start the application, or every time that you tune to a different frequency or change the gain settings.
- You can now uncheck the noise source and graph check boxes.
If for some reason you are having issues follow the troubleshooting guide below
- Ensure that you are using a high quality microUSB data cable. To date, the most common issue has been people with cheap microUSB cables. Cheap low quality cables won't be able to handle the data transfer rates required by the 4x RTL-SDR dongles.
- Double check that your KerberosSDR is powered correctly via the USB-C port. When plugged in there should be a white light glowing inside the enclosure (you can peek through where the DIP switches are).
- You can enable logging by editing the execution line in the run.sh file. Comment out the execution line, and uncomment the commented one that has logging. Check the log files after trying to run the code. (NOTE, older versions and some current images may not have the logging line. Simply edit the execution line and remove the output redirection to /dev/null.
These steps assume that the synchronization and phase calibration steps have been completed.
- Connect your direction finding antenna array (more details on that below), and go back to the Configuration and Spectrum tab.
- Enable the spectrum display and check that your signal of interest is centered in the spectrum display.
- Using the decimation, FIR tap size and filter BW settings, reduce the bandwidth so that only the centered signal of interest is being received. You will want to use these options to filter out other signals, so that only your signal of interest can be seen in the spectrum.
For example, for a 25 kHz signal, we might set the filter bandwidth to 25 kHz, the FIR tap size to 100, and the decimation to 4.
IMPORTANT: The decimation value must be a power of two with a maximum value of 8, for example: 1, 2, 4, 8. A decimation value of 2 will halve the bandwidth, a value of 4 will halve it once again.
The filter bandwidth and FIR tap size settings are related. The Filter BW setting should be set to the bandwidth of the signal of interest. For example for a narrow band signal that might be 15 kHz. The FIR tap size sets how tight the filtering is. Higher values result in tighter filtering which blocks other signals more. But this comes at the expense of higher CPU usage. A typical FIR tap size is 100.
Increasing FIR filtering will increase computation time, thus decreasing the update rate. Increasing decimation will reduce computation time, making the update rate faster again.
IMPORTANT: If you need to resync in the future, you must reset the FIR tap size back to zero, and Decimation back to 1 before syncing.
- Disable the spectrum display.
- Click on the DOA Estimation tab.
- Use the Arrangement drop down box to choose whether your antennas are arranged in a uniform linear array (ULA) or uniform circular array (UCA) (see further down for antenna array details).
- Set the spacing factor of your antennas (see further for details).
- Check the Enable box, and choose ONE DOA algorithm. The best algorithm for most applications would be MUSIC.
- You will now see a graph that should indicate the incident angle.
Antenna Interelement Spacing Factor
The antennas need to be spaced out from one another ideally at a spacing factor of somewhere between 0.1 - 0.5 multiplied by the frequency wavelength. The interelement spacing factor must be below 0.5 to avoid ambiguities. And in practice, you should not have the spacing factor come close to 0.5.
Larger spacing factors result in higher resolution, but require more space. Higher resolution means thinner peaks on the graph, and the ability to differentiate between multiple angles including multipath. But often this results in a multipath signal sometimes showing as more dominant. Smaller spacing factors and thus smaller resolutions can in effect average multipath as the peaks will combine into one wider peak that could be slightly skewed. Feel free to experiment with different spacing factors, but we've found that 1/3 or 0.33 tends to be a good compromise and works the best in most cases, but we have had success all the way down to 0.1.
Please use an online wavelength calculator to determine the full 1/1 wavelength of the frequency you are interested in. Multiply the full length wavelength by the spacing factor and then by three, to get the full linear antenna array length required. Low frequencies can potentially require very large antenna spacing, but you could experiment with smaller ~0.1 spacing factors.
In the KerberosSDR software Direction Finding tab, you must enter the spacing factor that you are using to get correct results. Note that for a circular array the software expects you to convert this into a radius (see further below).
Direction Finding Antenna Arrangements
ULA - Uniform Linear Array
This is simply a straight line of omnidirectional antennas (e.g. magnetic whips or dipoles) spaced out at λ * s, where λ is the frequency wavelength, and s is the interelement spacing factor. As discussed previously, in order to avoid ambiguities, the interelement spacing factor must be less than 0.5.
Ideally the interelement spacing factor is somewhere between 0.1 to 0.5, and we normally recommend 1/3 or 0.33.
We recommend starting your direction finding experiments with a uniform linear array as this is the easiest antenna arrangement to test with. The circular array could produce more false results due to the greater risk of multipath. However, note that a linear array cannot tell if a transmitter is in front or behind it.
If going hand held, it can be a good idea to place the antennas on a stick that can be rotated. The most accurate results come from when the antennas are at 0 degrees (facing the signal). So one technique is to rotate the stick until the KerberosSDR software reads 0 degrees. A compass can be placed in the middle of the stick, and the direction perpendicular to the antennas is the direction of the transmitter.
UCA - Uniform Circular Array
This has the antennas arranged in a circle. Like the linear array, the maximum element spacing must be smaller than half of the frequency wavelength (0.5 * λ) to avoid ambiguities. Again for most cases we'd using about recommend 1/3 the wavelength.
The KerberosSDR software expects the interelement spacing factor to be converted into a radius. So for example, if we chose an interelement spacing of s' = 0.33, the radial spacing factor to enter into the software would be s = 0.33 / (sqrt(2)) = 0.233.
LATEST CODE VERSION NOTE: In the latest version (graphs have a black background), we've merged community code which replaces the spacing value with just the antenna inter-element spacing. For a circular array, this is just the distance between antennas, there is no need to adjust for the radius.
Physical Limitations of Direction Finding and Things to Know
With direction finding it's important to understand the limitations imposed by physics and the nature of RF.
Ambiguities: With direction finding there can be ambiguities if the antenna array interelement spacing is greater than 0.5 * λ. Ambiguities are when there is more than one possible direction calculated. Keep the antenna array well below this threshold. Typically a spacing of 0.33 * λ could be used.
Multipath: Multipath occurs when signals bounce of walls and other objects. This can cause a signal to appear to be coming from another direction. If the line of sight to the signal is completely blocked, you are likely to receive a reflection more strongly.
If you're using a linear antenna array, you can enable Forward-Backward averaging which can help, but could also make things worse. A directional linear antenna array (like an array of patch antennas) could work even better to reduce the effect of multipath. To get around multi-path issues, we recommend using a vehicle and driving around with our Android app (see below). By moving around you can get multiple readings and average out and ignore false multipath readings.
To reduce multipath it's also important to ensure that the antennas have identical radiation patterns. So if using whip antennas ensure good coupling to the ground plane, and identical lengths of coax etc.
Other Direction Finding Tips
Watch out for signal reflections from the KerberosSDR enclosure itself, your laptop, and any nearby objects. These can skew the results. If possible have these objects underneath the antenna array.
We recommend using short high quality shielded coax cables on all your antennas. If signals enter through the coax cable, this can distort the direction finding system.
If using magnetic mount whips, ensure that you use whips with good coupling to the ground plane (e.g. car roof). Some further advice can be found on the PA8W RDF website.
In the demo software there is a choice from the Bartlett, Capon, MEM and MUSIC direction finding algorithms. Generally we find that MUSIC is the most reliable one, with Capon coming a close second. Unless you know what you are doing, only activate one algorithm at a time. Activating more than one will combine the results into an average.
When using a linear array you can activate FB Averaging (Forward-Backward), which averages signals coming in from behind and in front of the antenna array. This reduces the effect of multipath reflections, but can also cause the angle to become skewed. Do not turn it on when using a circular array.
Direction Finding Android App and Web Compass Display
To use the Android app you will first need to set up a "Mobile Hotspot" on your phone. This will allow you to share the 3G/4G connection on your phone with the KerberosSDR server.
To do this, go into your Android settings and find the Mobile Hotspot setting. It is usually under Connection or WiFi settings. Create a new hotspot with name "KerberosAndroid", and password "KerberosAndroid". Activate the hotspot.
The KerberosSDR software images for the Pi 3 and Tinkerboard (v1.4+) will automatically connect to this hotspot after booting (please wait 2-3 minutes for boot). After it has booted, look at the Mobile Hotspot settings in your Android device and find the "Connected Devices" heading. Use this to determine the IP Address that it has given the server.
If you are using a laptop or your own SBC, you will need to either manually connect, or set up your own autoconnection.
If Mobile Hotspot on your phone is not activated when the KerberosSDR server on the Pi3/Tinkerboard boots, the server will automatically create it's own hotspot. You can instead connect your phone to this hotspot, but be aware that your phone will not have an internet connection, and so features like map download and navigation will not function.
PLEASE NOTE: The compass is currently broken in the Tinkerboard Image. The Android App is working normally.
The compass display runs via a webpage. Browse to http://IP_ADDR:8081/compass.html
Android App Usage
- Create a Mobile Hotspot on your phone with the username/password KerberosAndroid/KerberosAndroid.
- Boot the Pi3/Tinkerboard KerberosSDR server and wait 2-3 minutes for it to connect to the hotspot. Find the IP address of the connected KerberosSDR server from your phone.
- In a web browser, browse to IP_ADDR:8080/init, OR set the IP Address in the Kerberos SDR App settings, then go to the Kerberos SDR Server Settings window via the hamburger menu to access the web interface.
- Next using the instructions previously described in this guide, set the frequency & gain, phase calibrate the unit, and set the bandwidth, decimation and FIR filtering for your signal of interest.
- Still on the KerberosSDR web interface enable direction finding, and enable a direction finding algorithm (MUSIC is the most common).
- Go back to the main screen of the app, then using the menu hamburger (three dots on the top right) open the settings.
- If you didn't already, change the server address to IP_ADDR:8081, where IP_ADDR should be replaced with the IP address of the machine running KerberosSDR.
- Choose whether or not you are using a linear or circular antenna array under the "Antenna Array Settings"->"Antenna Array Type" options. If using a linear array, we suggest setting the "Linear Search Direction" setting to both. This will show you both possible direction solutions (back and forward) for a linear array.
- Choose the bearing mode that you are using. If you're walking or driving around in a car, GPS mode will be the most accurate. If you are stationary and have calibrated your phones compass, you can try the compass mode, although phone compasses can be quite inaccurate. Otherwise if you are stationary you can use the manual mode.
- Change the log file name to a unique file name with .csv extension.
- Leave everything else as their default, and go back to the map by using the back arrow.
- Press the red timer icon on the bottom right to begin direction finding. Once pressed you should see lines indicating the user bearing, and the RF bearing.
- If you are logging, you can now walk/drive around with your KerberosSDR.
- You can enable a live direction heatmap grid by going to the hamburger menu and enabling "Plot Grid and Estimate". This grid will automatically update over time, gathering confidence as more data at more locations is collected. Not that this grid only works properly with Circular Antenna Arrays.
- The double circles indicate the estimated location of the TX. Initially, the estimated location will be red and incorrect. When confidence is high enough, it will become green. The small circle indicates the current moving average location that navigation will navigate to.
- If you desire, you can also use the automatic turn by turn navigation feature to drive to the estimated location by pressing on the red arrow button, just above the timer button that starts direction finding. The destination will update as the estimated location circles update.
- Once done, press on the red timer icon again to stop direction finding, and stop logging.
- You can view your log file by selecting Open Log in the top right drop down menu, then enabling "Plot Log File". The log file will be stored in the internal storage Downloads/KerberosSDR folder.
NOTE: If your log file is large (been driving around for many minutes) we suggest setting the "plotting step" setting to 5 or higher, to skip every 5th point. Otherwise the app may lag and struggle to plot all logged points.
- There is a menu that pops up when you long press on the map. This can be used to add a marker, navigate to any chosen location or move the grid center.
Networked Direction Finding via Stationary Units and Triangulation
We've uploaded a short Python script to GitHub that allows radio direction bearings from a KerberosSDR to be used with the (third party) RDF Mapper software created by Jonathan Musther. RDF Mapper is a (~US$25) program that was initially written for the RDF42, a kit based doppler direction finding system. RDFMapper runs on Windows/MacOS and Linux.
The RDF Mapper software allows you to upload bearings from multiple devices distributed around a city to a public RDF server, and view all the bearings on any internet connected PC. This can allow you to quickly triangulate the location of a transmitter.
Normally you would use RDFMapper combined with an RDF42 to upload bearings, but we've written a simple script that can be used to upload bearings generated by a KerberosSDR onto the server. The RDFMapper software can then be used to visualize those bearings.
The script is based on Python, and can run directly on the Pi 3/4 or Tinkerboard that is running the KerberosSDR, or on another PC that can see the KerberosSDR bearing server if you prefer.
Instructions are available on the GitHub page. Simply set unique station names for each of your distributed units, entry your lat/lon and fixed direction bearing. Then on the RDF Mapper software open the 'Web upload/download' tab and add the unique station ID name. All the other tabs for connecting to a GPS and serial port can be ignored, as those are used for the RDF42.
This script will only work for stationary KerberosSDR units as the lat/lon is fixed. If you want to try radio direction finding in a vehicle, we recommend using our Android App for a better experience. If there is interest, we may also add support for the Android app to upload to an RDFMapper server for mobile bearing uploads.
Notes: RDFMapper runs on the system's default browser and it needs to run in either Chrome or Firefox to work. IE does not work. It also appears that Jonathan processes orders manually, so we just want to note that there may be a delay between payment and receiving the software.
Networked Direction Finding With the Android App
The Android app now supports uploading to an RDF Mapper server too. In the App set the RDF Mapper server address to http://rdf.*******.net/save.php, and use a unique station name. (We *'d the server address to prevent people who did not purchase RDF Mapper from uploading to the server. Please check the RDF mapper documentation for the server address and don't forget to add the /save.php part.
Normal radar systems work by transmitting a pulse of RF energy, and listening to the reflections from objects like planes, cars and ships. Passive radar works by using already existing transmitters such as those for FM/TV and listening for reflections that bounce of objects.
With a simple passive radar system you need two directional antennas and two coherent receivers. One antenna points at the transmitting 'reference' tower, and the other at the 'surveillance' area where you want to listen for reflections. It's important to try and keep as much of the reference signal out of the surveillance antenna as possible, which is why directional antennas like Yagi's are used.
The result is a doppler vs time delay graph, where the reflection of aircraft, cars, ships and other objects can be seen. The doppler gives you the speed of the object relative to your antenna and the transmitting tower, and the time delay gives you the distance relative to your antenna and the transmitter tower.
Passive radar is quite dependent on the geometry of your location, so may not work everywhere.
To set up a passive radar you'll first need to determine where in your area a strong FM, DAB or DVB-T signal originates from. You'll also need to determine what you want to track, whether it be ships, cars or aircraft. Ideally the objects and the transmitting tower will be located 180 degrees out from one another, but smaller angles can be tolerated. We've found that about ~70 degrees seems to be the limit. The idea is to prevent the direct signal from the transmit tower coming in through the surveillance antenna.
- To reduce the number of direct signal entering the surveillance antenna use a high directivity antenna like a Yagi
- Use your house or car to shield your surveillance antenna from the direct signal.
Passive Radar Software Setup
Notes on the settings:
Reference: This is the channel that the antenna pointing towards the transmitter is connected to. (With 0 being the first channel, and 3 being the last channel).
Surveillance: This is the channel that the antenna pointing towards the objects of interest is connected to.
Sample Size: The number of samples to use. Higher may result in cleaner results, but slower updates.
Time Domain Clutter Suppression: Suppresses signals reflections from static objects (clutter). Will most likely need to be always on, otherwise the clutter can cause the actual objects to be lost in the noise.
Method: Clutter Suppression method, currently only Wiener - SSMI is available.
Filter Dimension: How far on the PR radar display do you want clutter suppression to be active. Increasing this value enables clutter suppression to be active at further distances. Typically set equal to the max range, but could be reduced to reduce CPU usage.
Max Range: Must be a power of 2 (e.g. 64, 128, 256, 512). Up to what range of the radar graph do you want to display.
Max Doppler: The max speed on the radar graph that you want to display.
Windowing: The windowing function used in the algorithm. Minor effect, but experiment with this.
Dynamic: Essentially the contrast of the passive radar display. Adjust this so that actual detected objects are displayed strongly on your graph.
We have set up the settings so that the defaults should be fine for most people. Simply enable time domain clutter cancelling, and passive radar processing to start. You can then try tweaking the settings.
If you have set your IP address in the run.sh file, the KerberosSDR demo software will host a web interface which can be used to control it on a headless system. This is useful for when running on a single board PC, without a monitor as you won't have access to the actual GUI. As an alternative to the web interface, you could also VNC into the machine.
To access the web interface ensure that both devices are connected to the same network, and then browse to (replacing ID_ADDR with the server IP Address):
On the Pi 3 and Tinkerboard you can connect to the WiFi hotpost and connect to the default IP address of 192.168.4.1.
On these pages you can set all the settings as in the GUI, and view the graphs. Settings will only be updated once you click on the "Update" or "Start" buttons.
KeberosSDR Notes and Troubleshooting
I don't want to use the hotspot, and want to connect to my own home WiFi network
For the Pi 3 edit "sudo nano /etc/wpa_supplicant/wpa_supplicant.conf", and change the SSID and key to your own home network. After you reboot it should connect to your WiFi network automatically.
For the Tinkerboard, simply enter the network settings GUI via the desktop start menu, and edit the WiFi details there.
Heat Management / Warm Up - KerberosSDR loses phase sync after 5-10 minutes the first time it's booted
Large temperature swings can cause the KerberosSDR to lose phase sync. If you're starting up the unit and it has been sitting in cold temperatures, let it run for 10 minutes to warm up. During this time watch the sync screen to ensure it stays synced.
In hot environments with stale air, KerberosSDR may lose sample sync if the device gets too hot. In this case keep the device cool with a small amount of airflow. The bottom side of the box acts as a heatsink, so another tip is to place the box upside down or on its side, so that heat can dissipate better.
Block/Buffer Size (Advanced Setting)
The block size is set by default to 256. A lower block size results in faster update rates, but less processing gain. This is most apparent with passive radar, where a lower block size results in less resolution.
To change the block size edit the run.sh file with a text editor. Change the BUFF_SIZE parameter to either 128, 256 (default) or 512. Only faster computers will be able to handle the higher block size of 512. Using a block size of 128 will make the update rate much faster at the expense of processing gain. A block size of 128 may be desirable for direction finding as the update rate can be increased.