10 Sep

APRS With A Baofeng UV-5R Radio

APRS is a popular amateur radio protocol for basic digital packet communications.  It’s commonly used for transmitting ones position, but has many more uses.  It’s often incorrectly thought to mean Automatic Position Reporting System, but actually stands for Automatic Packet Reporting System.  For more information on APRS, you can visit the main site from the creator at aprs.org.

I started to play with APRS using the Android app APRSdroid, a cheap connector cable, and a Baofeng UV-5R.  This was quite frankly a disappointment for a number of reasons I’ll outline in another post here.

Disappointed with that first foray into the world of APRS, I ponied up some more money for a TinyTrak4 from Byonics.   This device is actually pretty neat and powerful in that it can perform many different functions.  I ended up having the most success with the Baofeng UV-5R and the TinyTrak4.  I’ll write about my setup in detail in another post here.

Next, I’ll discuss at a high level what I learned with the Baofeng UV-5R and APRS.

Lessons I learned about APRS with the Baofeng UV-5R

You should know this, but a $25-30 dollar radio is not going to be a great radio, not even a good radio when you compare it to radios that are an order of magnitude more expensive.  I won’t get into that argument here, but I had one laying around that I didn’t mind abusing or leaving in the car or outside during testing.  There are definitely some limitations with the Baofeng, but I also had some pretty good success.

What worked well

Transmitting APRS position with the TT4 (which controls the radio PTT) worked well.  With an external antenna on my car and a road trip half way across the country, it kept up plotting very well with only a few stretches of very remote/desolate road lacking data.

What did not work

Receiving APRS signals did not work.  The main issue is that the Baofeng’s squelch would not release fast enough for the data to make it through.  Since APRS packets do not contain redundant data, any lost portion of the packet means loss of the whole packet.  After messing with the radio, I could receive maybe 1-2% of APRS signals that were being decoded by a Yaesu FT2D with a much less optimal antenna.

In conclusion

If you’re looking for a cheap radio to send APRS position data, the Baofeng UV-5R is a good candidate to be combined with a Byonics TinyTrack4.  This setup won’t work well for receiving data reliably, if at all.  Either way, I would save your money and skip any of the audio connector cables as it just didn’t perform well.

03 May

Caprese Chicken

Caprese Chicken

I have always loved making caprese ever since my mother first introduced me to it.  One day I was looking for something easy to cook for dinner with Lucy and stumbled upon a simple caprese chicken recipe.  While a good start, it needed a few tweaks.  I am happy to share the result with you today!

Caprese Chicken

This is an easy to make chicken covered with gooey fresh mozzarella cheese melted, tomatoes, and fresh basil. 

Author David Mandrell



  • 1 Part Balsamic Vinegar
  • 1 Part Olive Oil
  • 1 Part Honey

Dry Rub

  • 1.5 Tsp Herbes De Provence
  • 1/2 Tsp Paprika
  • 1/8 Tsp Cayenne Pepper
  • 1/2 Tsp Salt
  • 1/4 Tsp Black Pepper
  • 1/2 Tsp Garlic Powder


  • 2-3 Pieces Chicken Breasts
  • 1-3 Pieces/Breast Mozzarella Cheese
  • 1 Cup Cherry Tomatoes


Marinade the chicken

  1. Mix the marinade and let the chicken sit for 1-12 hours in the refrigerator

Dry rub prep

  1. Combine all the dry rub ingredients in a small bowel.

  2. Cover chicken with dry rub


  1. Preheat the oven to 400 degrees.

  2. Lightly oil an oven-safe pan such as a cast iron skillet and bring up to medium-high temperature on the stove.

  3. Sear the chicken on both sides until golden brown, about 3 minutes each side.

  4. Put the pan into the oven and bake until the chicken is 165 degrees internally.  This should be about 20 minutes.

  5. Remove the pan/chicken from the oven and add fresh mozzarella cheese.  Place back into oven until the cheese has melted to your taste.

  6. Remove the pan/chicken/cheese from the oven and add tomatoes, basil, and balsamic vinegar.  Serve hot!

23 Apr

Cooking Bacon in a Broiler Pan

I like bacon.  Everyone likes bacon!  Even vegetarians!  Why else would there be so many vegetarian/vegan bacon imitations out there?

While I like bacon, I do not like making a mess while cooking bacon.  This is why I love to cook bacon in the oven.  It’s really easy to get that crispy bacon that I love, without all the splattering onto every nearby surface and my clothes while I cook it.

