What antenna did you order? I will look around to see if anyone has a bandpass filter tuned for 978. I have not spotted one so far.
I now know how to change the serial number on a RTL_SDR reliably. What I do not know how to do is force the SDR with a serial of "978" to always be device index 1 (with the 1090 dongle taking 0). I suppose the other option is to modify the 1090 and 978 dump startup scripts to look for serial # 978 to determine its' presence and index number and start 1090 and 978 accordingly. I will keep looking.
To find a good filter for 978 won't be an easy mission. The frequency is close to GSM cell channels and most of smd bandpass filters aren't that narrow. Maybe you could give a try to this: https://www.changpuak.ch/electronics/Coaxial_Stub_Filter_Designer.php
okay I have been WAAAAAAY over complicating this..! It's stupidly simple to set the serial number on the SDRs. ex: $ rtl_eeprom -d 1 -s 1090 (sets device index 1 with a "serial number" of 1090) Do this once per FA Pro "Blue" stick. The dump1090-fa program will also take a "serial number" in the startup parameters. I was focused on "device index".. *dumb* $ dump1090-fa --device 1090 This will always use serial number 1090. It fails to start if you have one without the serial number set. I am going to set 100% of my "blue" FA SDRs to serial # of 1090.
My follow on question is where in the ADSBx scripts / config do I need to change it to control which serial number SDR it uses? The FlightAware config file allows this to be set: rtlsdr-device-index 1090 We need something like: adsbx-978-sdr as a config option.
Yes. Each SDR has a serial number. I'll look it up tomorrow - there are a few ways to do it. One of the ways is to change the serial number, the stratux project mini SDR are tagged like that. You can use this: http://manpages.ubuntu.com/manpages/trusty/man1/rtl_eeprom.1.html to change the SDR serial. Careful because you can brick them. Also the Blue FA stick has a 1090 filter and amp built in - so you have to use the orange SDR, or some other SDR like the RTL-SDR for 978.
This filter works great for my sdrs. I monitor a p25 system on 800mhz as well as uat/adsb. https://www.digikey.com/product-detail/en/crystek-corporation/CHPFL-0700/744-1407-ND The antennas i got from here https://www.amazon.com/gp/aw/d/B01J9DH9U2?psc=1&ref=yo_pop_mb_pd_title
So the serial numbers are completely trivial to change in the piaware build. The command "rtl_eeprom" is already there. I think I posted something about the commands already. I will try to take a few screen shots of me doing it and document that. I set my "blue" ones (with the 1090 filter) to a serial number of "1090".. I set the "orange" ones (no filter) to a serial number of "978". The config change for the 1090 was in the piaware-config.txt file by adding: rtlsdr-device-index 1090 to the config. The config change for the 978 dongle was a bit more hidden... in the /home/pi/adsb-exchange folder there is a file called: adsbexchange-978_maint.sh In that file, there is a line that starts the RTL_SDR dongle with it's parameters. The stock script has -d 1 inside of the parameter group. I edited mine to read: /usr/bin/rtl_sdr -f 978000000 -s 2083334 -d 978 -g 48 {plus more stuff} The "-d 978" tells it to use the SDR with the serial number of "978". Basic stuff for talented nerds, but I had to dig so I was happy I found it. It starts and works just right every time.
Thanks imago for the filter link. While I would love a band pass for just 900 to 1200, that 700 high pass is likely to help a lot. I am torn about what to say on the Nooelec antennas. I was all excited about them about 3-4 weeks ago. I bought 4 each 978 and 1090. The results were terrible. I ended up picking up a low end analyzer (AAI N2201SS) so I could see what my antenna systems are doing. The SWRs were pretty poor and the behavior was very inconsistent as you moved them from straight to 45 to 90 and back. SWRs all over the map. I have an active email thread going with them and I don't really want to push them in front of the bus on this just on the unlikely case I have some defective ones. Then again, they are about $5 each and that is after they get them and mark them up.. so what should I expect. I do like the little mag mount telescoping antennas but I can not find the darn things alone. They always seem bundled with a generic SDR which I don't want. I have ordered some PCB antennas for 978 to tinker with. I have higher hopes for those.
TXMike, I can confirm the 978mhz noelec antenna bundled with the 1090 and MCX->SMA pigtails is not performing well. I have screwed the bottom of the pigtail connecter to a hole in the bottom of a cleaned baking pan then attached the antenna to the top and that has seemed to help, a little. More to follow tomorrow or tonight possibly ;-)
also I have concerns with my build of dump978 and tools not reporting aircraft...i'm seeing messages but nothing is making it to here (ADSBX)
FYI, I have a typo in the adsbexchange-978_maint.sh script there should be a " - " between "socat" and "TCP" (as shown) ... space hyphen space rtl_sdr -f 978000000 -s 2083334 -d 1 -g 48 - | /home/pi/dump978/dump978 | /home/pi/dump978/uat2esnt | socat - TCP:feed.adsbexchange.com:$UATPORT That might explain why no 978 traffic makes it out to the server.
Working script. For the 1.28 custom image only. I believe the FA ADSBx image should not have this error? I could be wrong, I'm pretty sure I just used the code from the FA ADSBx image. Code: #!/bin/sh if [ -f "/tmp/adsbx-params" ]; then . /tmp/adsbx-params else echo "DUMP978 ERR: Configuration file does not exist." exit 0 fi if [ ${UAT} = "yes" ]; then while true do sleep 30 if [ -z ${UATPORT} ];then UATPORT=30005 fi rtl_sdr -f 978000000 -s 2083334 -d 1 -g 48 - | /home/pi/dump978/dump978 | /home/pi/dump978/uat2esnt | socat - TCP:feed.adsbexchange.com:$UATPORT done else exit 0 fi
btw, you can use "STDIN" (or "stdin", it seems case-insensitive) instead of '-' for socat, if you want to make it perhaps "less ambiguous" to the novice reader... (Hmm, I tried to post the example in a CODE block, but the forum software told me I'm trying to spam... )
test... Code: socat STDIN TCP:feed.adsbexchange.com:$UATPORT edit: well, it let me do it in a new reply... weird.
From one of my dual SDR Pi3s. I am not sure if it's capturing much as I keep checking late at night. Can you see any traffic on port 51405? -- Code: $ more adsbexchange-978_maint.sh #!/bin/sh . /tmp/params if [ "$send978" = "no" ] then exit 0 fi while true do sleep 30 . /tmp/params if [ -z ${adsbx978feederid+x} ] then adsbx978feederid=30005 fi /usr/bin/rtl_sdr -f 978000000 -s 2083334 -d 978 -g 48 - | /home/pi/adsb-exchange/dump978/dump978 | /home/pi/adsb-ex change/dump978/uat2esnt | socat - TCP:feed.adsbexchange.com:$adsbx978feederid done $
Erm, did you define $adsbx978feedrid in /tmp/params? Because if not, you're setting the remote port to 30005 and not 51405... EDIT: actually, no, that safety check is broken, see below... I also am not sure what the stray "+x" is on the 'if -z' line... that's always going to be false. The point of that 'if' statement is to revert to a sane port number if it's not defined.
Here is what we use in the ADSBx custom image. You are using the FA image -- variables will be different but logic the same. Ignore the UDP - we use that for the very slow IoT cellular usb dongles. UDP requires we setup a listener on the feed server and relay/convert it to TCP connection to the port. 1. Check for parameters file, read it 2. Check for 978 enabled variable 3. Check for custom port variable 4. Run the command I like that you re-read variables in the loop. That makes changing things easier without need to restart the entire script or reboot the pi. Code: #!/bin/sh if [ -f "/tmp/adsbx-params" ]; then . /tmp/adsbx-params else echo "DUMP978 ERR: Configuration file does not exist." exit 0 fi if [ ${UAT} = "yes" ]; then while true do sleep 30 if [ -z ${UATPORT} ];then UATPORT=30005 fi rtl_sdr -f 978000000 -s 2083334 -d 1 -g 48 - | /home/pi/dump978/dump978 | /home/pi/dump978/uat2esnt | socat -T 15 -u - UDP:feed.adsbexchange.com:$UATPORT done else exit 0 fi