Learn by Hamming



(Don’t) Build a Transmitting iGate: Part 1 – Getting On Air

Basic APRS iGate

Over the past couple years, I’ve had a lot of interest in APRS, and messaging in particular. This interest brought me to the idea of building my own APRS digipeater and iGate.

This project came in two parts: initial configuration and getting the station on air, and building it into an enclosure. The first part wasn’t difficult at all. The second turned out to be a nightmare…read on to see why…!

Choosing the Parts

Back when I was in my Jeep days, the president of our club heard that I had gotten my license, and gave me his Yaesu FT-1500M, 50W, a 2m-only, 1200/9600 data capable FM radio whose case was a literal billet of aluminum. After I fixed up my FTM-400, the FT-1500M was sitting doing nothing, so it was a logical choice for an APRS station.

I had also been unsuccessfully experimenting with cheap HTs for APRS, so I had a Mobilinkd TNC4 that wasn’t being used.

The first antenna I had ever built – a copper J-pole – was also sitting in a corner.

I had gotten the opportunity to take an old CB antenna down, which resulted in about 50ft of RG-8 coax gathering dust.

By luck, I also inherited several Raspberry Pi 4s from one of my neighbors.

Lastly, I bought a cheap 30-amp power supply and connected it to an old UPS I had lying around. The UPS is extra, I know, but I had it lying around, and in case of power failure, it would help my iGate to at least still digipeat.

These parts, along with a few cables, screws, pipes etc., would form the backbone of my station.

Configuration

I downloaded a copy of Raspberry Pi Imager, made sure to enable WPA_supplicant and SSH in the config, so I wouldn’t have to connect a screen to it. I gave it a hostname (e.g. igate), CHANGED THE DEFAULT USERNAME AND PASSWORD (I can’t stress how important this is!!) and let it install.

Once your Pi is up and running, use a terminal emulator (Linux) or PuTTY (Windows) and

ssh n9cvr@igate.local</code></pre> <!-- /wp:code -->  <!-- wp:paragraph --> or your equivalent. Enter your password, accept the key pair, and you should see this: <!-- /wp:paragraph -->  <!-- wp:code --> <pre class="wp-block-code"><code>n9cvr@igate:~

You are now remotely connected to your new Pi. Issue the following commands:

sudo apt update && sudo apt upgrade -y && sudo apt install aprx</code></pre> <!-- /wp:code -->  <!-- wp:paragraph --> Don't type the dollar sign; it should already be there. sudo allows you administrator (root) permissions. apt is the Linux package manager. apt update downloads the list of updatable software packages on your Pi, apt upgrade upgrades them. -y makes it so you don't have to manually confirm the upgrade. apt install aprx installs the APRX package we'll be using. && between each command simply means "and upon successful completion of the last command, do this".  <!-- /wp:paragraph -->  <!-- wp:paragraph --> Depending, this may take a good chunk of time. I recently updated a single-board computer that required 700MB of updates. It took most of an hour. Once you're done, type <!-- /wp:paragraph -->  <!-- wp:code --> <pre class="wp-block-code"><code> sudo nano /etc/aprx.conf

nano is a basic terminal-based text editor and aprx.conf is the configuration file for APRX. It’s located in the /etc/ folder on your pi. You’ll need to set/change some important settings (Don’t just copy these, though!!):

mycall N0CALL-10
myloc lat 4410.00N lon 08810.00W
<aprsis> passcode 12345
<interface>
 serial-device /dev/ttyACM0 115200 8n1 KISS
 initstring "\x00"
 tx-ok true
 telem-to-is true
</interface>
<beacon>
 beaconmode both  #or beaconmode aprsis for rx-only
 cycle-size 30m
 beacon symbol "T&" myloc comment "somethng smrt"  #beacon symbol "R&"myloc comment "RX-only"
</beacon>

Lets mention some things line-by-line.

First, maybe obviously, change your callsign from N0CALL! Since you’re building an iGate, unless you have good reason to, keep the -10 suffix.

For the location setting, make sure the syntax is correct!! It’s Deg-deg-min-min.min-min. So the first part of myloc above corresponds to 44 degrees, 10.00min North latitude. APRX won’t work without this set correctly.

You will need an APRS-IS passcode. You can get one from here. Obviously, don’t share it after you have it!!

In the <interface> block, make sure your serial device is correct. Mine was /dev/ttyACM0; yours may well not be. Best way to figure out your device is to make sure your TNC is not plugged in, and type

dmesg | grep tty</code></pre> <!-- /wp:code -->  <!-- wp:paragraph --> Plug the TNC in, type it again, and compare results. The new device is your TNC. <!-- /wp:paragraph -->  <!-- wp:paragraph --> Since we're running a KISS TNC, you MUST include the initstring; else the TNC will not work. <!-- /wp:paragraph -->  <!-- wp:paragraph --> tx-ok true should be pretty self explanatory. Set this to false if you're building an RX-only iGate. <!-- /wp:paragraph -->  <!-- wp:paragraph --> telem-to-is just sends station telemetry to APRS-IS.  <!-- /wp:paragraph -->  <!-- wp:paragraph --> In the <beacon> block, set beaconmode to aprsis if you're building an RX-only iGate, and 'both' for TX.  <!-- /wp:paragraph -->  <!-- wp:paragraph --> cycle-size is the setting for how often to beacon. Since the iGate is (hopefully) stationary, it doesn't need to beacon very often. I set mine to a half hour. If you set yours longer than an hour, it may seem to appear and disappear on APRS maps.  <!-- /wp:paragraph -->  <!-- wp:paragraph --> The best symbols for an iGate are either an R (receive) or T (transmit) in a black diamond. The symbol should be placed at your iGate's location (myloc), and it's fun to add a comment. Mine says "TX iGate de N9CVR" but I should probably change it to something snarky to see if anyone notices...

Lastly, you'll need a <digipeater> block. Unless you really know what you're doing, it's probably best to just copy the below:

 <digipeater>
  transmitter mycall   <source>    sourcemycall
   relay-type digipeated # this is default
   viscous-delay 5 # (value - 1) + 0 to 2 seconds
   ratelimit 60 120  # default: avg 60 packets/min,
   filter t/poimqunw   # everything but st
  </source>
  <source> 
  # APRSIS source adds a TX-IGATE behavior
  # Note that APRSIS will only be gated to RF
  # if the destination station has been heard by
  # this station within the last hour AND after
  # aprx was started
   source APRSIS
   relay-type third-party  
   viscous-delay 5 
   # Recommendation: 5 seconds delay to give
   # RF delivery time make itself known.
   # make it 0 or 5 - 5 matches token bucket refill
   ratelimit 240 480  
   # I raise this above defaults due to bursts
   filter         -t/st
   msg-path WIDE2-2 
   # gate TX with 2 hops for messages
   via-path WIDE1-1 
   # gate TX with 1 hop for everything else
  </source>
 </digipeater>

Pressing Ctrl-x, then Y will save the config file you've created. Then type

sudo service aprx start

to start APRX.

Lastly, remember to adjust transmitter deviation to around 3KHz. You may need to ask a friend to borrow a spectrum analyzer for this.

Congratulations, you now have a functional transmitting APRS iGate!