How-to Feed Plane Plotter Site directly from Raspberry Pi

CONCLUSION: Restart of dump1090 (fa or mutab) causes CPU usage of ppup1090 to jump from 0.7% to 98%, and stay there till ppup1090 is restarted (see details below). This also results in ppup1090 stops feeding data to planeplotter server.

@Aerovision1 : Do you have a cron job to reset gain every night? Resetting gain requires restart of dump1090 (fa or mut). Or may be you have installed gain setting helper by @wiedehopf and that also restarts dump1090 after changing gain every night.

@obj : Any thoughts why ppup1090 is behaving like this?

Details:

I checked just now (after 24 hrs running) and ppup1090 was running Ok with CPU usage 0.7%.
I then restarted dump1090 and CPU usage of ppup1090 jumped to 98%. I restarted ppup1090, and its CPU usage returned to 0.7% .

I then directly started the ppup1090 binary

sudo systemctl stop ppup1090
cd ppup
./ppup1090

The CPU usage was 0.7%. I restarted dump1090, and CPU usage of ppup1090 jumped to 98%.`

Wow - thank you abcd567. I just restarted dump1090-fa on both of my active RPi’s and found exactly the same result as you did with ppup1090.

Yes, I have installed “Automatic gain optimization for dump1090 fa” from @wiedehopf. He was very helpful on a FR24 problem that I had and I am now using several of his programmes. I will immediately uninstall it from both RPi’s.

That said, my main ppup1090 uploader from home failed for the first three nights, but not on the fourth night, and my second machine that manages uploads from Gatwick did not fail once. Both had the auto gain opt installed.

I am struggling with manual gain optimization. If anyone can assist me with this, I would be grateful.

Finally, a crontab to restart ppup1090 at, say, 03:30 every morning would be really handy to have, but I have no idea how to write it. Please could you assist here?

Thank you,
Ian

You can just change the gain optimization script to also restart ppup1090.

sudo nano /usr/local/bin/dump1090-fa-autogain

Look for this line:

systemctl restart dump1090-fa                                                                                                      

Below add:

systemctl restart ppup1090                                                                                                      

That is assuming you have set it up as a systemd service.

Alternatively you can add these two lines to the unit section of your systemd service file for ppup1090.

PartOf=dump1090-fa.service
ReloadPropagatedFrom=dump1090-fa.service

This should make ppup1090 restart every time dump1090-fa restarts.

Thanks. This option is much better than modifying dump1090-fa-autogain file. With this option, for whatever reason dump1090 restarts (manually/by system/by another program/restart on failure etc etc), ppup1090 will also restart.

As I have dump1090-mutability on the Pi which has ppup1090, I will have to replace dump1090-fa by dump1090-mutability in you above quoted code.

1 Like

Please test, not sure if it works as advertised.

Will test tonight or tomorrow.

If the option to amend the unit section of the systemd service file for ppup1090 works, please could one of you then advise the entries required to effect this option?

Let me first test it. Apparently what addition to /lib/systemd/system/ppup1090.service is suggested by @wiedehopf should work.

A million dollar question:
Why ppup1090 goes crazy when dump1090 is restarted???

I will stop & disable dump109-mutability, install ModeSDecoder2 to feed ppup1090, and see if restarting ModeSDeco2 has similar affect on ppup1090.

I guess it doesn’t handle getting disconnected properly.

1 Like

Thanks.

I will raise this issue on Planeplotter forums, as well as at Github/MalcolmRobb.

@Aerovision1

Thanks to @wiedehopf. Adding only one line (PartOf=…) to file ppup1090.service was enough. I tested it. Every time the dump1090 is started, ppup1090 also get started automatically, and CPU usage stays at below 1%

Service file of ppup1090, if using dump1090-fa

sudo nano /lib/systemd/system/ppup1090.service
# planeplotter uploader service for systemd
# create in /lib/systemd/system/
# then install in /etc/systemd/system/default.target.wants/
# by command: sudo systemctl enable ppup1090.service

[Unit]
Description=PlanePlotter Raspberry Pi uploader
Wants=network-online.target
After=dump1090-fa.service network-online.target time-sync.target
PartOf=dump1090-fa.service

[Service]
User=ppup1090
RuntimeDirectory=ppup
ExecStart=/home/pi/ppup/ppup1090 --quiet
ExecReload=/bin/kill -HUP $MAINPID
Type=simple
Restart=on-failure
RestartSec=30
# exit code 4 means login failed
# exit code 6 means startup failed
RestartPreventExitStatus=4 6

[Install]
WantedBy=default.target

Service file of ppup1090, if using dump1090-mutability

sudo nano /lib/systemd/system/ppup1090.service
# planeplotter uploader service for systemd
# create in /lib/systemd/system/
# then install in /etc/systemd/system/default.target.wants/
# by command: sudo systemctl enable ppup1090.service

[Unit]
Description=PlanePlotter Raspberry Pi uploader
Wants=network-online.target
After=dump1090-mutability.service network-online.target time-sync.target
PartOf=dump1090-mutability.service

[Service]
User=ppup1090
RuntimeDirectory=ppup
ExecStart=/home/pi/ppup/ppup1090 --quiet
ExecReload=/bin/kill -HUP $MAINPID
Type=simple
Restart=on-failure
RestartSec=30
# exit code 4 means login failed
# exit code 6 means startup failed
RestartPreventExitStatus=4 6

[Install]
WantedBy=default.target

Thank you @abcd567 and @wiedehopf for your help here. Implemented as instructed and logs show that the auto gain caused dump1090-fa to restart on my RPi yesterday morning, with ppup1090 immediately following suite. Without checking logs, no evidence of it occurring, so “happy days”!

Please may I re-post the final solution, with due credit, on the PlanePlotter forum, or do you, @abcd567, plan to do so?

Ian

@Aerovision1

Please go ahead and post the solution on Planeplotter forum. I am not a member of that forum.

Thanks abcd567,

I’ll get cracking on that later, much appreciated.
C.

I got as far as

2.6 - Compile the ppup1090 (plane plotter uploader) from source code

NOTE: Only the “ppup1090” component of cloned source code needs to be compiled for uploading to Planeplotter. You don’t have to compile dump1090 itself, as dump1090 is already available in Piaware SD Card image (dump1090-fa), or you have already installed dump1090-fa / dump1090-mutability yourself.

cd ~/ppup
make -f makeppup1090

it returned an error as follows:

pi@raspberrypi:~/ppup $ cd ~/ppup
pi@raspberrypi:~/ppup $ make -f makeppup1090
gcc -g -o ppup1090 ppup1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o coaa1090.obj pkg-config --libs librtlsdr -lpthread -lm
/usr/bin/ld: interactive.o:/home/pi/ppup/dump1090.h:373: multiple definition of Modes'; ppup1090.o:/home/pi/ppup/dump1090.h:373: first defined here /usr/bin/ld: interactive.o:/home/pi/ppup/dump1090.h:238: multiple definition of tDF’; ppup1090.o:/home/pi/ppup/dump1090.h:238: first defined here
/usr/bin/ld: mode_ac.o:/home/pi/ppup/dump1090.h:373: multiple definition of Modes'; ppup1090.o:/home/pi/ppup/dump1090.h:373: first defined here /usr/bin/ld: mode_ac.o:/home/pi/ppup/dump1090.h:238: multiple definition of tDF’; ppup1090.o:/home/pi/ppup/dump1090.h:238: first defined here
/usr/bin/ld: mode_s.o:/home/pi/ppup/dump1090.h:373: multiple definition of Modes'; ppup1090.o:/home/pi/ppup/dump1090.h:373: first defined here /usr/bin/ld: mode_s.o:/home/pi/ppup/dump1090.h:238: multiple definition of tDF’; ppup1090.o:/home/pi/ppup/dump1090.h:238: first defined here
/usr/bin/ld: net_io.o:/home/pi/ppup/dump1090.h:373: multiple definition of Modes'; ppup1090.o:/home/pi/ppup/dump1090.h:373: first defined here /usr/bin/ld: net_io.o:/home/pi/ppup/dump1090.h:238: multiple definition of tDF’; ppup1090.o:/home/pi/ppup/dump1090.h:238: first defined here
collect2: error: ld returned 1 exit status
make: *** [makeppup1090:24: ppup1090] Error 1

When I then go to 2.7 - TEST it doesnt work as follows:

pi@raspberrypi:~/ppup $ cd ~/ppup
pi@raspberrypi:~/ppup $ ./ppup1090
bash: ./ppup1090: No such file or directory

Any ideas what’s going wrong?

Hi cbdagency,

This 2018 thread is about the first version of ppup1090 which Malcolm Robb created back in 2014. At the time, ppup1090 was downloaded as part of his dump1090. Last year, Malcolm made several improvements to ppup1090 to support mode-a/c mlat on the PlanePlotter network. The new version of ppup1090 is now available as a separate download from dump1090, and also on github.

See:

Here are some release notes from February 2021:
https://groups.io/g/planeplotter/message/115719

You can use the same coaa.h you already have. Just copy it to the ppup1090 folder before you run “make”.

-Dan

2 Likes

Hi, thanks, I tried it but got an error back in terminal as follows… do you think its a problem?

pi@raspberrypi:~ $ cd /home/pi/
pi@raspberrypi:~ $ mv ppup1090 ppup1090-001
mv: cannot stat ‘ppup1090’: No such file or directory
pi@raspberrypi:~ $ git clone git://github.com/MalcolmRobb/ppup1090.git
Cloning into ‘ppup1090’…
remote: Enumerating objects: 23, done.
remote: Counting objects: 100% (23/23), done.
remote: Compressing objects: 100% (23/23), done.
remote: Total 23 (delta 5), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (23/23), 133.56 KiB | 809.00 KiB/s, done.
Resolving deltas: 100% (5/5), done.
pi@raspberrypi:~ $ cd dump1090
bash: cd: dump1090: No such file or directory
pi@raspberrypi:~ $ cd ppup1090
pi@raspberrypi:~/ppup1090 $ make
gcc -O2 -g -Wall -W -c ppup1090.c
gcc -O2 -g -Wall -W -c anet.c
gcc -O2 -g -Wall -W -c interactive.c
gcc -O2 -g -Wall -W -c mode_ac.c
gcc -O2 -g -Wall -W -c mode_s.c
gcc -g -o ppup1090 ppup1090.o anet.o interactive.o mode_ac.o mode_s.o coaa1090.obj -lpthread -lm
/usr/bin/ld: interactive.o:/home/pi/ppup1090/ppup1090.h:282: multiple definition of coaa1090'; ppup1090.o:/home/pi/ppup1090/ppup1090.h:282: first defined here /usr/bin/ld: interactive.o:/home/pi/ppup1090/ppup1090.h:272: multiple definition of ppup1090’; ppup1090.o:/home/pi/ppup1090/ppup1090.h:272: first defined here
/usr/bin/ld: interactive.o:/home/pi/ppup1090/ppup1090.h:225: multiple definition of Modes'; ppup1090.o:/home/pi/ppup1090/ppup1090.h:225: first defined here /usr/bin/ld: interactive.o:/home/pi/ppup1090/ppup1090.h:187: multiple definition of tDF’; ppup1090.o:/home/pi/ppup1090/ppup1090.h:187: first defined here
/usr/bin/ld: mode_ac.o:/home/pi/ppup1090/ppup1090.h:282: multiple definition of coaa1090'; ppup1090.o:/home/pi/ppup1090/ppup1090.h:282: first defined here /usr/bin/ld: mode_ac.o:/home/pi/ppup1090/ppup1090.h:272: multiple definition of ppup1090’; ppup1090.o:/home/pi/ppup1090/ppup1090.h:272: first defined here
/usr/bin/ld: mode_ac.o:/home/pi/ppup1090/ppup1090.h:225: multiple definition of Modes'; ppup1090.o:/home/pi/ppup1090/ppup1090.h:225: first defined here /usr/bin/ld: mode_ac.o:/home/pi/ppup1090/ppup1090.h:187: multiple definition of tDF’; ppup1090.o:/home/pi/ppup1090/ppup1090.h:187: first defined here
/usr/bin/ld: mode_s.o:/home/pi/ppup1090/ppup1090.h:282: multiple definition of coaa1090'; ppup1090.o:/home/pi/ppup1090/ppup1090.h:282: first defined here /usr/bin/ld: mode_s.o:/home/pi/ppup1090/ppup1090.h:272: multiple definition of ppup1090’; ppup1090.o:/home/pi/ppup1090/ppup1090.h:272: first defined here
/usr/bin/ld: mode_s.o:/home/pi/ppup1090/ppup1090.h:225: multiple definition of Modes'; ppup1090.o:/home/pi/ppup1090/ppup1090.h:225: first defined here /usr/bin/ld: mode_s.o:/home/pi/ppup1090/ppup1090.h:187: multiple definition of tDF’; ppup1090.o:/home/pi/ppup1090/ppup1090.h:187: first defined here
collect2: error: ld returned 1 exit status
make: *** [Makefile:23: ppup1090] Error 1
pi@raspberrypi:~/ppup1090 $

Hi again, I had some issues with my other feeders that Im guessing my have been related to using these old PP setup instructions instead of the new ones you have shared. How can I reverse what I have already done in steps 1 to 2.6 above (so I can start fresh with the correct instructions)?

Unless you are a masochist, once something has gone wrong, a clean install is worth considering.
On top of that, FA v7.1 is out, so it may be a good time to upgrade.