• Tag Archives aircraft
  • Titanium C1-PLL LNB GPSDO Modification for C-Band ADSC

    This page is out of date.
    Please go to my GitHub site: https://thebaldgeek.github.io/

    You may recall from the very end conclusion of the blog entry on my ADSC C-Band ground station that I had two outstanding issues.
    Tracking the sat.
    Thermal drift on the output.

    The sat issue is the nature of physics.
    The thermal drift is like wise. The problem here is that you only need the tiniest amount of drift in the 25 mHZ crystal to make a massive difference in the output.
    The LNB is sitting out in the sun at the dish focal point and so has no choice but to undergo a major thermal cycle every 24 hours.

    The first one is solved thanks to Node-RED.
    The second has also been solved thanks to a very cool product. Here is how I did it.

    BTW, I bought another LNB so I would not have any downtime, so now I have two… But I think I found a home for one of them….

    You will need to buy a GPS disciplined oscillator from Leo.
    http://www.leobodnar.com/shop/index.php?main_page=product_info&cPath=107&products_id=301
    Shipping to California only took a few days (pre Covid), so you won’t have to wait too long.
    Here is the kit you get;

    Its one of the best presented bit of electronics that I can recall unpacking.
    You get a GPS antenna, the electronics and a USB lead.
    Jump on the website and pull down the little setup utility.
    Sorry for the screen shot of a screen shot, but here is the utility in action.

    You need to set the output to be the lowest.
    Set the frequency to 25 mHZ and that’s it.
    Takes all of about 30 seconds to set up and has been rock solid reliable the whole time I have been running it.

    Now that the easy part has been done, its time to dust off the soldering iron and mod the LNB.
    What we are doing is removing the crystal and installing a coax to inject the output from the GPSDO.

    Here is the unmodified LNB.

    Unsolder each end of the crystal and put it aside (I put mine carefully in the trash! Hey, it caused me a lot of grief over the past year chasing its drift!!).

    Here is what you are left with.

    Now is when we have some real fun.
    Go ahead and power it up on the dish and look at the output on the waterfall.
    You have a 50/50 chance of getting the coax on the right leg of the old crystal pads.
    Of course, I got it wrong and the waterfall was FULL of birdies and no ADSC signals at all.
    So, simply move the center of the coax onto the other crystal pad.

    Water prof the coax and you are done.
    Drift free!

    This little GPSDO clock is a.m.a.z.i.n.g.

    I just cant give Leo enough praise for making such a cool device.

    How you provide 5 volts to the USB input will depend on how you have your dish setup.
    I have a 12 core cable going to the dish to take the position indicator and up/down control, so have plenty of spare pairs to take the volts out to the GPSDO.
    The little GPS puck has a magnet on it, so attaches the dish frame just fine.

    We have been running with the setup since December and its been great not to have to worry about any drift at all.


  • Tracking Inmarsat 4-F3 with Node-RED

    This page is out of date.
    Please go to my GitHub site: https://thebaldgeek.github.io/

    For a year now I have been ‘tracking’ Inmarsat 4-F3 for my C-Band ADSC aircraft receiving ground station.
    It has been very crude tracking, but tracking none the less.
    I used a linear actuator with a position feedback resistor. Its worth noting that the position feedback is really critical. Without it you just don’t know where the dish is pointed.

    The actuator is very compact and was around 100 dollars, so not too bad in the over all cost of the project. Its worth noting that you can buy a version without the feedback resistor for about 20 bucks less, don’t skimp. You must have the feedback for this application.
    It is supposed to be lightly weather proof but even so I have it wrapped in a plastic bag to protect it mostly from the nightly runs of the irrigation system.
    Another thing of note is that the actuator is rated for 12 to 24 volts.
    At that voltage, it is way too fast for what we need…. so I have a 6 volt DC power supply driving the unit.

    Now the tracking.
    As you may recall from my main post on the subject, I knew from reading bit and pieces that the satellite makes a slow figure 8 in the sky over a 24 hour period.
    Here is what that oscillation looks like on a graph.

    You can sort of visualize the up and down and slide to side motion of the satellite over 24 hours.
    When we look at a heat map of what its doing in the sky, it all becomes clear.

    The satellite is up there in space, just over the equator, wobbling about.
    To do the initial tracking of it, I got some code help from my son….
    What we decided to do was to break the 24 hours up into 3 hour time slices and move the dish to a preset resistor location every time slice.
    I have removed the GUI so don’t have a screen shot, but it was a very simple grid of boxes that had the user entered resistor location for each time slot.
    Over a period of 2-3 weeks of me watching the signal strength in SDR# I got a feel for where each time slot needed to be and so tuned the dish tracking.
    It worked pretty good with one major flaw…. The satellite has an oh so slightly longer oscillation period than 24 hours.
    This meant that over the space of a month, I would need to re-tune all my 3 hour time slots (again and again).
    This was just way too high of a maintenance task for me.

    Node-RED to the rescue.
    There a group of three satellite tracking nodes; https://flows.nodered.org/node/node-red-contrib-satellites
    You can do a lot of cool things with them, but in the end we only need the one node. Since Inmarsat is not in its drop down pre-select list, we need the TLE node.
    Using the example flow on github you can pull down the TLE for any given satellite.
    Now we have the latest orbit parameters for the satellite we can now track it very accurately.
    (This is in fact how I got the above screen shots of the orbit oscillation and heat map).

    Every hour we run the orbit check and output the satellite position in x,y and z. (Note, I don’t use y or z).
    As you can see from the graph and the heat map, the longitude and altitude drift are not really enough for me to worry about (Or are they? Since I have only just got this going, I am still collecting data on if I should add another actuator and track azimuth well as elevation).
    The output latitude data simply goes into a range node which remaps the -3 to +3 deg swing to the resistor value in the actuator.
    The output of that node goes into the micro-controller which has some very simple code of making sure the resistor matches the commanded resistor value by switching the up and down motor relays.
    So, in short, every hour we send a resistor value that equates to the satellite position to a motor controller that measures the actual resistor value and adjusts it to match whats coming in.
    Here is what it looks like in action.

    Pretty easy to see where I turned on the new system. 8am Friday morning.
    Here is a week long graph that better shows how my tracking was working over the Node-RED tracking.

    It has transformed the tracking accuracy and will take the burden off me having to watch it and re-tune it.
    I can now just let it run knowing it is going to be super accurate all the time.
    To say I am very happy with how well it came together is an understatement.
    Why then did I not do it this way a year ago? I simply did not know about the TLE Node.


  • Thermal drift issues

    This page is out of date.
    Please go to my GitHub site: https://thebaldgeek.github.io/

    The feedhorn / down converter on the dish has a pretty bad thermal drift issue. The output frequency is just not stable. It wanders around all over the place.
    We have tried to settle it down by insulating it like thus;

    It helps, but eh, its not the best way to do it as it does run hot, but it chops off about 10 Deg C of drift.
    I think long term I might need some active temperature control, but that is only going to help so much. I think I need to see about a different feed horn.
    Very disappointed.


  • C-Band ADSC aka Satellite ADSB

    This page is out of date.
    Please go to my GitHub site: https://thebaldgeek.github.io/

    When you write it down, in one sentence, its really very simple;
    6′ dish -> PLL LNA -> 18v DC pass-through PSU -> RTL-SDR -> SDR# -> Jaero -> VRS.
    And with that signal path, you will have planes on a map. 100+ planes from half the planet. Easy right. Ah. It could be, but if you are reading this, you probably have hit some snags.
    Also, if you are reading this, you probably have an idea of what you are trying to do, so I will skip the intro and go straight to how I did it.
    And just to be clear, we are talking about ADS-C, not ADSB, but it looks so similar that many (me included) often get it mixed up.

    You can (apparently) get by with a 4 foot dish, but I did not want to be scrapping around in the noise, so opted for a 6 foot dish, the wife was not so excited, so we both compromised and went for a 5 foot dish. If I was going to do it again, I would go a 6 to 9 foot dish, anything bigger and the pointing accuracy is going to be a ‘problem’ and not worth the extra signal strength.

    The LNB (feed-horn) matters. You want something with low frequency drift, something that is temperature stabilized would help as well. If you find something that fits the bill, let me know.
    I was recommended this one; https://www.amazon.com/gp/product/B00HVM08JI
    Having nothing to compare it with makes it a bit hard, but the short of it is that its not really stable enough. The drift will put the signal out of range of the bandwidth every hour or so. You will be chasing the signal over a few hours. Okay for testing, but no fun for something that you just want to leave running unattended (which is my plan).
    The LNB has two voltages, 13 for one polarization, 18 for the other (horizontal and vertical for example). I did not have 13 on hand, so went with 21. A little on the high side, but it runs fine through 50 feet of coax. This is the one I used; https://www.amazon.com/gp/product/B005AME7Y8
    You need to make sure that your power injector can pass through a 1.5gHz signal, that is the down converted signal from the LNB.

    From the LNB power supply, you then have your RTL-SDR. Anything that will work at 1.5gigs should be fine for a test, but you really need something that is stable and sensitive. If you find something that works, stick with it.
    This is the one I am using; https://www.amazon.com/gp/product/B0129EBDS2
    Again, I have nothing to compare it with. (I just wonder if this is not the source of the drift I am fighting with).

    I chose to use SDR#, its free, simple to install and basic enough to do the job. Sure, you can get fancy and run some other software, but its mostly a headless setup, so simple is better.

    Once you have the signal, you need to decode it. I only know of one application that can do it, Jaero. Jonti’s work is amazing, be sure and give him a few bucks if you go this way.
    What you do with the information I will leave it to you. There seems to be two main paths, Plane Plotter or VRS (Virtual Radar Server). I went with the second option since that’s what I already run (I also run PP, but not to the same extent as VRS).

    Ok, so that’s the easy part, now getting it to all play nice together and get planes on a map……

    We bought the dish new off eBay. it arrived, free shipping, in two weeks from Canada.
    Took me about 2 hours to put it together, seems pretty straight forward. If I had to do it again, I would get at least 6 foot and something that mounts on a pole, not a base.

    The LNB was brand new from Amazon. Long story short, it was faulty. I spent a week working with it for hours and saw nothing but static.
    One evening I just gave up and voided the warranty and opened it up. Sure enough, it had a dry joint and was open circuit on the input. A quick touch with a hot soldering iron and put it back together (interesting note aside, the heat sink is there for looks only, it has zero contact with any parts – made me smile a little).

    After spending a week looking at nothing but noise, once I powered it back up I was met with wall to wall signals, it was very exciting and a big ups that I was not losing my mind.

    SDR#. Install it and run it.

    Now the really hard part. What frequency should you tune for? In the end, I could not really find a solid answer since it depends on the down converted frequency of the LNB and the specific satellite you are tuned to. I am looking at Inmarsat 4-F3.

    There are a few lists floating around, but they did not agree and in the end it was a single screen shot on Jonti’s website that got me close.
    it helps to look and see what sort of waterfall pattern the adsb messages makes as well. I mostly went by visual on the waterfall more so than the frequency.
    I wish I had something more solid to give you than ‘look for this pattern’, but that’s really what it came down to. I just could not find anyone that had documented the frequencies for the different sats with the LNB I was using.
    Here are some examples from my setup.

    This next one is a bit more zoomed in on the frequency scale and shows you both the frequency I was tuned to and what the waterfall looks like.

    Now for the next hard part. Aiming the dish.
    A few things to try.
    You can get a compass and inclination meter and point it using those. Not a bad way to do it, and I got in the ball park with this method, but it was not really accurate enough. BTW, the metal in the base will throw things off, so use a plank of wood to extend the dish and put the compass at the end of the wood to get more accurate.
    You can also use one of the satellite aligning apps on your phone. I also did this and found it really good.
    Here is a screen shot looking next to the satellite. (I found the arc of geostationary satellites really fascinating).

    The third way takes a little more gear, but is rather interesting (thanks again go to Jonti for his description of this method), disconnect the LNB and put a modified GPS patch antenna at the center of the feed horn and tune your SDR to the L-Band signals coming from the sat. Now you can pretty easily move your dish around for peak signal from the sat.
    Here is some of the gear I used to test this.
    GPS patch antenna, LNA and bias T injector.

    Here it is on the feed-horn.

    I also did this to see what it was like and it works pretty well.
    So in the end, I used all three options to get the dish pointing in the right rough direction.

    By now, you should have a pretty solid waterfall of signals, find the short staccato signals and start to tweak things for maximum signal.
    One important thing to note, Jonti mentions that I would need the bit of dielectric stuffed in the feed-horn to turn from direct (horz or vert) polarization to circular. He is right. Listen to him. The key is to get it inserted the correct way, there are two ways to put it in, they are 90 deg to each other (up and down or left right if you have the ‘heat sink’ uppermost).
    Make sure you test both ways. One way will make the signal weaker, the other way will make the signal stronger. No dielectric will be somewhere in the middle. You clearly want the strongest of the options.

    Hone in on a likely looking signal and fire up Jaero and see what gets decoded.
    As far as setting it up for the basics, you need to select 10500 bps burst and I found the best decoding to happen when the locking is set to 1800 or 900 hz and AFC is on. (Note, this may or may not make much of a difference. But please experiment with it. I am finding some differences but need more time with it testing).
    Set SDR# to 10500 bandwidth (or wider, but not narrower) and USB.
    You should start to see ACARS data. If in the SU’s tab you see a LOT of ‘Bad R/T Packet’ messages, you are close, but don’t have things setup quite right. Go back over my notes and take a look at my settings and yours.


    IMPORTANT NOTE. In this screen shot I have ‘Locking’ set wrong. It should be 1800 or even 900.

    Once you are getting good clean ACARS data you should straight away notice that you are getting a lot of reports with Lat/Long in them.
    We can push these messages to another bit of software and get the final goal of all this, planes on a map.

    If you are using Plane Plotter, Google will guide you. I cant help.
    If you are using VRS, here is how you set things up…..

    Jaero is a little ‘odd’ in that you set the Basestation address to be 0.0.0.0:30003. You can change the port number, but you MUST leave the IP address to be all zeros.
    This is the odd bit and cost me a ton of time, but in the end, Jonti himself set me straight in a very kind email.


    (Note. In this screen shot I have the ACARS option ticked and its going to the same PC as VRS on a different port number. You wont need to do this for just ADSB.
    I am also interested in looking at the ACARS data in Node-RED. Read about it on my aircraft page.)

    In your VRS then, you need to put the IP address of the PC running Jaero (assuming its on a different PC, if its the same, then its just 127.0.0.1 and the port number) and the port number you picked.
    Of course the type has to be Basestation. Tick the box, ‘Is Sat-com’ to give yourself the longer time out.

    Ok, Phew. By now you can take a breath and check out some amazing data flowing in. You should, within just a few minutes (yes, it really does happen that fast) see planes from all over the world (just about). The foot print of the satellite is amazing.

    Want to double the amount of data/planes you are getting?
    Notice that there is another ADSB signal next to the one you are on….. If you tune over it you will see much the same ACARS/ADSB data but from different aircraft.
    Install the VFO plugin for SDR# and also install VAC (Virtual Audio Cable).
    Now you can set 1 cable for the main frequency and 1 for the VFO.
    Now copy paste a second instance of Jaero on the desktop, right click and set its properties to be -s line2 and now you can start another instance of it and have double the messages.

    Here is the key, you cant run them both on the same port number. The second instance still must be 0.0.0.0 but the port number MUST be different for each instance.
    So set up a second receiver in VRS and make sure you are getting another set of data / aircraft.
    Then set up a merged feed with the two feeds into one to see the total of the two frequencies.

    To-do.
    1. The output of the LNB drifts. I don’t know if its due to temperature, PLL instability or Doppler from the sat moving or drift in the RTLSDR. At the moment I have to tweak the VFO in SDR# a few times a day. This will not do. I need to solve this asap.
    2. The satellite drifts in a slow figure 8 pattern. The dish needs re pointing a few times over 24 hours. At the moment, it looks like just in elevation. I have a linear actuator on order and will see about automating it as a matter of some urgency.

    Hope that helps. I have written what I found scatted all over the place, a lot of what was not written anywhere and the rest is what I wish was written down somewhere.

    UPDATE 1. May 2020. After about a year, I figured out how to accurately track the satellite.
    UPDATE 2. June 2020. I fixed the drift issue and finally blogged about it. https://thebaldgeek.net/index.php/2020/06/07/titanium-c1-pll-lnb-gpsdo-modification-for-c-band-adsc/


  • Noisy computers?

    We have been interested in building a one stop shop website for all things aircraft tracking and decoding for some time.
    To this end we have put up a satellite dish to get Inmarsat messages, 136mHz antennas for ACARS and VDL data and for HF we have been running an Alinco receiver.

    Everything has been working great, but I have always struggled with a really high HF noise (static) floor. It massively impacts my ability to pickup and thus decode the weak signals coming from the aircraft all around the world (the radio at this frequency – 6mHz – can hear aircraft from pretty much around the globe). I have been tinkering with the antenna and noise suppressors and all sorts of things, but it has always not been great.

    The last straw was when this guy commented about my HF reception;
    http://forums.radioreference.com/threads/adsb-acars-vdl2-data-decoding-website-for-southern-california.383104/#post-3068413
    (At the very bottom of that thread/comment.)
    1% of the traffic. Ouch.
    But he was right, I had a feeling I was not doing great. Getting around 70 messages a day from aircraft.
    I honestly suspect any one or all of the 90 or so computer devices that are running 24×7 at the house.

    Anyway, buddies to the rescue.
    I have been chatting with two guys from Phoenix a fair bit and one of them is big into both aircraft and HF and he also noticed that he was getting more traffic than I was, but he lacked the computer skills and gear to decode them.
    So yeah, we made a deal. If he picked up the signals, I would decode them.
    Thus he has dedicated one of his radios to aircraft and I wrote some code to transfer the raw data from his place to mine where I do further decoding and display it on my website.

    BOOM! I cant believe it but we went from 70 a day to 3000+ a day.
    A.M.A.Z.I.N.G!
    We are now almost drowning in lovely lovely aircraft data from around the world.
    Both he and I are thrilled.

    You can see the data here; https://thebaldgeek.net:2880/ui/#!/5
    Its been running great for the week or so and neither of us see why that won’t be the case for a good while longer.