For those that don’t know, amateur radio operators have had something called the Automatic Packet Reporting System for quite a while now. Most associate it with vehicular tracking, but it does a lot of other neat stuff like weather, telemetry, and message transfer. Many hams put a device called a “tracker” in their vehicle that periodically reports their position (which comes from an attatched GPS) on the air, which is picked up by other stations as well as internet gateways. That is what makes sites like aprs.fi so useful. For more information on APRS, see the inventor’s site as well as the APRSWiki.
There are typically two “classes” of tracker. The first is a simple transmit-only device, such as the TinyTrack3. The sole purpose is to transmit your position periodically, so that other people can see where you are. If you want to be able to actually see where other stations are (without going to an internet site) you can use something like the Kenwood TM-D710, which is a radio with a TNC built-in, capable of displaying information on the screen. It looks something like this:
While it’s a ton of information if you have no other option, it can sometimes leave a lot to be desired. You can take it a little further and attach a serial GPS, which the radio will load with waypoints of the stations it receives. That’s helpful for seeing where the other stations are, but the display can get cluttered quickly with every station the radio hears over a modest period of time. Other devices like the HamHUD provide a little more powerful interface external to the radio itself, if you prefer.
Recently, I came up with a couple of things I’d like to see in a tracker, to make it more functional and more…let’s say “modern”. Some of the requirements are:
- A real display (with colors and graphics)
- Telemetry capabilities (specifically car voltage and temperature)
- Expandable to do other things, such as control various systems in the vehicle, perhaps at the request of an APRS command message
I decided to try to build something that met the above requirements for my Jeep. I settled on using a BeagleBoard xM for the core system, which is a 1GHz ARM development board with 512MB of RAM that runs Linux. It’s basically a cell phone on a development board, without the cell radio. I housed it in a DogHouse so that I had a way to mount it in the vehicle. For a display, I found a 3.5″ LCD composite video display on eBay for under $40. This is what it looks like mounted to the windshield next to my larger GPS screen:
I wrote a very simple display app using GTK that runs full-screen all the time to give a pretty nice display. While GTK and X11 are pretty overkill for something embedded like this, the machine is more than powerful enough to run it and it gives niceties like anti-aliased font rendering for free. It also runs on my desktop just as easily as on the device itself, which is nice for development.
The actual APRS tracking code is a separate module that speaks to the display over a socket. This means that I can run the APRS bit on the embedded board and the display on my laptop if I’m trying to debug something specific. I used the libfap library for parsing the actual APRS packets, but I think I will end up using something else in the long run. All the other code is mine, including the packet generation, beaconing logic, etc. I implemented intelligent (i.e. speed and turn-sensitive) beaconing logic, although I’m hesitant to call it SmartBeaconing exactly.
External to the BeagleBoard itself, I’m using a simple microcontroller that reads a voltage divider to report the vehicle voltage, and an LM34 sensor for temperature. I plan to add a lot more telemetry sensors to that unit over time, but for now it gives me what I want.
Down the road, I plan to see about adding some of these features:
- TIGER maps for displaying the actual positions of received stations. I have code for this already and the maps could be stored on a USB stick for pennies.
- Audio alerts for received packets and proximity alarms. The device has stereo audio in and out.
- Auto-shutdown of the radio and the tracker if the vehicle voltage drops below a certain point.
- APRS messaging
- On-board configuration. Right now, there is no way to give input to the device so configuration is done via text file
Any updates on the APRS tracker? or any how-to write up’s? Would love to work on something like this myself.
Hi Phil,
I’ve made several updates to it, yes. I’ll do another blog post at some point here with more information.
If you are interested in playing with it, I could post a repository of the code.
That would be great. Being new to this, I thought this might be a fun project to start with.
Thank you
i agree, i’ve done soem of my own aprs stuff specifically for the aprs-IS internet side of things. i’ve also written my own aprs parsing library (which im in the middle of refining).
a repo would be nice. as you are using linux, i’m guessing you’re using the standard linux AX25 stack? or are you talking to the TNC directly?
Hi Dan
This looks very interesting to me. Being fairly new to amateur radio, it was APRS which first attracted me to getting started. I don’t know if you’ve heard of raspberrypi? (google it) It’s an ARM based board developed here in the UK. Best part is the cost at about $40.
Do you think it would run on this board? I’m quite interested in this so any more info about it would be good.
Cheers,
Dave
Yep, it should run fine on the RaspberryPi device (of which I am familiar).
I’ll try to get some things cleaned up and documented for a posting here in the coming weeks, with a link to the code.
Thanks!
Hello Dan,
First of all I love your project and I’m waiting to see more videos with the new updates.
I was wondering if you are going to share your APRS project with all of us (Amateur radios)!!!!!
I love the idea to be able to use it in my car or in my radio station
It’s by far the best APRS project / tool that was invented.
I’m looking forward to see your updates
Cheers,
Ricardo
Hi Dan,
I love this project!!! I too would love to see the code if possible!!!
Thanks,
Justin
KD8IAY
+1 on the source code request…this is a really neat project, I wonder if you could just run Xastir on it? Of course it’s using a semi truck to pick up a gallon of milk, but it would do what you want…
73 DE KG6OHK
Okay, here you all go. Now, some rules (or points to keep in mind):
1. This was not intended for public consumption, so don’t complain about places where my callsign is hardcoded, code is messy, etc (unless you want to fix it)
2. Feel free to send me patches
3. If you build something you are required to send me a picture
This should build on most modern distros, assuming you install the two small required libraries:
http://d-rats.com/hg/hgwebdir.cgi/aprs.hg/
Start the “ui” binary first (probably with -w) and then start the “aprs” binary. It should be trivial to get it built and use the aprstest.ini config file to make it consume the worldwide APRS-IS feed.
Be nice
Hi, Dan
It is realy a great idea! (and ofcourse the realization too!). I compiled it on my desktops, first on CentOs 5.1 and after on a fresh ubuntu. It run well, I tested it with the attached aprstest.ini file (with your login to the oregon gate, sry…
When I tested it a little in first time, come up the idea, to try to compile it on an embedded device, without any GUI capability, and try to modify (more exactly ask you to modify) it to use on the network from another machine, have GUI.
First I compiled it on my NLSU2, runing on it a debian with development tools. After compiling the two dependencies, I modified only in the main Makefile, the order of the programs, need to compile: deleted the ui, because this small box hasnot gtk installed.
All the compiled 3 programs, aprs, fakegps, and the uiclient, runnig without any problem, ofcourse the arps try to connect to the gui client.
So, If you think, this idea is usefull, I ask you to schedule in your future task lists to modify the aprs and the ui to communicate each other on network.
Here is a web page, I made it for inform about this new nice aprs tracker our aprs community:
https://sites.google.com/site/aprstracknotes/
best, 73:
t.janos
hg5apz
Hi Janos,
(Update)
I forgot how much work I had done to make this happen, but it was almost completely done. I just pushed another change to the repository to enable this, and it seems to work for me. Check out the commit message on the top changeset for instructions.
Thanks!
-Dan
Dan,
Thank you very much!!!
It works great, I compiled this new, extended version with network connection, on my NSLU2 and on my ubuntu.
The network connection working… It seems, this will be my “poor-man” solution: in the car will working the NSLU2 with the tnc and if I want to see something, I put there a small laptop, and start the giu on it…Mybe later, I will try it on a routerboard with wifi connection too, hopefully, for the client will be usefull a cheap chinaes tablet, running linux on it too…
Thanks again for the very quickly realized network extension!
t.janos
hg5apz
Cool, sounds like a good temporary solution. Let me know how it goes!
Hi Dan,
Excellent work!!
Are you using an external TNC? It occurs to me that one could use Thomas Sailor’s soundcard modem without too much grief.
Thanks for an excellent project. Now I have something to put on that spare video input on my minivan’s VES package.
Actually, I’m using a D700 in KISS mode. I’ve thought about a soundmodem, but right now it’s a single serial cable to the radio, which is way simple. I’ve already got too many wires under my seat
How about some push buttons so that you can toggle between tracker, navit (for the mapping, and some gps stats from xgps/gpsd?
Hmmmnnn. Having serious carputer ideas now.
Yeah, I’ve got a wireless presentation remote connected to it now, which gives me five buttons for navigating an interface on the device. I don’t have much of one created yet, but I can scroll back through the station history, which is nice. It opens a lot more options (read: work)
ARM based AutoPC looking pretty good! Been looking at those Android based TV media players. Same specs as your Beagle Board but with wifi and BT for around $100.
S0, APRS Tracker, Navit, CHiRP, D-RATS and other stuff for $100. And it’ll fit the spare av-in line on my factory radio – result!!
Hmmmnnn,
Needs gpsd support
Been looking for the right board to start this project. Looks like it’ll be mini6410 based. Dev kits start at about $100.
Somebody please list out the part that need to build this project..
really love the sound & look.. thanks to the creator.. hope I can build one like it.. 73
I don’t mean to sound condescending or start a flame war on Dan’s site but this is not really complete project and what is required is already outlined in his (and other’s) messages.
Dan wrote some code (available via git: per above link) which you will need to compile on your given platform. Dan uses an ARM based device called a BeagleBoard (not PC compatible). I’m currently using an Atom based home theater machine I picked up at Micro Center for $240. Both these machines output 1V p-p analog video such as you would feed into your TV’s yellow socket from the VCR etc.
I’m running LXDM on mine and I’m guessing that Dan runs Angstrom Beagelboard default Linux distro) on his. As I have a regular PC I’m able to compile my code easily. Dan on the other hand has to “cross compile” the code to run on his ARM11 processor. I would not recommend you try cross compiling unless you are very familiar with both Linux and your chosen processor.
The screen that Dan uses is available from ebay from about $50. It’s not a computer screen but a TV screen. I’m using the spare TV input on my minivan’s factory radio so I don’t need to clutter the dashboard with hardware.
I found a cool bluetooth keyboard at Micro Center for $70. Its about the size of an xbox controller that you type on with your thumbs and it has a track pad underneath that you operate with your index finger . However, unless you want to run a full suite of apps and need full keyboard input I would suggest using any number of arduino based keyboard emulators that will present a few buttons that you would link to the application function you want.
My setup has grown into a monster; PC, GPS, KISS TNC (homebrew), NQSMHS, PSK31 interface for my FT857and the relevant radio’s for it all.
All of this is far too much money. Dan’s solution is also too much money coming in at over $300! In his defense, development and proof of concepts cost money.
I’ve ordered one of those Android TV media player devices. They spec at a 1GHz ARM11 processor, 512MB+ RAM, 1GB flash storage, USB, video, wifi, 10/100/1000 for around $100. They can run Linux (Android is Linux based) too. I’ll let you know how I get on with it.
Hi Mark Phillips,
Would you share your video/picture for your project?
I like to built.. but have no idea on how to start it..
If you willing to share, it will be great.. thanks
Really great work Dan!
I have been wanting to see something like this for a long time.
Xastir is good in many ways, but it’s not very car-friendly.
Short wishlist:
A “-h” option which displays usage.
Comments in the example ini files, which lists valid options.
Last but not least, two way messages!
This is going to be a perfect match for Raspberry Pi.
73 and thanks for making your work Open Source.
SM0RVV
+1 on the-h switch.
I tried to buy the Pi when it was released. Web site crashed under the demand for it. It’s going to be a got item!
Tnx for the –help update.
73!
This week I got hold of an Raspberry Pi.
I’ve so far managed to install the dependency libs and GTK on it. I’m running the recommended debian-build for the pie.
After the libs was installed it was a piece of cake to compile aprs-hg directly on the pie, gcc is included in the image.
The monitor is an old 7″ LCD composite 12 volt monitor. A perfect match for mounting in my car. The pie comes pre-configured for composite output. You don’t have to mess around with TV-out modelines in xorg.conf.
I don’t have a correct config.ini yet, so I’m not visible on any map with the pie yet. Stay tuned.
73
Very good!
Last week I fried my BeagleBoard, unfortunately. I’ve got a couple Raspberry Pis on order and plan to replace the BB in my Jeep with one soon.
Got me a Pi this past weekend.
Spent some time at work today installing Rasbian, GTK and the other required libs. Compiled your code too. All works like a charm!
So for around $100 one can build this project quite easily.
Only problem is that it has no name! How about APiRS?
Mark
Yeah, my beagleboard died a couple weeks ago, so I’ve now replaced it with a Pi. I think it’s actually better, in terms of power requirements and the quality of the composite video out. Not to mention a lot cheaper!
Mark,
How were you able to get it to compile?
I’m using raspberry pi, installed gtk and the 2 other required but everytime i try to compile aprs-hg it tells me fatal error: iniparser.h: No such file or directory I’ve tried everything I can think of.
Hi Matt,
At Mark’s request, I created a mailing list for discussion:
http://intrepid.danplanet.com/mailman/listinfo/uat
Lets go have the how-to-build conversation there, okay?
Thanks!
Mind if I start a yahoo group about this?
If we can get the price of this project down to IRO $100 (which I feel is totally doable) then I’m sure your blog isn’t the place to discuss the finer points.
Also, been thinking about TNC type hardware. We only have 1 serial port on the Pi but we do have a load of I2C etc. Can I2C be converted into serial?
It occurs to me that we could create a daughter board with a KISS only TNC or perhaps one of the many “UI tracker” designs (but you don’t support UI) that would simply plug onto the Pi. The cost of this could be as little as $30. Down side is that it would consume the only serial port we have forcing us down the USB road.
APiRS it is then!
Yahoo group? Please don’t! If you think there’s interest, I’ll be glad to set up a proper mailing list suitable for patch traffic. I’m pretty adamant about not joining yahoo groups whenever possible
I forgot that you have mailing list abilities.
Yep, I vote that we create a mailing list. I should be able to have some fodder for it by the weekend. Working demo etc pith pix.
APRS daughter board idea taking shape!
Found this circuit http://www.gedanken.demon.co.uk/rs232-converters/i2c.html whilst looking for a I2C to serial solution.
Question is, how do you acquire the I2C buss under Linux?
I’m thinking that this would also be available on the TNC type board assuming there’s enough space. Otherwise I guess it’s yet another board with a SparkFun GPS module on it.
Yet more ravings ….
There’s no RTC on the Pi. This means that we are reliant upon some sort of network time update. However, in the car/field/shelter we won’t have a network connected so that tools like NTP can do their thing.
How about GPSD? The required GPS RX gets installed in the normal way (I know you know all this but for the benefit of other readers …
. The GPSD daemon is configured to capture the GPS RX. It then offers the GPS data to anything that wants it by way of a network socket. Simply configure NTP to look for the time locally. Likewise for aprs-hg.
Now if only aprs-hg supported GPSD ….. I know you did it for D-RATS upon my request. I wonder if you have time to do it again for the APiRS project?
I would like to know about how to build the display.
is there any document on how to set this all up I’m a noobie and really like this project going to order my pi pc tomorrow looking at ordering tnc-pi for my tnc part of this project.
Nope, but you can join the mailing list and ask for help there. See my comment above.
Hey Dan and thanks for a wonderful project.
I started it yesterday, worked through your mailing list, and then build myself the DanTracker on a Raspberry PI from scratch….. and it works…
I recorded all the steps I did and will put it on the mailing list for others…
see my little movie on youtube
73’s
Erik / PA0ESH
http://youtu.be/HMsYk5gaoNs
Sweet idea! I’m gonna give a go on the Pi.
Now if Mark Phillips will put some of his projects out there on the net (like his lightning detector <a href="https://oshpark.com/shared_projects/hNmWES7r) life would be good.