broiler panThe best way to cook bacon that I have found is to use a broiler pan.  I even go one step further and line the bottom with aluminum foil.  If you don’t have extra-wide aluminum foil, you can take two regular sized pieces repeatedly fold them together along one edge to form a larger sheet.  If you do it right, you can catch all the grease in the foil.  When you are done cooking, let the bottom part cool to room temperature and place it into the fridge to cool.  Once the leftover grease solidifies, just fold up the foil and toss it in the trash!  My broiler pan is a little smaller, so it usually takes two batches to cook a pound of thinly sliced bacon.

I really like the lack of mess and ease of cleaning up from cooking bacon this way, but cooking it is easy as well!  Once you know exactly how long it takes to cook to your crunchiness preference in your oven, you really don’t have to do anything!  There’s no need to flip it while cooking, stop and drain excess oil, just let it be and wait for the timer to go off!

1) Get your broiler pan out and line the bottom with aluminum foil
2) Lay out your bacon on the broiler pan (it’s okay for it to be touching a little, it will shrink as it cooks)
3) Pre-heat your oven to 400 degrees, then place the pan and bacon into the oven
4) Cook for 15-25 minutes (time will depend on your oven and crunchiness preference)


18 Mar

Building a Beaglebone ADS-B Receiver/Feeder

These are my notes on setting up an ads-b receiver using a BeagleBone.  Many people also do this on the Raspberry Pi and while there are some miner differences, there are a lot of similarities.  I’ve stumbled my way through to a pretty good setup on the BeagleBone and I want to share it with you so that you can learn from my efforts and quickly get a working setup feeding data!

My motivation for this project is to gain additional experience with Linux, embedded systems, programming, and my general love of aviation.  I also wanted to contribute to the live-tracking data set and get access to the premium features of two great flight tracking websites, flightaware and flightradar24, who both have programs where you can access these premium services for free by becoming a “feeder” and sending them your ads-b data.

I’m assuming if you’ve found this page, you already know what ads-b is and some of the basics.

Project Goals

The goals of this project are to create a reliable ads-b feeder that can be placed in a good location for receiving ads-b signals and can feed that data to FlightAware.

What you need to build the BeagleBone ads-b feeder

If you’re like me, most of this stuff will already be laying around your house, and even then, not all of it is required.  The most basic system will require two items which can both be bought cheaply from Amazon:

  1. BeagleBone
  2. DVB-T dongle
  3. 5V power supply

The BeagleBone is the computer which will do all the processing and sending of data.  The DVT-B dongle will act as the radio receiver that will listen for the ADS-B signals.  I also strongly recommend a power supply as I has all kinds of instability troubles that turned out to be due to low voltage from the USB supply I was using.  I have all kinds of USB chargers that are more than capable of supplying enough current, so I took an old USB cable, cut off one end and wired it into a barrel connector to plug into the BeagleBone and that’s worked great for me!

The options beyond that are endless.  The stock antenna that comes with DVT-B dongle works, I’ve tracked many aircraft with it, but it’s one of the most commonly upgraded items.  It appears most people build their own antenna which is really easy (I chose to build a collinear antenna and seal it inside a PVC pipe) just Google it to find out how.  If you don’t want to mess around with trying to build one, this one is an excellent antenna that’s made in the USA (although it will set you back about $150).

If you want to locate your feeder outside for better reception, you will want to find or buy a good water-tight box to protect the electronics.  I have seen people that use everything from Tupperware containers and hot glue to professional grade utility boxes and bulkhead fittings.  BeagleBone computers are not able to be powered directly using POE (Power Over Ethernet), but it’s still a great way to power a remote feeder if you purchase an injector/splitter.  This will allow you to “inject” the power into the network cable inside and “split” it back out before the BeagleBone and then plug the power in

In order to get the best signal, I’ll be placing my receiver up on top of a hill behind my house.  It will connect to my network with a wifi link (I have a high-gain directional antenna pointed up the hill at the feeder).  Without the ability to run wires, it will be solar powered with a battery.  The solar power portion of my project will require a solar panel, charge controller, and battery.  You can read more about the solar power part of my project here <<<To do: Insert link here>>>

Setting up the Beaglebone Feeder

This section describes the steps I take to get the Beaglebone feeder running.  You only need the BeagleBone, DVT-B dongle and a network cable for this portion.  I’m using a BeagleBone Black Revision C (4GB eMMC).  If you have an earlier version, or even the plain white BeagleBone, all of this is still applicable, but you will have to run from the SD card instead of the on board eMMC due to space limitations.  I’m using the official BeagleBone Debian image dated 2015-03-08.

Fresh operating system install

For the best stability and longevity, I always recommend starting out with a fresh operating system.  The BeagleBone Getting Started Guide has the instructions on how to update the board with the latest software here.

