By Per Magnusson, SA5BYZ
This is the sixth part in the article series about the FoxScope 2m ARDF receiver and describes how it is used. It is assumed the reader knows how radio direction finding in general is done on the 2 m band.
The receiver has an alphanumeric LCD, a rotary encoder with a built-in push button and a membrane keyboard with four keys.

The LCD can show four lines of text, but it can also merge two lines into one, forming a row with twice as tall characters. This mode is used on the main screen to make the most important information (received signal strength) more salient. It is not used in the menu system.
The rotary encoder is used to e.g. set the gain, set the frequency and navigate in the menu system. The four buttons are mostly used as quick-access function keys for various features.
Feature Overview
The software features include:
- Up to 9 pre-programmed frequencies
- Quick cycling between pre-programmed frequencies
- Audio RSSI (received signal strength indicator), helping to pinpoint the precise direction in which the signal is strongest
- Numerical RSSI on the screen (independent of gain setting)
- Numerical max RSSI of the previous fox
- AGC, activated by a button press
- Real time clock
- Audio beeps at selectable positions in the transmit cycle, e.g. at 30 s and 50 s
- Indication of which fox should currently be transmitting
- Indication of which pen color to use for the current fox
- Battery indicator
Display Overview
The most common display state during a race is shown below with annotations explaining the various items.

During a race, one is more or less exclusively in the display state above where the gain is adjustable by the rotary encoder and the line with the gain and the current RSSI are at double height. The following information is shown:
- The blinking block cursor indicates that the gain setting is activated.
- The gain is set to 30 dB in this case
- RSSI is in this case 9.0 dB
- The R at the end of the first row indicates that Audio RSSI is enabled
- The frequency is 144.7375 MHz
- The peak RSSI during the previous transmit cycle was 13.5 dB
- The battery is close to fully charged
- The time is 15:18:38
- Fox number 4 should be transmitting
- The pen color for this fox is yellow
One might have expected a distance estimate in meters rather than a dB RSSI reading. I have so far avoided to implement that conversion in this receiver (I have it on my 80 m receivers) mainly because at 2 m, there are factors (mostly terrain) that very significantly affect the signal strength, so a distance reading becomes very unreliable in many cases. So, I think it is better to learn how to convert the dB reading to an idea of the distance, taking the terrain into account.
Here are some very rough guidelines for what RSSI readings might mean in terms of distance when using typical transmitters:
- 90 dB, you are standing in/on/under the antenna
- 80 dB, a few tens of meters from the antenna
- 60-70 dB, you might be able to run to the fox in one or two minutes
- 40 dB, on the order of 1 km left, or the terrain is blocking the signal
Setting the Gain
While the gain item is selected (blinking block cursor at the top left of the screen), the gain can be modified by rotating the encoder knob. The action is accelerated, so quick rotation results in progressively larger gain steps being taken, while slow rotation keeps the gain steps small.
In practice, this method of setting the gain usually only has to be used when making small adjustments. To quickly adapt to the change in signal strength when one fox stops transmitting and another one starts, it is much more effective to press button 1 for “auto gain”. Key 1 may or may not also be conveniently available as an extra button reachable by the thumb while still holding the handle. This way of adjusting the gain saves valuable time.
Audio RSSI
The main lobe of a 3-element Yagi or other reasonable antenna used in ARDF is not particularly narrow. Instead, the peak is rather flat and it can be hard to determine the precise direction of the maximum by trying to listen to changes in volume on the order of a dB. But the software can easily discern such small changes and can help.
The audio RSSI works by translating the signal strength to a tone with a pitch (frequency) that depends on the signal strength. This tone is added to the normal received audio, but is often at a significantly different frequency, making it possible to discern the two.
It turns out that it is much easier for the human ear to pick out small changes in pitch compared to small changes in volume. The audio RSSI tone depends on the amplified signal, such that a higher gain setting results in a higher pitch. There is also an additional feature that there is a sudden jump upwards in pitch when the signal reaches a certain threshold. By adjusting the gain such that this jump occurs just at the tip of the antenna lobe, it becomes relatively easy to find the precise direction of the maximum signal.
Pressing the auto-gain button while the antenna is pointed approximately towards the maximum, sets the gain very close to this ideal gain setting. One may have to make a fine adjustment, either by pressing the button again with the antenna in a slightly different direction, or by adjusting the gain by a dB or maybe two by rotating the knob.
If this feature is not desired, it can be turned off by holding the key 1 down for at least one second. It can then be re-enabled by another long press on key 1.
Navigating Between Functions
To access other features than setting the gain, one clicks on the encoder and the block cursor changes to an underline.

