Feeding data to ADSB sites from dump1090-fa on a remote host

I recently bought a new Raspberry Pi 4 to, among other things, do a better job of feeding ADS-B data. I installed Raspberry Pi OS Aarch64 (ARM64) for the superior performance, but I ran into a conundrum: while dump1090-fa supports running on arm64, all of the ADS-B feeder applications (fr24feed, piaware, adsbexchange, opensky, etc) only support armhf architecture. But my old Raspberry Pi Model B (gen 1) wasn’t going anywhere, so rather than compromise on performance with my new Pi, I configured my old Pi to remotely feed the data to the different services. All of the below assume you have an existing, working ADS-B setup, and you’re only wanting to remote feed like I am.

First, I moved over my RTL-SDR dongle and installed dump1090-fa on my new RPi 4

wget https://flightaware.com/adsb/piaware/files/packages/pool/piaware/f/flightaware-apt-repository/flightaware-apt-repository_1.1_all.deb
sudo dpkg -i flightaware-apt-repository_1.1_all.deb
sudo apt-get update && sudo apt-get install dump1090-fa
sudo reboot

Now it’s time to reconfigure my feeder apps.

PiAware

Modify the following config file:

/boot/piaware-config.txt

Leave most of the existing contents there, but alter the following lines to instead read:

receiver-type other
receiver-host <IP of the new Raspberry Pi>
receiver-port 30005

Save the file and exit.

FlightRadar24

Modify the following config file:

/etc/fr24feed.ini

Change the host line:

host="<IP of the new Raspberry Pi>:30002"

Save the file and exit.

RBFeeder

Modify the following config file:

/etc/rbfeeder.ini

Under the [client] section, change this line:

network_mode=true

Under the [network] section, change these line:

mode=beast
external_port=30005
external_host=<IP o the new Raspberry Pi>

Save the file and exit.

AdsbExchange

The config file can be found here:

/etc/default/adsbexchange

You’re probably detecting a pattern. In the config file, change any instance of ‘127.0.0.1’ or ‘localhost’ to the IP address of the new Raspberry Pi.

Planefinder.net

  1. Open this URL in a browser: http://<old device IP>:30053/
  2. Click Settings
  3. Login to Planefinder.net. Go to the Receivers page, click your Receiver, and click the Configuration tab. You will find your Share code. Use that to Enable Configuration Mode on the Settings page on your local device.
  4. Accept your existing Share Code and Latitude/Longitude.
  5. Select the Beast receiver format, enter the <new IP address> and enter port 30005
  6. Click Complete Configuration

Opensky-Feeder

Run the following command to reconfigure opensky-feeder:

sudo dpkg-reconfigure opensky-feeder

The following should be pre-filled for you, as you go through the prompts:

  • Latitude
  • Longitude
  • Altitude
  • ‘default’ device type
  • OpenSky username
  • Existing Serial Number

For Dump1090 Feeder port: 30005

For Dump1090 Feeder host: <new Raspberry Pi IP address>

Conclusion

Reboot the old Raspberry Pi with sudo reboot

After booting back up, the old Pi is now feeding data from dump1090 on the new Pi!

Let me know if there are any ADSB feeder networks I’m missing in the comments below.

For GOG on Linux, use Minigalaxy

For other Linux gamers wishing GOG Galaxy had a client for Linux, there’s an open source project that provides most of the critical features, namely easy download install and updating. It’s called Minigalaxy and available for most distros.

It even allows you to install Windows-only games via Wine, and assuming you have DXVK configured for your Wine instance, I’ve found many games play reasonably well out of the box.

To install it on Fedora, simply enter: sudo dnf install minigalaxy
Then launch it, enter your account credentials, and you’re ready to go.

Find it on GitHub here: https://github.com/sharkwouter/minigalaxy

2020 Chevy Bolt EV

My 12 year old Nissan Versa has been getting on in years, so it was time for a new car. Since our rooftop solar system is over-performing expectations and we’ve established a pretty significant power credit, and because there’s free charging at my office, we wanted to go full electric.

The electric vehicle with the best price for a 250+ mile range available in Arkansas is the Chevy Bolt EV. Alternatives would be the Hyundai Kona Electric or Kia e-Niro, but Hyundai and Kia refuse to sell or service electric vehicles in Arkansas. While a Tesla might be nice, they’re not a great value for the price, I can’t get it serviced locally, and there have been many headlines about questionable and inconsistent build quality.