There are two ways to run an OS on a BeagleBone, from the internal eMMC, or directly from the microSD card.  Be sure to download the correct image you want to use!  The images for flashing the internal eMMC have “eMMC-flasher” in their name.  BeagleBone has changed some of the file locations on their website, but as of this writing they are located here.

  1. Download the appropriate version and get it installed from the link above
  2. Use “sudo apt-get update” and then “sudo apt-get upgrade” to make sure all the default programs are up to date

 Don’t be stupid, be secure

This is a topic that is often overlooked, and if you want can be totally skipped.  This is a real computer that you will be attaching to a real network with real bad people lurking on it.  The default settings for the BeagleBone use “root” as the root user and don’t have a password.  This is like living in a bad neighborhood and leaving your front door wide open.  Even if you keep your feeder behind a firewall, I strongly recommend that you change the default username, disable root login, and add a strong password.  A good article on adding a new user and setting them up so they can use the sudo command can be found here.  If you’re going to expose your BeagleBone to the outside internet I strongly recommend disabling password authentication and only allowing only key-based authentication!  This is a great article on configuring key-based login for Linux in general (but also applies to your BeagleBone or Raspberry Pi).

 Setting up Dump1090

We are going to install three pieces of software.  The first, Dump1090, is the software that talks to the DVT-B dongle and can decode the signals.  It has a simple web-based map showing traffic around you as well as serving and receiving data in several formats.

For the more details and explanation, check out this excellent resource.  While it’s targeted at the Raspberry Pi, it’s pretty much the same on the BeagleBone.  I’ll highlight the commands that you should type below:

  1. Setup the programs needed to build and install the necessary drivers for Dump1090
    sudo apt-get install git git-core cmake libusb-1.0-0-dev build-essential
  2. Download the drivers for the dongle
    git clone git://git.osmocom.org/rtl-sdr.git
  3. Move to the newly created folder
    cd rtl-sdr
  4. make a new directory called “build”
    mkdir build
  5. Move to the build directory
    cd build
  6. Compile the drivers
  7. Then run
  8. Install the drivers
    sudo make install
  9. Test that everything works correctly (you should not see anything returned, if you do check out the link above for more details on solving it)
    sudo ldconfig
  10. Move to your home directory
    cd ~
  11. Copy the rules for the device to the correct folder
    sudo cp ./rtl-sdr/rtl-sdr.rules /etc/udev/rules.d/
  12. Reboot the system
    sudo reboot
  13. Make sure you’re in your home directory
    cd ~
  14. Download Dump1090
    git clone git://github.com/MalcolmRobb/dump1090.git
  15. move to the new dump1090 directory
    cd dump1090
  16. Compile Dump1090
  17. Now test Dump1090 by starting the software in interactive mode
    ./dump1090 –interactive

At this point you should have a basic screen up and be seeing data about the aircraft around you.  If you are inside, you might receive very few or even nothing.  Hook it up to your laptop nad go outside and you should see something.  If you want to connect to the built in web page, you will need to start it with the –net flag, but be aware that BeagleBone has services running on some of the ports by default.  To stop these services run sudo service apache2 stop and then start dump1090 again ./dump1090 –interactive –net and login to the webpage with your BeagleBone’s IP address and port 8080.

 Setting up FlightAware feeder

Now that you have Dump1090 installed and running, you can start to feed that data to FlightAware.  To do this, you will need to download and install their application that monitors the data being output by Dump1090 and sends it to their servers.  In exchange for doing this, they will give you an enterprise account membership for free!  Normally, an enterprise account costs $89.95/month!

If you don’t already have an account, head on over to FlightAware and sign up.  Once you have your account, sign in and go to their PiAware for Dump1090 page and follow the instructions there.

Starting up the feeder

If you installed the FlightAware feeder correctly, it should start as a dameon when the BeagleBone boots up.  However, the default install of Dump1090 will not do this.  I’ve not yet gone through the process of figuring out how to do this, but I will post an update here when I do.

Let’s assume you have to restart or your BeagleBone has otherwise just powered on.  Connect via SSH and make sure it’s connected to the internet by pinging Google or  Then run the following commands to get Dump1090 started:

  1. sudo service apache2 stop
  2. cd ~/dump1090/
  3. ./dump1090 –net –aggressive –fix -quiet &

Close the SSH window and conenct to the web page display at your BeagleBone’s IP address and port 8080 (ex. and check out the traffic around you!  You can also check the FlightAware stats for your feeder from the “My ADS-B” link at the top of the page when you’re signed in!

Happy tracking!





13 Jan

Hello world, davidmandrell.net returns!

Welcome to the new davidmandrell.net!  This site was hacked last year and I only managed to make things worse trying to restore it.  This is a new site from a clean slate with new and improved best-practices based on hard-learned experience!

I hope to bring back and update a lot of the old content with time.  I’m working on several articles at the moment for robots, machine vision, and other work and hobby related topics.

Thank you for your patience as I rebuild this website,
David Mandrell