Another thing that happens is that the bottom row changes from displaying the time and which fox is transmitting, to show what the functions of the four membrane keys are.
The four keys have the following functions in this state:
- Key 1, Auto Gain, as explained above. Holding this button for more than 1 second toggles audio RSSI, which is indicated in the display by the R at the top right changing to an x.
- Key 2, IF bandwidth, cycles between an IF bandwidth of 21 kHz, 6 kHz and 3 kHz. Lower bandwidth means lower noise floor, but also that the frequency setting must be closer to the actual frequency of the fox. The bandwidth setting affects the step size when manually adjusting the frequency. This feature is rarely needed, but could be useful if some fox is particularly weak.
- Key 3, cycle between pre-programmed frequencies. Frequency 1 of 2 is active in the photo above.
- Key 4, activate the gain setting and toggle between showing time or key labels on the bottom row.
At this point, rotation of the knob moves between items on the screen. One can e.g. move one step to the frequency setting:

Here the underline cursor is at the beginning of the frequency. To change the frequency, one has to click on the knob to select the current item:

This makes the second row taller at the expense of the first row. The underline cursor also moves to show which digit in the frequency is being adjusted. As mentioned previously, the IF bandwidth setting affects how much the frequency is changed for each step of the encoder. At 21 kHz, the step size is 10 kHz. At 6 kHz, the step size is 2 kHz while at 3 kHz IF bandwidth, the step size is 1 kHz.
Clicking the encoder deactivates the frequency item and one can move on to either of the four items at bottom of the screen. This means that one can use the encoder to activate the functions of the membrane keys. This is a redundant safety feature as I once had a membrane keyboard fail during a training, which then limited what I could do with the receiver until the hardware was repaired.
As mentioned previously, holding key 1 for a second or more toggles whether audio RSSI is present. If it has been disabled, the R at the top right changes to an x:

The menu symbol (“hamburger”) at the bottom right is the gateway to the menu system. One does however not get into the menu by pressing key 4, but by navigating there using the encoder and pressing the encoder. This is not something one normally has to do during a race, but rather when configuring the receiver in preparation of a race. Here the underline cursor is under the hamburger symbol:

The top of the menu looks like this:

The down-arrow at the bottom right indicates that there are more items further down. The S in “Set” on the top row currently has the underline cursor. Scrolling down, one can see the rest of the menu:


The X at the bottom right is a menu item that exits the menu. The menu can also be exited by pressing 4.
The functions of the menu items are as follows:
Set t=0
This is at the top of the menu since there is a small chance it can be useful during a race. Activating this rounds the seconds in the real time clock to zero. The idea is that if the transmissions are out of sync with the clock in the receiver, one can activate this function exactly when one fox stops and the next starts transmitting to synchronize the clock to the foxes.
Having the clock match the transmissions ensure the beeps (normally indicating 30 seconds and 50 seconds) come in the correct phases within a cycle and that the fox number shown on the LCD is correct.
Lock frequency
Activating this makes the receiver find the strongest frequency peak within the pass band (normally 21 kHz wide) and retune to that. Could perhaps be useful if the transmitters are slightly off. I don’t think I have ever had to use this function in a race and it is not thoroughly tested.
Frequency table
This is where frequencies can be pre-programmed.

When the function is entered, the first menu item, number of frequencies, is selected, so rotating the knob changes how many frequencies there are in the list. From 1 up to 9 frequencies can be pre-programmed. Normally only 2 are used, the frequencies of the foxes and the one for the beacon.