For under $25K, I was able to get a 2020 Chevy Bolt EV LT with Driver Confidence I and II packages, and the Comfort and Convenience package, essentially the fully-loaded version of the standard trim.

It’s a quiet, comfortable, speedy little car. The instant acceleration is impressive, the storage space is solid, and it’s nice to have modern conveniences like Android Auto.

The dealer sold it to me with only 20% of a charge, but there was an Electrify America charging station 30 miles down the highway on my way home.

Home Rooftop Solar Panels in Arkansas

My spouse and I have wanted to reduce our carbon footprint and utilize renewable energy for a while, but it had to make sense. Our utility provider offers a “renewable investment” where we invest $$$ into their renewable implementation and we get X% off our bill – but this never made financial sense, it would never pay for itself. So we looked into installing rooftop solar. Our setup makes financial sense while also reducing our carbon footprint. Going Solar is Arkansas is definitely do-able.

The System

LG335N1C-A5

The panels are LG NeON 2 High-Efficiency 335W 60-cell photovoltaic solar panels. Total output capacity of the system is 8.04Kwh. The panels ratings include for high wind and baseball sized hail, which are important considerations in my region. They come with a 20-year parts guarantee, 25-year performance guarantee, and they are rated to produce 90% of their original output when they reach the 25 year mark.

Our system is grid-tied, meaning we supply our excess power generation into the grid, which accumulates as credit, and we pull on that accumulated credit at night, cloudy days, or seasons with higher utilization (like summer).

22 panels on the west roof (photo taken after 5pm)

Most of our West-facing rooftop is unshaded year-round, so there we have 22 panels, but for a 100% electricity use offset we needed 2 more panels. We had the option between placing panels in the Southwest corner of our roof and accept that they would be shaded during peak solar hours through portions of the year, or we could put the 2 panels on our South-facing gable over our garage, where they would be shaded through some of the morning but have more peak hours year-round. We went with the latter plan, so 22 panels on the west roof and 2 on the garage.

2 panels on the garage

The panels are mounted through the roof on railing that keeps them elevated from the roof, allowing them to stay cool while they absorb sunlight. The railing is also necessary to distribute the weight of the panels evenly on the roof. The panels themselves, by keeping direct sunlight from reaching the roof, should also help reduce indoor heat accumulation during warmer months.

Roof mounting during installation

Each panel connects to an Enphase IQ7 Microinverter underneath, and the wiring runs through the attic and to the Enphase control module near the electric meter.

Photovoltaic control system

Electricity goes both directly into our home and any excess goes into the grid. The Enphase control system tracks system production and grid utilization to provide realtime and long-term statistics on grid net usage/contribution. This information is directly available to the consumer through the Enphase Enlighten website and mobile app.

For those with more of a DIY/devops disposition, the solar controller has an undocumented API that some on Github have found ways to tap into directly. You can see my real-time solar production stats here.

Installation

There isn’t much to tell here.

  • We signed for the system in early/mid February.
  • February through March: The installers went through the regulatory approval process with the city and the POA.
  • Late March: physical installation completed in 1 day.
  • Mid April: the city inspected the installation.
  • At the end of April: the power company inspected the installation and installed the net meter.

Cost and Return on Investment

My Enlighten lifetime production statistics for the past 3 weeks

In the 3 weeks since starting, we have produced nearly 645kWh, and netted 356kWh into the grid. The goal is to net a decent excess of electricity in the Spring, so that in Summer there is credit to draw on in the event that production doesn’t cover the utilization created by air conditioning. Our installation didn’t complete in time to maximize that timetable for this calendar year, but we still seem to be on track to avoid large electricity bills this summer.

Total cost for the system, before the 26% Federal tax credit in 2020 and any sales incentives, is $33,305. The state of Arkansas allows for 20-year zero-down solar loans. During our first few years our solar payment will be only slightly higher than our previous average monthly electric bill.

With normal regular rate increases from the utility company, our prior electric bill would have exceeded our flat solar payment in approximately 7 years. That makes our return on investment occur somewhere near year 12 of owning the system. The solar loan requires that, to keep to our current monthly payment, we redirect our Federal solar tax credit into the solar loan to reduce the principle cost of the system.

