Setting up an APRS RX only iGate using a Raspberry Pi, RTL-SDR dongle and a pre-built image

After my previous post, it was suggested that an easier way to set up a receive only APRS iGate would be to provide a pre-built image which only needs slight tweaking to go live.  That seemed like a good idea to me so I’ve prepared an image that just requires a handful of configuration changes which I will go through in detail below.

The entire process detailed here should take less than half an hour to complete.
You will only need to edit two or perhaps three files in total.

First, download my custom built Raspberry Pi image from here or preferably as a torrent from here.  This is a 1.6Gb file which will expand to approximately 4Gb when you decompress it.  Unzip it and write it to an SD card.  You don’t need a high capacity SD card, this image will fit on a 4Gb card and work perfectly.  This image is fully up to date as of 3rd February 2017.


There are two methods of downloading the Raspberry Pi image. The first is direct from SourceForge and the second is as a torrent.  If you use the torrent method, please seed the file for as long as possible because the more people who seed, the quicker the download will be for others.
Thank you.

MD5 of aprs-igate.zip is dde367dc0db9365b84850fcdc46519e4
MD5 of aprs-igate.img is 93060310c5a5c4a3a46822944dc0401f

Connect your RTL-SDR dongle and a network cable to your Raspberry Pi and boot it.  I thoroughly recommend you use a dongle with TCXO as it won’t drift in frequency and you shouldn’t need to do any frequency calibration.  I’m using an RTL-SDR R820T2 RTL2832U 1PPM TCXO SMA Software Defined Radio (Dongle Only) device which is the latest model, complete with TCXO.  Other dongles are available such as this NooElec version from Amazon which is a little cheaper and will arrive quicker or you can search eBay for similar dongles.

You will need to know what IP address your Raspberry Pi has on the network.  I do this by looking at my router and checking what devices have connected and then set up a DHCP reservation so each particular Raspberry Pi I own will always have the same address each time it reboots.

Open up a terminal/dos prompt or whatever client software you’re going to use to connect to the Raspberry Pi and log in.  In my case, the Raspberry Pi is on 192.168.1.144 so I use the command
ssh pi@192.168.1.144

You’ll be prompted for a password – It’s currently set to raspberry.
Use the following command to enter the Raspberry Pi config utility:

sudo raspi-config

Expand the filesystem by pressing enter on option 1 then select OK and you’ll be returned to the main screen.

Use the arrow keys to move down to the second option Change User Password and press enter.  Press enter again and you will be prompted to Enter new UNIX password.  Type a new password, press enter and re-type your new password again.  You will get a message telling you your password has been changed successfully.

Use the arrow keys again to move down to Localisation Options and press enter.  Use the arrow keys again to select Change Timezone and press enter.  First select your Geographical area and press enter and then select your Time zone and press enter.

You will now be returned to the main Raspberry Pi Software Configuration Tool main screen.  Use the tab key to select <Finish> and press enter.  You will be asked if you would like to reboot now.  Press enter to reboot.

You will need an APRS passcode so use the APRS Passcode Generator at Magicbug to generate one.

All the software has been pre installed, all you need to do is edit two (or possibly three) files.

cd ~
sudo nano sdr.conf

Scroll down to line eight and change the xxx to your callsign and required SSID.  I use -10 as my SSID so this line reads MYCALL G6NHU-10.  Please use your own callsign, mine is just shown as an example.

In the section below, edit the line starting with IGSERVER to be the correct one for your region.  I’m in Europe so my line reads IGSERVER euro.aprs2.net

Scroll further down and you’ll find a line that starts with IGLOGIN.  Change the xxx to be the same as the callsign you entered above (including SSID) and then change the numbers 123456 to the passcode you obtained from the APRS Passcode Generator.

At the bottom of that file there is one long line that starts with PBEACON.  Replace xx.xxxxxx with your latitude, yyy.yyyyyy with your longitude and zz with your callsign (including SSID).

Save the file by pressing ctrl-x, then hit the Y key and then press enter.

You can now perfom a test using the following command
(144.800 is the APRS frequency in the UK, change as required).

rtl_fm -f 144.80M - | direwolf -c sdr.conf -r 24000 -D 1 -

If all is well, you should see something like this.

Initial test of the Raspberry Pi and RTL-SDR Dongle APRS RX only iGate

Initial test of the Raspberry Pi and RTL-SDR Dongle APRS RX only iGate

Press ctrl-c to exit the test.


*** UPDATE – READ THIS IF YOU GET AN ERROR WHEN RUNNING THE TEST ***
I’ve had some feedback that on some older model Raspberry Pis, you may get an error when you try and run the initial test.  The error ends:
Signal caught, exiting!

User cancel, exiting…
Illegal instruction