When editing the frequencies, one can press the keys 1 and 2 to move to a more or a less significant digit in the number. Only the digits representing 1 Hz to 100 kHz can be directly edited, but it is possible to select frequencies between 143.9 MHz and 146.1 MHz (by e.g. adjusting the 100 kHz digit).
Selecting Apply stores the programmed values. Selecting X (or pressing 4) before the values have been stored exits the menu without saving the changes.
Clock settings
This where the real time clock can be set. (It is by the way also synchronized to the computer clock when uploading software to the receiver.)

The current time is shown at the top. The minutes can be incremented or decremented by the menu items min++ and min–. Likewise for the seconds. There is also an option to set the seconds to 0. Normally one only has to adjust the time buy a few seconds and using these functions is the easiest way of doing that. The settings take effect immediately, so “Apply” at the bottom of this menu should not be selected after using these.
There is also an option further down to directly set hours, minutes and seconds arbitrarily. A 24h clock is used.

A word of warning: “Apply” applies the time that has been entered in the “Set:” item, so if you just adjusted the time using the features at the top, you should NOT select “Apply” before exiting the menu as that would overwrite the clock with a value you probably do not want to set the clock to.
Event settings
This is the menu where one specifies particular features of the upcoming race, namely start time, number of controls (foxes) and the time per control. These values are used by the receiver to e.g. calculate which fox is currently active.

Beep settings
There are just two settings here. The timing for a single beep and for a double beep relative to the fox transmission cycle.

Normally I have these set to give one beep at 30 seconds to let me know that we are halfway through a cycle and a double beep at 50 seconds to signal that there is just 10 seconds left. If set to 0, the beep will not occur.
Misc settings

Here we can set:
- What the gain should be set to when powering on the receiver
- The contrast of the LCD, between 0 and 63 (there is probably no reason so set it to anything other than 63)
- The audio volume of the beeps. The beep is played repeatedly while adjusting this, to help determine a good level.
- The volume of the audio RSSI signal. The tone is played repeatedly while adjusting this, to help determine a good level.
Colors
I use up to five different colors to draw bearings on the map. To help me not mix up the colors, there is as mentioned previously a field on the main screen where the color of the current fox is shown. This menu allows the user to define which color is associated with which fox. The colors available for selection are RED, GRN, BLU, YEL and BLK. Up to nine foxes can be associated with a color.

Factory reset
If the settings become totally messed up or directly after building a receiver, it can be useful to return to default settings throughout. This menu item enables that. To prevent accidental clearing of hard-won optimized settings, the menu item has a safety feature that only does the clearing if the number 5 is entered (via the rotary encoder) before exiting the item. The number starts at 0 when the item is selected.

Gain cal
This item allows entering and storing gain calibration values specific to the receiver. As described in the article about the RF board, there are two PIN-diode based gain/attenuation control circuits in the frontend and the effect they have on the gain can vary a little from unit to unit.
Using the “Gain lab” (see next section) and a signal generator (or test transmitter), it is possible to determine the effect the settings have on the gain. After having done that, the values can be entered here. The calibration values are then used when calculating what RSSI value to show in the LCD. The displayed RSSI value should of course not be dependent on the gain setting (as long as the signal is well above the noise floor for the current configuration), so it is necessary to take the gain of all the stages in the signal chain into account when doing this calculation.

There are four values that can be entered here:
- BaseGain: Normally this is left at 0 dB, but it could be useful to adjust it if it is important to make several receivers show precisely the same RSSI for the same incoming signal strength.
- InputAtt: This is the difference between disabled and enabled attenuation right at the input, while the LNA is in its low-gain state.
- Att+LNA: This is the difference between high and low gain in the LNA while the input attenuation is enabled.
- NoAttLNA: This is the difference between maximum sensitivity (no attenuation at the input and maximum LNA gain) and minimum sensitivity (attenuation at the input and minimum LNA gain).
Remember to click on “Apply” after entering these values.
Gain lab
There are several stages in the signal path where the gain (or attenuation) can be set. The gain control used during a race orchestrates all these settings to (hopefully) maximize dynamic range for the required sensitivity, so the user only has to select a single number and not worry about the details.
The purpose of the gain lab feature is to help in development and troubleshooting of the gain control routine and also to allow direct measurement of the effect various gain/attenuation stages have, so that they can be entered in the Gain cal menu.
Gain lab is not particularly polished and somewhat cryptic, partly due to the limitation of the small LCD. So don’t expect it to be perfectly intuitive. The description here is probably necessary to make sense of it.