Thanks to Arkansas’ generous 1:1 net metering rules, all excess power that we generate and do not use becomes a full per-watt credit on our account. With our particular power company, if we maintain a credit for 24 months, we can request a check for the wholesale rate of our excess power generation.

Our solar installation makes financial sense and has a sound return on investment, while also reducing our carbon footprint. Prohibiting factors for you going solar would be shade, minimal electricity usage, or exceedingly high electricity usage. I think higher usage actually makes it easier to go solar as a quicker return on investment, but the upfront price tag might be higher than most want.

With home appliances always becoming more efficient, and our system rated to produce 90% of its original output in 25 years, this system could last us for the rest of our lives.

Installer: Performance Guarantees and Service

For the installation of our system, we used SunPro out of North Little Rock. We chose them because:

  • SunPro guarantees the annual production of the systems they install, or they pay you the difference
  • They use top-tier panels from LG and offer them at the best prices
  • They guarantee the quality of their work for 20 years
  • SunPro’s parent company also does roofing, so they have a separate income stream from solar
  • SunPro has the largest footprint across the Southern United States for solar installers
  • Despite not living near Little Rock, their installation team was just as available and prompt as if they were local

SunPro also has a potentially lucrative referral system, where they will give both the referrer and the new customer cash just for taking a meeting, no obligation. If you’re interested, feel free to email me at erik [at] thespecter.net

To answer the most common questions I get:

  • So what happens if you need a new roof? The installers will take the panels down and store them for a flat rate, then put them back up when the roofing work is complete.
  • Why don’t you have batteries, isn’t the point to be off-grid? While many people do install solar panels to be off-grid, and solar companies will gladly sell home batteries to you, it doesn’t make sense as a financial return on investment. Batteries will double the cost of the solar installation.

Side-note: If you are interested in having some amount of off-grid power power during power outages, and have no shading potential, the SMA Sunny Boy line of string inverters offer 1 electrical outlet that can be powered directly from the panels. Some think of it as a gimmick, but I could see it being handy to charge phones or other emergency item during a power outage. As long as there is sunshine.

Enabling amdgpu on Fedora 31 for using Vulkan with R7 and R9 Radeon cards

For the AMD Radeon R9 390, Fedora will, by default, use the open source driver ‘radeon’ – which is generally sufficient for average workloads, but if you want to game, or want to use Vulkan, you probably want the AMD-written open source driver ‘amdgpu’. It is not just a matter of installing the driver, and some extra configuration will be required to utilize this driver for graphics cards in the Southern Islands and Sea Islands family of AMD cards, since support for these models is considered experimental.

The solution also varies depending on whether your card is Southern Islands or Sea Islands.

Card FamilyModelsModule Parameter
Southern IslandsHD7750-HD7970, R9 270, R9 280, R9 370X, R7 240, R7 250amdgpu.si_support=1
Sea IslandsHD7790, R7 260, R9 290, R7 360, R9 390amdgpu.cik_support=1

First, determine which kernel driver is currently in use: lspci -k | grep -EA3 'VGA|3D|Display'

If your Kernel driver in use result says amdgpu you’re working, there’s nothing for you to do except install Vulkan (if that’s your goal). If your result says radeon, read on.

  1. Install the amdgpu driver, along with Vulkan (both x64 and x86): sudo dnf install xorg-x11-drv-amdgpu mesa-vulkan-drivers.x86_64 mesa-vulkan-drivers.i686 vulkan-loader.x86_64 vulkan-loader.i686 vulkan-tools
  2. If you plan to use Vulkan with Wine: sudo dnf install wine-dvxk.x86_64 wine-dvxk.i686
  3. The GRUB Bootloader needs to be modified to (a) disable the ‘radeon’ driver for your card and (b) enable the module parameter for amdgpu. Edit /etc/default/grub append one of the following inside the quotes on the GRUB_CMDLINE_LINUX line:
    • For Southern Island cards: radeon.si_support=0 amdgpu.si_support=1
    • For Sea Island cards: radeon.cik_support=0 amdgpu.cik_support=1
  4. Build the GRUB config:
    • For EFI systems: sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
    • For BIOS systems: sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  5. Reboot.