If this happens, you need to redownload and compile Direwolf using these commands (copy and paste them one at a time exactly as written below:

cd ~
sudo cp sdr.conf sdr.old
sudo rm -r direwolf
git clone https://www.github.com/wb2osz/direwolf
cd ~/direwolf
make
sudo make install
make install-rpi
make install-conf
cd ~
sudo mv sdr.old sdr.conf

Now reboot your Raspberry Pi and run the test again.

If you do reinstall Direwolf, please be aware that version 1.4 will be installed and that version won’t autostart using this method.  if this happens, I recommend you start from scratch using the updated image and instructions here.


You may find that rtl_fm doesn’t report that it’s tuned to exactly the correct frequency, this is nothing to worry about because the RTL-SDR works by mixing the incoming RF with a local oscillator and then IQ sampling the resulting base-band (difference) signal.  The local oscillator therefore needs to be offset a little so that the wanted signal doesn’t fall at the 0Hz point.  rtf_fm automatically selects an appropriate offset for the chosen sampling rate and displays the resulting “offset oscillator” frequency, not the actual “tuned” frequency.

If your local APRS frequency is NOT 144.800MHz then you will need to edit an additional file.
cd ~
sudo nano dw-start.sh

You’re looking for this line.


Change 144.80M to whatever your local APRS frequency is.
Save the file by pressing ctrl-x, then hit the Y key and then press enter.

The last thing to do is to configure the system so that the APRS iGate starts automatically whenever you reboot the Raspberry Pi.  Enter the following command:
crontab -e

Scroll down to the bottom and you will see the following line.
#* * * * * /home/pi/dw-start.sh >/dev/null 2>&1

Delete the # at the start of that line.
Save the file by pressing ctrl-x, then hit the Y key and then press enter.

Reboot your Raspberry Pi and once it’s restarted, it will automatically connect to the APRS network and operate as a receive only iGate. Nothing will be echoed to the display while it’s running like this so you can check your status on aprs.fi by searching for the callsign you entered (including SSID).  You don’t even need to log into the Raspberry Pi, the gateway will start automatically within ninety seconds of rebooting.

It’s been mentioned that you might like to calibrate the frequency of your RTL-SDR dongle.  I didn’t and I didn’t notice any performance issues but it’s likely that if you’re using an older or cheaper dongle then it might be a little off frequency.  If you’d like to do this, it’s very straightforward to do requiring that you edit just one file.  I’ve written some instructions which you can see by clicking here.

Please note – I am not claiming originality for this setup method, I’ve simply followed what’s already available out there on the internet and created an image based on those instructions for your convenience.  My two source documents were Raspberry Pi SDR IGate and Raspberry Pi Packet TNC.  I thoroughly recommend you familiarise yourself with both of them to see what’s been done here.  You can also read my previous blog article where I list each command I used to create this image.  It’s also worth downloading the full Dire Wolf user guide.

I hope this image is useful and as always, I’d appreciate any feedback, comments or thoughts below.

130 Comments

  1. Thanks for this tutorial. In your first screenshot, the 2nd green line shows you as being “verified”. I show as “unverified” and don’t see my call on Findu (perhaps because of this). Do you know how this verification takes place?

    I am receiving data from the i-gate server just not reporting to it.

    Thanks again.
    John AE5X

    1. Hi John,
      This sounds as though you didn’t enter the correct number as your APRS passcode when you edited sdr.conf

      In your case, the IGLOGIN line should read:

      IGLOGIN AE5X 2047

      If you set an SSID in the MYCALL line in the same file then you should use the same SSID in the IGLOGIN line.

      Hope this helps.

      73 Keith.

  2. Keith – thanks much! I had 2407 entered. Correcting it fixed the problem. You’ve don e a great job in simplifying when would have been a bit of a task to a newbie like me – just bought my first RPi a week ago so I have a lot to learn. Tutorials like yours make the learning both fun and practical.

    Best wishes,

    John AE5X

  3. Hi. The link to the OneDrive download seems to have expired. When I click your link it’s saying “This item might have been deleted, expired or you might not have permission to view it. Contact the owner of this item for more information”.

    Can you give an alternative download link?

    73’s

    1. Hi Alex,
      I’m sorry, I used up all my bandwidth from OneDrive very quickly! I’ve rehosted the file at mega.nz and am also hosting a torrent file using public trackers. I’d appreciate anyone who can help me seed this file.

      73 Keith.

      1. Up and running! Great work. Been meaning to give this a try for a while. Very simple. Took 20 mins.

        Will also seed the torrent.

        1. Another quick question. When it reboots and DireWolf auto-loads, it’s says: “Tuned to 145052000 Hz”, Even though I specify 144.80M in the config file.

          Any ideas? I can’t seem to get it to tune to 144.8

          1. Hi Alex,
            Pleased you got it downloaded and thanks for helping to seed.

            I don’t know why it says that, mine shows the same but it’s definitely tuned to 144.800 MHz and working correctly.

            73 Keith.

          2. 145052000 is the frequency of the local oscillator (LO) SDR radios have a Local Oscillator frequency and a Tune Frequency, it’s the Tune Frequency that we require.

  4. Fantastic! 😀 I hesitated to do this due to long setup, you saved me bunch of time, thanks!

    I would advise for autostart “tmux” and write it in “/etc/rc.local” thus every user can easily connect to the session easily and can see what the program doing.

    73,
    Zoltan

  5. Hi Keith: I’ve followed your instructions, but hit a snag when running the test as described above. The test starts up, says it is sampling, but then says “user cancel, exiting… Illegal instruction” Unfortunately, it does not tell me what instruction triggered this. Any ideas? Thanks for making this, and the help! BTW, I set 144.39M for the US, but get back a different frequency, too. I assume this is the dongle drifting… Output from the execution follows:

    rtl_fm -f 144.39M – | direwolf -c sdr.conf -r 24000 -D 1 –
    Dire Wolf version 1.3

    Reading config file sdr.conf
    Found 1 device(s):
    0: Realtek, RTL2838UHIDIR, SN: 00000001

    Using device 0: Generic RTL2832U OEM
    Found Rafael Micro R820T tuner
    Tuner gain set to automatic.
    Tuned to 144642000 Hz.
    Oversampling input by: 42x.
    Oversampling output by: 1x.
    Buffer size: 8.13ms
    Exact sample rate is: 1008000.009613 Hz
    Sampling at 1008000 S/s.
    Output at 24000 Hz.
    Signal caught, exiting!

    User cancel, exiting…
    Illegal instruction

    1. I had the same issue when using an older raspberry pi. I switched everything over to a new one (raspberry pi 2 model b) and everything is working as expected.

      1. Tyler, that’s very interesting. Can you tell me exactly which model you’ve got where it didn’t work please.

        Same for you, Al – What model Pi are you using?

        Keith.

        1. Hi

          I had the same problem on a PI model B+ V1.3 changing up to a Pi 3 stoped the “User cancel, exiting…
          Illegal instruction” but the “Tuned to 144642000 Hz.” then I did some math, 144642000 – 144390000 = 25200 so thinking this was some sort of offset thing I did 144390000 – 252000 = 144138000, I then entered rtl_fm -f 144138000 into the command line and dire wolf reported the right frequency

          pi@aprs-igate:~ $ rtl_fm -f 144138000 – |direwolf -c sdr.conf -r 24000 -D 1 –

          Dire Wolf version 1.3

          Reading config file sdr.conf
          Config file: No = found in, N, on line 30.
          Audio input device for receive: stdin (channel 0)
          Audio out device for transmit: null (channel 0)
          Found 1 device(s):
          Channel 0: 1200 baud, AFSK 1200 & 2200 Hz, E+, 24000 sample rate.
          Note: PTT not configured for channel 0. (Ignore this if using VOX.)
          Ready to accept AGW client application 0 on port 8000 …
          Ready to accept KISS client application on port 8001 …
          Use -p command line option to enable KISS pseudo terminal.
          0: Realtek, RTL2838UHIDIR, SN: 00000001

          Using device 0: Generic RTL2832U OEM
          Found Rafael Micro R820T tuner
          Tuner gain set to automatic.
          Tuned to 144390000 Hz.
          Oversampling input by: 42x.
          Oversampling output by: 1x.
          Buffer size: 8.13ms
          Exact sample rate is: 1008000.009613 Hz
          Sampling at 1008000 S/s.
          Output at 24000 Hz.

          Now connected to IGate server noam.aprs2.net (209.197.177.57)
          Check server status here http://209.197.177.57:14501

          1. John, that’s interesting regarding the frequency. I’m keen to know whether you actually receive anything having made that change because even though mine is reporting my frequency as 145052000 Hz, it actually is receiving correctly on 144.800MHz. If it had tuned to 145.052MHz, I wouldn’t hear anything.

            73 Keith.

      2. I Have the same challenge:

        Dire Wolf version 1.3

        Reading config file sdr.conf
        Line 30: Latitude hemisphere in “xx.xxxxxx” is not N or S.
        Line 30: Unexpected character ‘x’ in location “xx.xxxxxx”
        Found 1 device(s):
        0: Realtek, RTL2838UHIDIR, SN: 00000001

        Using device 0: Generic RTL2832U OEM
        Found Rafael Micro R820T tuner
        Tuner gain set to automatic.
        Tuned to 145052000 Hz.
        Oversampling input by: 42x.
        Oversampling output by: 1x.
        Buffer size: 8.13ms
        Exact sample rate is: 1008000.009613 Hz
        Sampling at 1008000 S/s.
        Output at 24000 Hz.
        Signal caught, exiting!

        User cancel, exiting…
        Illegal instruction

        SHA1 is ok for the image. Not sure what is happening!

        1. Chris, you don’t appear to have set up your latitude and longitude in the config file. Not sure if that’s what’s causing this error but check the instructions and your sdr.conf file before we go any further please.

          Keith.

          1. hey Keith, thanks for the response. I have added and get the same error without the Line 30: Latitude hemisphere error. I have ordered a later PI so will give that a go.

          2. ok so, i re downloaded direwolf, compiled it again and bingo. It works now.

          3. OK, Chris, did you use these instructions?

            Download the Dire Wolf source code.
            cd ~
            git clone https://www.github.com/wb2osz/direwolf

            Compile and install Dire Wolf.
            cd ~/direwolf
            make
            sudo make install
            make install-rpi
            make install-conf

            Still interested to know what model Raspberry Pi you’re using so I can add this to the instructions.

            73 Keith

      3. I’ve added an update to my guide with some instructions as to what to do if this error is encountered.

  6. Hi,
    I’ve not seen that before but I have seen some odd issues when copying and pasting then editing the text from the web site as I’ve seen strange characters slipping in. For example, I had a problem with that command myself to start with where it looked like it was working but nothing happened whatsoever.

    Try typing the entire text for the test command (without copy/paste) straight into your terminal/ssh program and see if that works. Also try a copy/paste without editing. I appreciate it’ll be the wrong frequency but it’s worth a check.

    Also, edit crontab to remove the # and reboot then check on aprs.fi to see if that works.

    73 Keith.

  7. Hi Keith:
    I guess I am getting somewhat ambiguous results… I edited the crontab and rebooted, and don’t see the i-gate station on aprs-fi. I typed the test command as written directly into the ssh terminal and got the same error message. BUT, when i go to http://aprs.fi/gated/KD8JXA, and http://aprs.fi/heard/KD8JXA aprs appears to show my mobile was heard by and gated through the station [unless i misunderstand what it is telling me…].

    Can you tell me/us the list of files that are being called, so I can take a look in each and see what might be the illegal instruction?

    thanks,

    1. Hi Al,
      No, what you’re seeing on aprs.fi is not coming through your gateway – When I click on your -9 station it doesn’t show your callsign as part of the path.
      Honestly, I don’t know what’s causing this error.
      Perhaps have a look at my previous entry where I detail all the steps individually and see if there’s anything there that might help. I know that this image has been downloaded many times since I posted it at the weekend and I’ve had a lot of positive feedback so I’m confident that it’s good (I tested it on a Pi Zero and a Pi3). I can’t list all the files being called because I simply don’t know what they all are!

      Is it worth rewriting the image and just starting again in case some finger trouble has slipped in somewhere?

      I’m very interested to know what the solution is when you find it.

      73 Keith.

  8. OK, thanks. I will likely download the image again and try it. FWIW, i did go back over the instructions, and don’t see anything there… I’ll have to try it later tonight or tomorrow…

    Query: does the direwolf.conf file need to be customized? It appeared to still have default values, but personalizing them and rebooting didn’t appear to help.

    talk to you later,

  9. Nope, the default direwolf.conf file isn’t used at all – The command that starts everything up calls the sdr.conf file.

    You shouldn’t need to redownload the image. If you’re able to unzip it without any errors then there’s a decent chance it’s a good download but you can check to make sure using the MD5 checksums I posted. Just write it out to the SD card and try again.

  10. Keith:
    I downloaded and rebuilt the image, and it appears to have come up OK. Like you, I’m not sure what went wrong with the first install… The aprs.fi /heard and /gated queries continue to appear showing only my own mobile, so next I will take a look at the antenna. Thanks again.

    1. Hi Al,

      That’s great news. I’m really pleased it’s working for you.
      When I look at your info on aprs.fi, it show’s you’ve heard N8RDF-3 which is evidence that it’s performing as it should. One thing to be aware, aprs.fi will only report stations which you hear direct, before anyone else.
      So for example, if you receive a packet from KB8XXX and gate it to the internet but someone else hears that same packet just a microsecond ahead of you, the web site won’t report it as you having heard it. So it may appear as though you’re not relaying much but it’s just down to who gets it first.

      Very happy it’s working for you now.

      73 Keith.

  11. This app is working perfectly and am now running my own iGate. Thanks for what you have done to ease the process.

    I did have a problem writing the image to an 8GB memory card – first time Win32DiskImager only completed about 2 percent before locking up. Second time locked at 99 percent but the card booted anyway and is running with no issues.

    I checked the MD5 hash on the zipped download and it agreed with the MD5 hash in this article, but after unzipping the folder, the MD5 for the image file was not correct – tried twice and didn’t agree either time.

    Any ideas?

    Richard
    ke7krf

    1. Hey Richard,
      Really pleased you found it useful and I’m happy that it worked for you.
      I only have one tool here to calculate an MD5 hash – I’ve just checked the .zip file and I get the same value I’ve posted.
      So I unzipped it using the archive utility that comes with the computer, checked the .img and I get the same hash I posted.
      I then deleted the .img, unzipped the file again using a third party tool and checked the hash again and once more, it matches up with what I’ve posted.

      1. As long as the image is working I’ll probably not try to figure out why I’m getting a good MD5 on the folder but an error on the unzipped image file.

        I have another question. Is there a way we display all the received APRS stations the RTL-SDR is hearing?

        I’ve seen some mention of Xastir on the internet and some folks who configured so they could see what has been received on a local map.

        I don’t anticipate a lot of iGating activity but based on using a dongle with SDR# I can receive a lot of packet activity from a couple of distant repeaters, and it would be convenient to display this activity on the RPi since I have dedicated my best RTL-SDR to the iGate setup.

        Thanks for getting back on the MD5 concern

        73
        Richard
        ke7krf

        1. Hi Richard,

          I’m sure that can be done somehow using tmux as suggested by Zoltan further up the replies but I don’t know how it would be achieved and it’s not something I’m too concerned about doing myself. My Pi Zero is sitting under the desk and running headless so I really don’t have any way to monitor it anyway.

          If you find out a method, it would be good to know so that other people can see it.

          73 Keith.

          1. I finally got around to installing Xastir on the Raspberry Pi iGate and it now maps all stations received. Also have YAAC on a laptop which can display on a map as well, and is great for headless setups.

            For both apps, had to be sure that an AGWPE port was properly configured (listening port 8000 and the ip address of the RPi) to receive the data from Dire Wolf. Once Dire Wolf is running, it reports that it is able to listen for client apps on port 8000 for AGW and also on port 8001 if using KISS.

            Richard
            KE7KRF

  12. ran the test and got
    config file: Unrecognized command ‘euro.aprs2.net’ on line 16

  13. Check the sdr.conf file
    cd ~
    sudo nano sdr.conf

    Scroll down 16 lines (count them as you push the down arrow button)
    It sounds to me as though you’ve simply removed the # at the start of that line.

    Put the hash back in.

    Scroll down to line 20. That should read
    IGSERVER euro.aprs2.net

    Save the file (ctrl-x then hit the Y key then press enter).

    Try again.

    73 Keith.

  14. yes that was it, now working fine thanks
    73
    Terry

    1. That’s good, Terry. I’m glad you’re working.

  15. Great article Keith. I notice you’re using one of the 1ppm dongles but for others the frequency offset may need compensation which can be done using “kalibrate”. I found my cheapo dongle was 26 ppm out and even the 1 ppm one was off by -1.5. Once you’ve found the offset then you can add it to the rtl_fm part of the command line, for mine I add “-p 26.234”.

    1. Thanks Nick,
      I didn’t mention Kalibrate on purpose because I wanted the process to be as simple as possible which is also why I recommend the specific dongle that I do.

      I do seem to remember reading something about Kalibrate not working correctly on the 820T2 based receivers and that rtl_test -p is a better option. Either way, I’ve not calibrated mine at all!

      73 Keith.

    2. Out of interest, I thought I’d try a calibration using both Kalibrate and rtl_test -p

      rtl_test -p settled at -1
      I ran Kalibrate twice, it returned -0.725 and -0.726

      So I’ve added -p 1 to my config line and added a comment to the main post which links here.

  16. Keith:
    It looks like I missed a question earlier. I was running a R-Pi 2 when I had the issues, and while I only reported reloading the image and having it work, I had actually put it onto a R-Pi 3, which is still up and running. On that one, I also noticed the frequency was off, so I did the math and entered the offset frequency. It come back as receiving right on 144.39, which is what I want. To answer another of your questions above, yes, it DOES appear to be receiving. Separate, I just today got another -3, and a spare sdr dongle. My goal is to see if I can run both ADSB and APRS on the single Pi. have you tried this? Anybody else out there?

    1. Hi Al,
      I’ve not tried this but it shouldn’t be that difficult. I guess you’re planning on running with two separate RTL-SDR type dongles so it’s just a case of making sure each piece of software talks to the correct dongle.

      Good luck and be sure to keep me updated please.

      73 Keith.

  17. Just a note of thanks for your Pi iGate image. It appears to be running fine on a Pi3 as K2RHK-10, even with an old, off-frequency dongle as I wait for a new one to arrive.

    The greatest difficulty was figuring out the control/save command which shows that if a Linux clunk such as myself can get it running it’s clearly a well-made image.

    Interestingly, there seem not to be many iGates in Manhattan so hopefully it will be a worthwhile addition to the APRS community. I’ll trim up the long/lat coordinates tomorrow.

    Best 73s.
    Alan, K2RHK

  18. Hi Alan,
    Thanks for getting in touch and I’m very pleased it’s working for you.
    73 Keith.

  19. Hi i am a newbee on this subject and looking for a way to get my own igate here in this area i found your article and download file.It looks very promising,however i have trouble getting the zip file unzipped. Even after multiple downloads the unpacking stops at 99% stating that the file is damaged. What do I do wrong.Pse can you help me.
    73 Len PE1GZD

    1. Hi Len and thanks for the message.

      I’ve just downloaded the .zip file from Sourceforge and unzipped it successfully using the built in archive tool in Mac OS, using a third party unzip tool on my Mac and using the built in zip handling on both Windows 8.1 and Windows 10 with no problems.

      If you’re using Windows XP then you might struggle as the unzipped file is just over 4Gb and I think XP struggles with that. I’ve not tested using any third party tools in XP but it might be worth downloading and trying something like 7Zip to see if that helps.

      73 Keith.

      1. Hi Keith,

        Due to housekeeping activities it took some time for me to go on with this project. But now I managed to get the image on the rasp 3 and it looks promising sofar. i am going to follow yours instructions step by step. I am awaiting the dongle one of these days and can go on then. I’ll keep in touch/
        Thans a lot for your efforts on this project.
        73 Len / PE1GZD

        1. Hi Keith,

          With a little help from my friends at www. ezhe.nl the gateway is running smoothly now. Thanks for this nice project. My friends at the electronicaclub are also enthousiastic and are going to set up gateways with the help of your program. Thanks a lot.
          73 Len

          1. Hi Len,

            Thanks for the feedback, that’s really good news and I’m very happy you’ve got your gateway working. I’ve had a look for your callsign on aprs.fi and can see that you’re passing traffic onto the internet.

            73 Keith.

  20. Thanks a lot for these instructions! I set up my first ever Pi today and got the iGate running. A question about calibrating the RTL-SDR. I’ve read your instructions and my cumulative PPM is 49, not a negative like yours. What is the correct way to configure with a positive number?

    1. Hey Scott,

      I’m pleased you managed to get it working.

      As your PPM is a positive figure, you’d add it as a negative number to the line. That part would look like this:

      .....-f 144.80M -p -49 - | Dire.....

      /edit – I’ve been told that this might not work – If you do this and Direwolf fails to start, just set it at “-p 49” instead.

      Hope that helps.

      73 Keith.

      1. Thanks! Both methods didn’t cause the program to fail to start. I am having trouble getting the RTL-SDR to start now. I get a good test initially like in your instructions, but any subsequent tests result in:

        Bind failed with error: 98
        address already in use
        some other application is probably already using port 8000.
        Try using a different port number with AGWPORT in the configuration file.
        Use -p command line option to enable KISS pseudo terminal.
        Bind failed with error: 98
        address already in use
        some other application is probably already using port 8001.
        Try using a different port number with AGWPORT in the configuration file.
        0: Realtek, RTL2838UHIDIR

        Using device 0: Generic RTL2832u OEM
        usb_claim_interface error -6
        Failed to open rtlsdr device #0.

        My limited computer brain says something must be using those ports, but I’ve found nothing on my network that would be doing that. I did a reinstall of the imagefile with no fix.

        1. So it works OK on the test command but not when you try and run it automatically, is that correct?

          That says to me that the line in your dw-start.sh file isn’t formatted correctly. I’ve had instances where copying and pasting from web pages introduces formatting errors (such as ” characters getting messed up).

          Re-write the image out to the SSD again. Before you do anything take a copy of dwstart.sh (sudo cp dwstart.sh dwstart.old) and then when you edit dw-start.sh, just change the frequency and see what happens when you reboot after removing the # from the cron file. If it works, then just add the -p xx and see if that starts.

          I’m sure it’s going to be something simple.

          1. I think everything is OK now. After I made the correction you suggested earlier about the PPM number, it looks to be receiving and forwarding packets now. Thank you for all of the help. I’ve definitely learned a lot in the process.

          2. That’s really good news, Scott. It’s great when people learn from these things. I’ve only been playing with the Raspberry Pi for a few months but I’ve learned so much about them. It’s also great fun!
            73 Keith.

  21. Ok
    Pardon the stupidity in this question.
    Is the reason for an igate is to pass aprs signals on to the network or is it to have a static station that broadcasts your callsign?
    So if I put a cheap 2m antenna on the sdr will it pass aprs traffic to the net?
    I’ve always been a bit confused as to the usefulness.
    Also have you noticed any overheating of the dongle mine always runs warm

    1. Hi Brian,
      I’ll address the last question first – Yes, the dongle gets warm. It’s not massively hot but it’s certainly quite warm, I don’t know if that’s a bad thing or not but it doesn’t seem excessively hot to me.
      As to the gateway, I can’t comment as to how useful it is because I don’t run APRS in my car any more since I changed from the Kenwood TS-710G to an Icom ID-5100. It is gating all traffic it hears via RF to the Internet so anyone who is within my receiver range gets all their traffic forwarded. That’s providing a service to anyone nearby running APRS so surely it’s a good thing.
      73 Keith.

  22. For those confused about the tuning frequency, please *do not* attempt to offset the demanded frequency so that rtl_fm reports it ‘correctly’. The RTL-SDR works by mixing the incoming RF with a local oscillator, then IQ sampling the resulting base-band (difference) signal. The local oscillator therefore needs to be offset a little so that the wanted signal doesn’t fall at the 0Hz point. rtl_fm selects an appropriate offset for the chosen sampling rate and displays the resulting *local oscillator* frequency, not the *tuned* frequency.

    1. Hi David. Thank you very much for that explanation. I was sure there must be a good reason for it and as I’d never had any problems with decodes, I didn’t attempt to make any corrections.
      73 Keith.

  23. Maarten PD1MVB-10

    Hi Keith, after some trouble with an old dongle, (I have a new one now) it works perfect.
    Thank you verry much for the article en the time you spend on this project!
    73 Maarten

    1. Hi Maarten, you are very welcome.
      73 Keith.

  24. Hi Keith thanks for sharing got this up & running very quickly using a DX Patrol sdr working well too
    David

  25. Well I’m stymied. I followed the instructions faithfully and everything seemed to go well but it refused to connect to a Level 2 server.
    Yes the call is correct and the passcode has been triple-checked, but still I get the failed to connect errors, from every server it tries to connect to.
    Help!

  26. BUMP
    Well I’m stymied. I followed the instructions faithfully and everything seemed to go well but it refused to connect to a Level 2 server.
    Yes the call is correct and the passcode has been triple-checked, but still I get the failed to connect errors, from every server it tries to connect to.
    Help!

  27. Arturo Dietler

    Morning dear Keith and thank you for nice image!!! until the may 1 2017 i not see
    direct listening station on aprs.fi/info!

    CLI by typing rtl_fm -f 144.80M – | direwolf -c sdr.conf -r 24000 -D 1 – it is error. after I do with sudo rtl_fm -f 144.80M – | direwolf -c sdr.conf -r 24000 -D 1 – and on ssh i see the monitoring listed station.
    Do you have a solution for the aprs.fi/info ??

    Thank you for help
    HB9MIR, Arturo

  28. Until this morning, it is all Ok. Thank you.
    Arturo

  29. My first try with rasp 3. This seems to work. Thanks for nice instructions and Image!

    73 de Jukka OH4MFA-10

  30. Keith,

    My RPi iGate has been up since February and have concluded that it provides a useful service in our area since iGates are few and far between. In addition, a wide digipeater about 65 miles distant seems to be frequently received and iGated by my unit (as of June 20 almost 1200 packets for the month). Mobile stations directly received contribute a few dozen packets per month but probably wouldn’t be iGated otherwise due to difficult terrain.

    Your image made everything a lot easier and I am pleased with the performance of Dire Wolf. Found that I can plot stations received by the RPi on UI-View32 connecting to the RPi wirelessly from my laptop.

    As a relative newcomer to APRS any conclusions I have reached are to the best of my current knowledge.

    Richard

    1. Richard,
      You are very welcome and thanks for the kind words.
      73 Keith.

  31. Merci pour ce long descriptif, j’ai eu du mal sur les coordonnée gps, je les ai prise sur aprs.fi mais je ne respectai pas assé bien la syntaxe, maintenant ça marche.
    Auriez vous une table pour les logos?

    Merci encore
    73

    1. I’m sorry, I don’t speak any French so I can’t help. Perhaps someone reading this is able to assist.
      73 Keith.

  32. Hi Keith,

    thank you so much for making this setup so easy even for someone like me who has no clue about Linux and programming.
    I set it up like in the manual and also edited the cronetab file to set up auto-start, but it seems to not start automatically after a reboot.
    If I start the test it works perfect and all signals show up at aprs.fi
    Is there an easy way to fix the auto start issue or do I have to start from scratch?
    I had to re-download Direwolf as described due to the error and after that the test worked perfect.

    Thanks for the Info.
    Tobias

    1. It’s worth checking to make sure your Pi is set to boot and load into the GUI automatically. That could be causing this.

      1. Thanks for the reply.
        I didn’t figure it out with my limited knowledge. I will set it up again from the image on another SD card, maybe I did something wrong.
        I noticed that the test crashes after a few hours, so there is probably something I screwed up 😉

        Thank you.
        Tobias

  33. Hi Keith, thanks for nice image

    Working now as oh1co-2 in my remote base in KP00XE.

    is there any possibility to narrow the sampling of the rtl-sdr ?
    I would like to use 9khz filter/channel. Does Direwolf use squelched audio?

    I have quite weak signal, from digipeater 45km away, but hear it with my PC RTL# and UZ7HO decoder, but my raspberry I-gate does not hear it.

    I use 9k filter in SDR#, when monitoring APRS in PC.

    have tried -s 9k etc but nothing received.
    exept some nearby sailing hams APRS…

    Regards
    -Jouni oh1co

  34. Thanks for the great walk-through!

    I have set this up on an R-Pi 2, using an RTL-SDR v3.
    I am >this< close to having it working properly….the one outstanding issue is that I just cannot make the system start up automatically upon reboot.

    I've followed everything to the "t" several times now. I can run the test routine and my SSID (vk2ben-10) appears on APRS.fi happily. But not by itself.

    I believe I've set this all up using the "pi" user, not "root". Does that have a bearing on things at all?

    Thanks!
    Ben

  35. Linux novice here, with an original Raspberry Pi B.

    Executing these commands:
    cd ~
    sudo cp sdr.conf sdr.old
    git clone https://www.github.com/wb2osz/direwolf

    I get the error message: “fatal: destination path ‘direwolf’ already exists and is not an empty directory.” What did I do wrong?

    Thanks.

  36. I had to delete direwolf and reinstall direwol again for I kept seeing the errors performing the test. Now it is operating ok.

  37. Hi Keith-Thanks for doing all the heavy lifting for us!
    I’ve been working in electronics for a gazillion years, but I’m new to Linux. I think I’m very close to having my iGate working, but I’m not quite there yet.
    When I first set it up I got the “Signal caught, exiting!” error message so I re-downloaded and compiled Direwolf per your excellent instructions. Now, when I run the test command everything **looks** fine. It makes one entry that I can see on aprs.fi, but after I edited the file using crontab -e and restart the Pi, I get nothing. I double-checked the crontab entry, and it appears to be correct. How should I troubleshoot this?

    Thanks for your help, and THANKS for sharing all of this great information!

  38. Keith – Great work. Do you know if this can be changed to go mobile. Add a gps and small radio to transmit? If so how can it be done?

    Thanks for all the hard work…..

  39. Thanks for all the work you did. I got the pi setup and working and showing on the map but when the software starts it shows 14464200 instead of the 1443900 I changed the file to. I ran the calibration test but there are no – #’s just #’s in the 30’s, 40’s. Not sure where to go from there.
    Thanks.

    1. Hi John,

      It doesn’t matter what the frequency shows, leave the configuration file with the correct frequency (144.390) and it’ll work fine. Trust me!

      73 Keith.

      1. Thanks Keith and I trust you…….hi hi……

    2. After doing some reading I see I am not alone in the off frequency showing. I’m using a brand new Pi 3 and all seems well but with just the 6″ mag mount antenna that came with the NooElec dongle I don’t expect much any way. I’m waiting for an adapter cable to run to my outside j-pole and then I’ll see results.
      Thanks…….

  40. Keith,
    Everything is running and showing no errors (all new install on Pi 3 wireless to my router)(I have three other pi’s running 24/7 wireless no issues). I’m hooked up to a 2m jpole 10′ above my house. It’s showing on the APRSC status page and on a site 17 miles from me but not showing on my info that any packets were heard. Not sure where to go from there…
    Thanks,
    John

    1. When I look on aprs.fi at my own gateway, it only shows that I’ve received someone if I’m the first station to upload that packet. When I was using a super-duper aerial very high, I was showing many stations received. With a lower gain and lower height aerial, I don’t report anywhere near as many. It’s not a case of the online system reporting everything you hear, just if you get in first. I can go for days without logging anyone.

      1. Thanks for the info and that helps for sure. Is there a way to listen to the Pi to hear the packets? I can use my HT and hear them fine but would like to know how to hear them or even see a log of them being received.
        Thanks,
        John

        1. John,

          If you have APRS TX capability on another device you might want to try reducing the power waaay down, or using a dummy load — That way only your iGate will likely hear that packet and will send it to the APRIS network, this is how I have verified my iGates are working in the past.

          1. Thanks EMS but until I go to Ham Radio Outlet on Saturday and get a new Kenwood D74A I wont’ be able to do any testing. I just hooked the SDR dongle to my jpole and all is running fine, showing every place it should but I haven’t seen any packet activity. I know there are there because I can hear them on my radio.
            Thanks……

  41. Hi Keith,

    Thank you for this image–it made setup a breeze, and allowed me to disassemble a cobbling of an Rpi3, MobilinkD, HT, and rats nest of cabling, that I had previously used.

    I tested reception of packets using same said MobilinkD + HT and had success out of the gate.

  42. Just a simple Igate. I’ve had my pi with Dire Wolf running all day. Hooked up to a 20′ in the air jpole using an SDR dongle and everything shows and looks good. I also installed ARPSIS32 and have it setup. I’M SHOWING NOTHING FOR REPORTING any place. I can hear packets on my ht. Any help would be appreciated………
    Thanks…..

  43. Got my igate working but not well with just a jpole but it’s working and reported here and there. Question is now can I turn this into an ISS igate? There are none any where around where I live so people that contact the station never get reported to the map. Would it just be changing the frequency and some place in the settings change the web address to report or is there more to it. It’s arps either way…….

  44. Hi,
    I have successfully setup this image on my Pi 3 and have it working as intended. The only issue I am having are my keyboard settings. They keep reverting back to either UK English or US Spanish. I attempt to type the pipe or tilda and they come up as something else. If I change the keyboard back to US English in the settings it will work most of the time until I reboot. Sometimes it sets itself back to UK English or US Spanish even if I don’t reboot.

    Any ideas?

    1. Hi Daniel,
      Not really – I don’t think I’ve ever tried to change the keyboard layout of any of my Pis (I guess they default to British English). Are you doing it through sudo raspi-config?
      73 Keith.

  45. Never had that keyboard problem during setting up and keeping the settings. Good luck on that……..

    In the mean time while waiting for an answer to my previous question above….

    1. Where can I adjust the squelch on the SDR dongle to make sure it’s as low as can be without being open.
    2. I want to here the audio from the Pi. Plugging in a speaker/earphones I get nothing. Where would I turn on the audio to make sure I’m getting packets other than looking at the screen.

    Thanks,
    John KD7AAT

  46. Hi g6nhu

    regarding the recompile instructions if you ran “git clone https://www.github.com/wb2osz/direwolf” with out deleting the folder you will get “fatal: destination path ‘direwolf’ already exists and is not an empty directory” you need to add “rm -r direwolf” so the folder and all content is deleted

    1. Hi Glen,

      Thanks for pointing that out – I’ve added that additional line into the instructions.

      73 Keith.

  47. Really appreciate your work on this, made it an fun project. I used one of the original pi’s and a cheapo dongle. I haven’t gotten reports through it yet, but everything looks really good and it’s beaconing on aprs.fi ok.

    I did have a problem getting the unzip to work, I had to use 7zip instead of the native Windows10 utility (same problem as Len had above). I also got hung up for a minute on whether I should copy the img file or use a burner, finally went to the Rpi page and used the one they recommended for the basic raspian loading and eveything went great.

    Thanks and 73!

    1. Hi Mark,
      Great stuff and I’m glad that 7zip worked for you to unzip the file.
      73 Keith.

  48. OK, been working on it most of the afternoon and I’m stuck:
    I can watch the packets coming into Direwolf, they decode, i can read them, no problem
    I can see my TX of the beacon for the IGATE in Direwolf, its in pink text.
    I can see my IGATE on APRS.FI with the right time tag.
    but, none of the other stations/packets I’m seeing ever make it to APRS.fi. including my little tracker sitting here next to me with almost no coverage – I should be the only one to hear it, (and it is working), I can see Direwolf decoding it, but it never makes it out the IGATE (no pink text showing it transmitted).

    What am I missing? thanks for any help you can give.

    Mark

    1. No sooner did I hit return than I saw a packet pop up on APRS.FI. It took all afternoon, but one finally went through! Thanks for a great cook-book!

  49. Having had no replies the first time I’ll ask again……..

    1. Where can I adjust the squelch on the SDR dongle to make sure it’s as low as can be without being open.
    2. I want to here the audio from the Pi. Plugging in a speaker/earphones I get nothing. Where would I turn on the audio to make sure I’m getting packets other than looking at the screen.

    Thanks,
    John KD7AAT

    1. Sorry John, I can’t answer those questions – I hoped someone else might have been able to but I can’t.
      73 Keith.

      1. Thanks any way Keith………

  50. hi, im 9w2ghh,
    come up this problems when updating and recompiling direwolf

    my pi LAN drop after : rtl_fm -f 144.390M – | direwolf -c sdr.conf -r 24000 -D 1 – command
    and also not working after reboot.

    1. Dire Wolf version 1.4

      Reading config file sdr.conf
      Audio input device for receive: stdin (channel 0)
      Audio out device for transmit: null (channel 0)
      Found 1 device(s):
      Channel 0: 1200 baud, AFSK 1200 & 2200 Hz, E+, 24000 sample rate.
      Note: PTT not configured for channel 0. (Ignore this if using VOX.)
      Use -p command line option to enable KISS pseudo terminal.
      Ready to accept AGW client application 0 on port 8000 …
      Ready to accept KISS client application on port 8001 …
      0: Generic, RTL2832U, SN: 77771111153705700

      Using device 0: Generic RTL2832U
      Found Fitipower FC0012 tuner
      Tuner gain set to automatic.
      Tuned to 144642000 Hz.
      Oversampling input by: 42x.

    2. i’ve find out about the above problem, its because the power supply that im using for PI cannot support for USB donggle. change to other power supply and problem solve.
      But, the rtl_fm -f 144.390M – | direwolf -c sdr.conf -r 24000 -D 1 – command did not automaticly started although i’ve edited the crontab -e. can u guide me on this problems?

  51. I am trying to run igate under direwolf 1.4, raspi stretch lite, Pi2 with an Adurino 2.2″ TFT screen.

    When I run a test command, such as: rtl_fm -f xxxx | direwolf xxxxx >/dev/tty1,
    all things going right, and the beacon text flowing on my TFT screen.

    BUT, after I’d made the crontab and reboot my pi, there was nothing happened. and there wasn’t any thread about rtl_fm and direwolf in my raspi system.

    I find out that the dw-start.sh of direwolf 1.4 is different to 1.3, but I cannot find out why it not works.

    could anyone give any help?

    1. Finally, It works!
      I’v modified the dw-start.sh.
      It was designed to work with x-terminal or emulator. but my goal is running igate-pi directly in a lite version of pi.
      dw-start.sh 1.4 running igate after a screen command, and after 30 seconds of reboot…. so i cannot see anything…it’s so fanny me… 😛

      1. that what i’m facing now, and thanks for the info.. i’ll try mine. and how did u trim for correct frequency?

        1. There is no trimming for the correct frequency required. If your APRS frequency isn’t 144.800 then all you need to do is edit dw-start.sh as described in the instructions.

          When you run this, it will report a different frequency to the one you entered. This does not matter, it’s unimportant. The only place you need to set up your frequency is in dw-start.sh

          73 Keith.

          1. still cannot make dw-start.sh 1.4 to auto run.
            and my frequncy here is 144.380
            can someone guide me in this matter?

          2. I’ll have a fix for this very shortly – Keep your eyes open here, I’m hoping to have something done over the weekend.

  52. Hi keith,

    Just completed build using 3rd Feb but needed to swap to a larger than 4gb card for some reason. Not a major issue as I had a 16gb spare.

    Instructions are great, even though I did get the error. I now have an Igate running using my older (unused) PI and RTL SDR dongle.

    Many Thanks,

    73 Ellis M5AEI

  53. Hi, many thanks for the image. I have managed to put it on an SD card via my Mac and it runs fine on my Pi 3B + up until I enter:
    cd ~
    sudo nano sdr.conf
    Where upon a blank file called sdr.conf is opened.
    I can’t find the proper file, probably as I’ve not used Linux before and haven’t worked out how to search all directories for the file.
    I wonder if anyone can help, I am totally new to the Pi.
    Thanks

    1. Hi Don,
      If you’ve not already found the file, log out from the Pi, log back in again and you should be in the correct directory to edit the file. No need to use the cd command, just go straight to sudo nano sdr.conf

      1. Many thanks. Only just seen this as I got lost! 🙂

  54. It was working perfectly. I went to raspi-config, boot options, destop/cli, selected “B1 text console requiring user to login.” that broke it.

    reboot after
    selecting “B2 text console, automatically login in as pi user” did not fix it.

    Is there a way to easily fix this, or should i just re-install?

    1. Hi Bryan, from what I remember it should be set to Desktop / CLI and then Desktop Autologin for it to work. Try that.

      73 Keith.

      1. That fixed it, thanks.

  55. Thanks for this tutorial. I have had a very fun few days playing with my rpi and getting this to work with a cheap dongle I got from aliexpress.

    1. Excellent news Scott, thanks for the feedback.

  56. Thanks for the IGATE program. I downloaded and ran IGATE on RASPBERRY PI 2.
    On Raspberry PI 3 B + does not work. A color screen has appeared. The red LED gives 4 long flashes and 4 short flashes continuously. I downloaded the test shell – it works. Rasberra pi 3 B + is OK, but the IGATE program does not load. I would be grateful for the recommendations for the PI 3 B + model.

    1. Hello,
      Please look right at the top of the article, it says that this is outdated. You should follow the link to the new version https://qso365.co.uk/2018/04/updated-guide-to-setting-up-an-aprs-rx-only-igate-using-a-raspberry-pi-rtl-sdr-dongle-and-a-pre-built-image/ which works perfectly well on the Pi3 B+ model.
      73 Keith

  57. Wonderful job! This was my first time out with Direwolf. I just setup a Receive-Only Digipeater using an NooElec SDR dongle using RPi on the side of a hill where I can’t get out any APRS Tx. Yay, I was prepared for battle but, the instructions took this micro-softy pretty much right through it. Now can get my TH-d72a to show in aprs.fi at least in the neighborhood. So, cool. I have one question now, is there a way to add a comment like, “powered by Direwolf” in the sdr.conf so it shows up in aprs.fi?

    1. Thanks for the nice comments.
      Yes, if you use sudo nano sdr.conf and edit the last line, you can change the text in COMMENT=”xxxxxxx” to read whatever you like, this is the text that goes out in the beacon to aprs.fi
      73 Keith

      1. Got it!
        KM6JSJ-7 · center · zoom · info
        2019-03-27 18:44:17 – 2019-03-28 17:19:01
        SDR_Rx_Only-Powered_by_Direwolf
        [APDW15 via TCPIP*,qAC,T2CAEAST]

        Appended ‘comment=”…”‘ to the end of the PBEACON line.

        Thx,

        Dave

  58. is possible to hear the audio from the sdr-rtl dongle

    1. I’ve never tried, Jim.

  59. Followed setup and all seems fine, connects to arps.fi and reports my position, ive run the cal tool and got a 49ppm average which ive added to the script. When near by the igate it will pick up my car mobile rig aprs, when I go just down the road it wont pick it it? frequency seems right, is this a gain issue?

Comments are closed.