Category Archives: Raspbian

MPPT Solar Battery Charging in the Arizona Desert

I’ve got a 125 W solar panel feeding a 12 Vdc 85 Ah deep cycle battery at a comms site in the southwest Arizona desert. I’m using a Rich Solar MPPT-20 solar charge controller (SCC), which so far appears to be doing a great job. The load on the battery is a Raspberry Pi with two NESDR Smart radio dongles, running software called RWMon, and decoding ATCS indication messages being sent from railroad control points along the I-8 corridor, but that functionality isn’t the subject of this article. It’s the battery management that’s the thing!

Figure 1 – 24-Hour Battery Voltage

It’s a tough environment out there in the desert, and determining an appropriate energy storage technology is part of the challenge. I settled on a lead-acid battery, mainly because it tolerates higher working temperatures, and since there are plenty of charge management devices that understand lead-acid chemistry really well.

In Figure 1, battery voltage is shown over a 24-hour period. This particular 24-hour period was dead clear during the daylight hours, so the curve is very clean.

Figure 2 – Manufacturer’s Chart on Battery Charge Management

Figure 2 is the chart right out of the Rich Solar MPPT-20 charge controller manual. From about 0700 (the sun begins to directly illuminate the panel) to around 1130 the SCC is in the fast charge mode. From 1130 to about 1330 the SCC is in the sustained charge mode; from 1130 to 1730 the SCC is in float charge mode. It’s nice to see that the real-world situation replicates the manual pretty accurately.

There are other nice things to discuss about this SCC, including very low RFI generation, that future notes will touch on.


I realized that I also have for the same setup the voltage characteristics for the PWM SCC that I had out there last month before switching to the MPPT unit.

In Figure 3, the units are wrong, but the curve is the important bit.

Figure 3 – PWM SCC Voltage Curve

Here, it’s a much cruder controller, but the same kind of curve is evident. The drop off from boost to float is a very slow ramp, that’s probably not as good as what the MPPT does.

Summiting White Tank East (radio site visit) 14APR18

For the White Tank peaks, I’m lazy. I can get the key and drive. This morning I went up to check on the radio site on the east ridge where I have an ADS-B receiver and a railroad data receiver setup. The Windows PC there had apparently died a while back, the ADS-B link failed at the beginning of April, so it was time to fix things.

Time-lapse video of the drive between I-10 Verrado offramp to and from the peak

The cool thing about the White Tank road is it goes through the old Caterpillar proving grounds, where they pitted Caterpillar bulldozers against the mountain. And the White Tank road was part of the testing arena.

Verrado’s north end currently ends at the golf course; the tower road is the wide diagonal that heads northwest into the narrows up-canyon.

While Verrado continues to inch its way up the lower portions of the road, it’s unlikely it’ll ever get up this far. This what I call “the bowl”, where Caterpillar dozers not only moved millions of tons of rock back and forth for test and fun, but also cut the 20%-grade, ~0.6 mile long ramp that climbs north out of the bowl and then descends into the White Tank park boundaries.

On this fine day, there’s plenty of people walking the ramp. It’s windy as heck out, and the temperatures are in the mid-50’s, but the sun is warm.

Hauled out the dead PC. Am rebuilding it now to put back on the hill in the next week or two.


American AAL1920 ADS-B Capture

Living next to a large hub airport, and having a good view ADS-B-wise of the airport and a to 200+ nm around it, I get to see flights come into PHX, unload and load, then take off. Case in point: AAL1920.

The route it’s currently on is LAX-PHX-MIA. My ADS-B receiver first heard its beacons when it climbed over the Santa Ana mountains in Orange county. It’s now approaching Deming NM and it should drop off my display very soon.


Total time recorded is almost 2-1/2 hours, and nearly 9000 position reports.

When zoomed in on Sky Harbor, the path is


What I find interesting is that as the plane was on final landing to the east (right), it did a little bump in the path just a few miles before the runway. Why? Avoiding a PHX PD copter? Dunno.