If everything went according to plan, after reboot you should be able to login and run vulkaninfo without errors. Now you can install Lutris, use Proton on Steam, or do any of the other things that Vulkan allows.
If your GUI doesn’t load after reboot, you can restore your machine back to the previous configuration by pressing CTRL+ALT+F2, logging in, editing /etc/default/grub to remove the added text, and running grub2-mkconfig like before.

These instructions are intended for Fedora Linux, but with some minor modification to the grub2-mkconfig command, and substituting your package manager for dnf, you can probably adapt them to other Linux distributions.

For additional information, refer to the Arch or Gentoo wikis.

G Suite: Whoops! There was a problem loading more pages

Recently, a rash of users have received this error when trying to view more than the first page of a PDF in our corporate Gmail:

Error when viewing second page of PDF in Gmail

This problem started to appear toward the end of July 2019, and by mid-August it was company-wide. This timeline corresponds with the release of Chrome v76. Chome v76 introduces a change to Cross-Origin Requests, and while this change introduced some trouble for a number of Chrome Extensions, it can also negatively impact corporate G Suite environments who utilize certain restrictions in the Google Admin Console.

How to Fix this Error

First, verify that this is, indeed, the problem.

  • Open an email in Gmail with a multi-page PDF attachment, but do not click the attachment yet
  • Press CTRL+Shift+I to open the Developer console, and click to the Network tab
  • Click the PDF attachment and look at the results in the Network tab
  • One of the Red items that appear on the list should contain:
Access to XMLHttpRequest at 'https://drive.google.com/viewerng/upload?ds=docstring' from origin 'https://mail.google.com/ has been blocked by CORS policy: Request header field x-googapps-allowed-domains is not allowed by Access-Control-Allow-Headers in preflight response.

If you see the above, then this solution will work for you. To explain, settings exist in the G Suite Admin Console which can restrict the ability of a Chrome user, with Sync turned on, from logging into secondary accounts outside of an allowed set of domains. The requests to the Google Drive PDF viewer from Gmail come across as generic and not specific to your domain, and thus Chrome refuses to render the document. To solve the problem, this restriction in the Admin Console will need to be disabled by an administrator in your G Suite organization.

  • Open the Admin Console
  • Navigate to Devices – Chrome management – User and browser settings
  • Find Sign-in to secondary accounts and set it to Allow users to sign-in to any secondary Google Accounts
Allow users to sign-in to any secondary Google Accounts

Your organization more than likely utilizes a web filter, DLP platform, or firewall to restrict sign-in settings anyway, so this setting will do no harm.

How to block a DNF package update on Fedora

You know the new version of a package is a buggy mess and you don’t want to update, or you manually install an rpm that exists in the repos but you really want to keep the version you installed. There’s an easy way to do that!

Edit (as root) /etc/dnf/dnf.conf and add this line:

exclude = packagename1
exclude = packagename2

Save it. The next time DNF updates, your package won’t be updated! This will work with any distribution that uses DNF (Mageia, future versions of CentOS).

Android 9.0 Pie available for LG G7 ThinQ

Finally, Android 9.0, which was released a few months after the LG G7, is now available to download for the G7 – nearly a year later.

The update for the LM-G710ULM model (US Unlocked, used by Google Fi) can be obtained immediately through LG Bridge, or you can wait for the OTA update in the upcoming weeks.

“Android OS Upgrade” – great detail in those release notes, LG

Crouton broken by Chrome OS security update – here’s a fix

A security update in Chrome OS 73 patches a security hole used to run the Crouton script. Luckily, it’s easy to work-around with a simple permission change on the Crouton file.

  • Use CTRL+SHIFT+T to open the terminal window like normal.
  • Then type shell like you normally would.
  • Enter the following to alter the permissions in order to allow you to run the Crouton script:
sudo install -Dt /usr/local/bin -m 755 ~/Downloads/crouton

You’re done! Now you can update Crouton or install targets as you would normally.

My article on how to setup Crouton and Steam on a Chromebook has been updated to reflect this change.

February security update for LG G7

The US Unlocked LG G7 ThinQ has received the February security update for Android. G710ULM

I’m not optimistic that LG will get the Android 9.0 Pie update out before the end of Q1 like they promised, despite the fact that it was already released in South Korea in January. In fact, the Korean software has just received a feature update and bugfix release. LG treats the world outside South Korea as second class customers and then wonders why their mobile division operates at a loss.