Let’s start with the five numbers on the third row. These are the current settings of the five different stages that comprise the total gain. All of these are menu items that can be directly controlled. They are in order:
- Input attenuation; can be either 0 (attenuation enabled) or whatever value it is set to in Gain lab (e.g. 19 dB)
- LNA gain; can be either 0 (minimum gain) or some value like 13 dB (depending on Gain cal settings)
- IF gain; can be either 0, 20 or 40 dB (this is assumed to be quite accurate and cannot be calibrated)
- Input gain in the audio codec; can be from -96 to +24 dB, but the values used are from -20 to +24.
- Software gain; from 0 to 50 dB
The two numbers on the fourth row are the raw signal strengths in dBFS (dB relative to full scale) as seen on the I and Q channels from the audio codec. Increasing the gain by 10 dB should increase the reading by 10 dB if everything is calibrated correctly and the input signal remains the same (and is significantly above the noise floor).
9.2 in the top right corner is the RSSI in dB, as displayed on the main screen. Changing the gain should not change this number. Again, under the assumption that everything is calibrated correctly and the input signal remains the same (and is significantly above the noise floor).
The top left item, 30 dB above, is the normal gain setting. Adjusting this adjusts the values on the third row in the way that the gain control routine works. So, this provides an opportunity to see how the gain control routine distributes the gain. The thought behind it is to not have more gain than necessary early in the chain so that we reduce the risk of saturating any stage if a strong blocker is present. Higher gain early in the chain improves noise performance, but that is only of interest if the signal we are listening to is weak and it comes at the expense of worse blocker performance, so it is only at the higher gain settings that the input attenuation is removed, higher LNA gain is enabled and the IF gain is increased above 0 dB. As a few examples: 60 dB of gain is currently the limit where the IF gain is increased above 0 dB while 64 dB of gain is where the input attenuation is disabled.
The menu item “Zero” applies an offset to the raw dBFS readings on the fourth row to set them to zero at the current input signal and gain setting. This makes it easier to see the number of dB the signal strength changes when a gain setting is adjusted. This is obviously quite useful when figuring out the proper values for the Gain cal menu.
“dBFS” is also a menu item. Activating this removes the offset that was applied by “Zero” and thus reverts the readings on the fourth row to be in dBFS.
Here is an example where the total gain has been increased to 100 dB. Note that most numbers on the third row have gone up, indicating e.g. that the input attenuation is disabled, the LNA is in the high-gain mode and the IF gain is at 40 dB. The signal strengths shown on the fourth row did not go up by 70 dB, but this is easily explained by the fact that there was no input signal, so only noise contributed to the signal. A significant portion of the noise came from late in the chain, so increasing gain early in the chain does not amplify this noise.

After activating “Zero” dBFS”, the readings on the fourth row are close to 0:

So how does one use Gain lab to figure out the values to enter into the gain cal menu?
The best way is probably to use a signal generator capable of generating a 144.5 MHz tone at e.g. -50 dBm. The tone does not have to be AM modulated. In fact, it is probably better if it is unmodulated.
- Start with a total gain (upper left) of 30 dB, which should set the first three numbers on the fourth row to zero. The readings on the fifth row is -83.7 and -83.1 on my receiver in this case.
- Select “Zero”
- Toggle the first number (input attenuation) on line three. (The actual value shown is the one entered in Gain cal.) Note down the readings on line four. In my case they are 18.7 dB. This value should be entered as InputAtt in Gain cal.
- Set the first number to 0 and toggle the second (LNA). This gives 16.9 dB in my case. This shall be entered as the Att+LNA value in Gain cal.
- Make both the first and the second numbers non-zero. This gives me 32.5 dB. This shall be entered as the NoAttLNA value in Gain cal.
If a suitable signal generator is not available, the same calibration can be done with a fox hunting transmitter at a suitable distance. But it may be harder to get stable readings if the transmitter turns off the carrier between the dits and dahs.




















