Once it landed (rwy 8R), it taxied to the even-number side of the A15-A30 part of Terminal 4. Kinda looks like gate 16 or 18.

After loading up its passengers, it taxied out and took off to the east on runway 8L.

Adding Real Time Clock to Raspberry Pi

Added a Sunfounder DS3231 RTC to my Raspberry Pi 3 running weewx.

The following helped me with understanding how to

After a reboot before step 9 in the following, I then completed the rest of the steps through 14 and get the following:

pi@raspberrypi:~ $ timedatectl status
Local time: Sun 2016-10-30 14:44:09 MST
Universal time: Sun 2016-10-30 21:44:09 UTC
RTC time: Sun 2016-10-30 21:44:09
Time zone: US/Arizona (MST, -0700)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a

I have not disconnected it from the network yet to see if it’s really working, though. Will have to reconfigure my setup to have a console connection rather than an SSH.

Nice filter for 1090 MHz ADS-B site

Over a year ago I decided that I needed some good filters for ADS-B reception on mountaintops. Not that I had an immediate need, I didn’t have anything on a mountaintop, but I suppose I had a little extra cash and felt excited to be able to imagine a good ADS-B receive site atop an Arizona mountaintop (or hilltop) location. So, I drafted up what I thought would be a reasonable spec and went into Alibaba to find a filter manufacturer to build one. I ended up with 5 filters, all exactly to my spec, and for a bargain price (well, relatively speaking).


Above is the finished ADS-B receiver assembly, complete with Raspberry Pi, RTL-SDR 1ppm TCXO SDR dongle, a eBay-purchased LNA, an eBay-purchased 12 vdc to 5 vdc DC-DC converter, and some coaxial cabling (also from eBay). The black square in the center of the image is the 1090 MHz filter, and it’s a quite good one.


It’s a straightforward cavity filter, a little aluminum brick with fine performance.


Solid out of band rejection, and I suspect around -100 dB ultimate rejection. The SA just doesn’t have the range to see it.


While the signal of interest is only a MHz wide, I wanted a filter that was wider so that temperature and mechanical variation would never haunt me, and I wanted a low bandpass loss (the above shows less than 1 dB loss) across the band.

Behind the filter is a run-of-the-mill eBay wideband LNA with a 1 dB NF, and somewhere around +30 dBm IP3. The RPi is running the most current version of FlightAware’s PiAware, rev 3.0.4, and supports just about any off-the-shelf USB SDR dongle.

After setting it up, it looked like I needed to reduce the overall gain a bit, so I discovered how to go into dump1090 and change the gain from “automatic” (really not, I think it’s just max) to 42 dB. That gave me best range and most received a/c.

The antenna for the site is a FlightAware fiberglass stick, about 12′ above the ground, mounted on the side of the tower.

HeyWhatsThat_30aug16Coverage seems to be pretty close to the model generated by (above). The blue line is the 40,000′ contour, while the orange line is the FL300 contour.

24 hours or so of actual flight logs produces the following plot, which is more or less pretty similar to the HeyWhatsThat plot.


The primary notch in the pattern, in the SE, is the higher part of the ridge on which the radio site sits. It ends up blocking any coverage of flights in and out of Tucson, over 110 miles away, until said flights get to FL300 or so.

It will be interesting to see how the coverage shapes out over the next few weeks – I hope that it will get up near the top of all the local receive sites in performance.

ADS-B Update

Installed an ADS-B receiver up on White Tank Mountains over the weekend. Coverage seems pretty darned good, and I lose a/c only when they’ve gone about 1.5° below the theoretical horizon.

Below is a screenshot of the display. The a/c out beyond the 200 nm range ring are all at FL300 or greater, but at least according to, they’re all significantly below the local horizon from White Tank.


Also seems that I have about a 10 dB dynamic range on the receiver. Signals are never stronger than about -1.6 dBFS and I always lose the a/c when the signal drops below about -12 dBFS. Using, it’s very apparent when it drops out.

Here’s AAL110 headed NE from LA. I lost it as it was about due east from Cedar City UT.


The RSSI is below the minimum required for this particular station to decode successfully. Not that the a/c is over 220 nm distant, but it’s at FL410. So why did it suddenly fade out? HeyWhatsThat gives an indication.


From this plot, it’s obvious that the a/c, even at 41k feet altitude, is well below the local horizon and the actual path is probably ducting or multiple knife edges. Either way, it seems to explain for me why I can’t hear farther than this even with the receiver atop a significant “hill” in the Phoenix area.

ACARS monitoring

I’m trying to get a handle on the amount of traffic that there is on the various many ACARS channels that seem to be in use. In a previous post, I counted 20 channels and that information was from a few different sources.

So i pointed the output of acarsdec to a text file, and let it capture almost 82k messages over the 7.6 day period from 4 Jun to today. Due to the maximum instantaneous bandwidth limitations of acarsdec and the RTL-SDR dongle, I decided to focus on the following

130.025 130.425 130.450 130.825 131.125 131.425 131.550
71.8% 0.0% 0.2% 0.0% 0.0% 0.0% 27.8%
49621 20 172 18 2 31 19211
4.54 0.00 0.02 0.00 0.00 0.00 1.76

As can be seen, the vast majority of ACARS messages on the 7 channels scanned over that 7.6 day period are on only 2 channels, 130.025 and 131.550. Row 1 is the channel frequency, row 2 the percentage of messages received on that channel, row 3 the absolute message count for that channel, and row 4 the average messages per minute on that channel.

Now I’ll change the channels and do another run to see if there is more activity elsewhere.

Decoding not one, not two, not three, but four ACARS channels on one USB SDR Stick!

ACARS (Aircraft communications and reporting system) monitoring has never been easier. Used to be one had to set up an AM aviation receiver or scanner and feed the audio output into a computer soundcard to receive and decode the 2400 baud ACARS packets. As well, since there are well over a dozen possible AM VHF aviation/airband channels where ACARS might be found, it was a real nuisance to scan. Even fast scanners listening to only a few radio channels could capture only a portion of the messages transmitted. Not any more!

Now acarsdec is available, and works incredibly well. An extremely neat feature is its ability to listen simultaneously (not sequentially, but really in parallel) to up to four channels in any 1 MHz piece of radio band, decode all packets heard and UDP them to an Ethernet address of your choice.

I used to have two Radio Shack PRO2052 scanners, each monitoring 4 ACARS frequencies, a sound card for each, as shown on the right in the following diagram from 2006.

N7UV_Main Station_ACARS-APRS

Back then, the antenna was a pair of dipoles, one horizontal, the other vertical, with a 90° phasing line in-between, providing an antenna with circular polarization for improved reception. I tested acarsdec against a scanner monitoring the same 4 channels, and acarsdec won hands-down.

Since acarsdec can monitor only 1 MHz continuous spectrum, I’ve set one up to listen to 136.700, 136.750, 136.800, and 136.850 MHz ACARS channels. The vast majority of traffic is on 136.850 MHz, but every once in a while I hear something on the other ones. I wish I could monitor a set of channels spaced more widely, but this is pretty darned good as it is!

ADS-B and PiAware

I’ve been experimenting with PlanePlotter, acarsdec and a bunch of other things recently, and have had to hack my way to a whole new level of incompetence with Linux in the form of Raspbian.

One important thing I just learned was the system flow diagram for dump1090 and piaware.

At least now I understand better how messages flow within my setup here, and am starting to learn more about the different ports on dump1090 and piaware, and how mlat (multilateration) works using the aggregation of other piaware receivers through the FlightAware servers.

PlanePlotter, however, is a whole new can of worms, perhaps interesting worms, but worms, nonetheless.