Some documents linked from this page may require Adobe Acrobat PDF reader.
Last Updated August 15, 2012
Telephone Pioneers Amateur Radio Club
What a TPARC FPAC Node Looks Like
Until 2012, the TPARC network consisted of "stacks" of Paccomm Tiny-2 and Spirit-2 TNC's, running ROSE firmware, interconnected via Paccomm's "Coax-LAN" system.
This allowed a ROSE network to be built by linking sites together over high-speed UHF "trunks", and offering packet data services to users through VHF and UHF "drops".
In the late '00's, a desire was expressed to find a way to modernize the network, make it more flexible, and allow some of the equipment (that had been in service since the mid-90's) to be upgraded/replaced.
A current implementation of the ROSE protocol was found to be supported in Linux, and specifically by the FPAC software package, maintained by Bernard Pidoux, F6BVP.
FPAC is a suite of programs that take care of interfacing with the Linux AX.25 kernel and userspace tools, and provides mechanisms for creating ROSE networks with relative ease. FPAC also provides methods of allowing access to other userspace tools over amateur radio.
This seemed like a good fit to replace what was existing in the TPARC network, and achieve some of the overall goals.
And so began a long process of testing and troubleshooting, trying to find a suitable method to be able to replicate and deploy multiple nodes to form a network. Along the way there were bumps and potholes in the road, as FPAC is continually being developed, bugs fixed, bugs created, features worked on, etc.
The software in and of itself was its own challenge, but there also were hardware issues to overcome.
After some initial trials and experiments, the design goals evolved to be:
When you roll it all up, you realize you are trying to build an embedded hardware appliance.
From some previous projects, the Specifically, the ALIX 3D3 was chosen for the task, as it also comes with on-board VGA video, meaning you don't need to futz around with a serial console... just plug in a monitor and USB keyboard.
The ALIX 3D3:
The only drawback was that it only has 2 (one internal and one external) serial ports. However, this was easily solved with the discovery of the FTDI USB-COM232-PLUS4 board. This is a reliable FTDI device, with great Linux support, that offers 4xRS232 serial ports through a single USB host connection.
And thus, the hardware for the FPAC node was born.
This platform gives us 4 (well 5 if you press the on-board external serial port of the ALIX into service) serial ports to hang TNC's off of. This is enough for two trunk links to adjacent nodes, as well as two drops (typically a VHF and a UHF).
As inter-node links get upgraded to IP based solutions, the high-speed UHF trunk ports can be re-purposed for other uses such as APRS I-Gates, 9600 baud drops, etc.
The hardware allows us to run off the shelf Linux designed for x86, without having to fight with cross-compiling environments for ARM, RISC, etc.
Depending on the size of the CF card chosen, there is ample storage to run some things other than FPAC in tandem on the node (ie javAPRSSrvr) with ease.
One challenge with the USB-serial board is its odd shape/size. A suitable enclosure was needed to stuff it in so it doesn't short out.
It appears that the COM232PLUS4 must have been designed for some OEM application... because no one in their right mind would use the strange dimensions and offsets found on the board. That being the case, an enclosure was a challenge to come up with. While it would have been nice to find a nice die cast or extruded aluminum enclosure that would be suitable, nothing was found that fit the bill (price being the biggest consideration).
The result ended up being a Hammond 1591 project box. While it is a little taller than would have been desired, the other dimensions were suitable to make it work.
Of course, all the cutouts required for the DE9 connectors, LED's, and mounting holes presented their own headache. After milling a prototype by hand, it was quickly determined that it would be a nightmare to try and reproduce on any sort of scale.
It so happened that a friend had access to a small CNC milling machine, perfectly suited to milling the ABS plastic of the project box. After some work in the CAM software, a design was produced to allow project boxes to be milled automagically with the CNC mill. Brilliant.
The result was a nice, clean USB to Serial converter box, about the same footprint as the ALIX.
With a little 3M double-sided tape to stick the two together, you have an FPAC appliance.
Choosing a suitable OS/Linux distro presented its own challenges. Because we chose to use an ALIX with a CF card for storage, you want to keep the number of read/writes to the CF card to a minimum.
A variety of methods to do that were looked at, when Voyage Linux was stumbled upon.
Voyage Linux is targeted directly at the embedded appliance application, and designed to run typically as a read-only system, with read-write stuff done in a ram disk and synched to the CF on shutdown. This is pretty much exactly what we were after.
One of the nice things about Voyage Linux is that it is pretty much the bare essentials to give you a decent Linux system. It is Debian-based, so if you do want to add more stuff on, there is a package management system available to do so.
Another nice thing is that there is an SDK available for it to allow for pretty much full customization (Voyage Linux leverages the Debian Live build environment to create itself). This meant that we could stip out even more stuff that we didn't need, and add some stuff that we required (AX.25 support being the big one).
All the flexibility turned out to be both a blessing and a curse. It is great having the framework there to be able to customize the distribution, but that forked our project off in to creating a custom installation that would support our hardware, have the packages we want, and remove the stuff we didn't.
In order to manage the build environment, VE7FET set up a Google Project called Hamlinux to be able to create the customized installation we were after. This ended up creating some more forks, with "Hamlinux" being forked off in to "TPARCLinux" that was solely customized to run on the ALIX 3D3. Hamlinux should run on most x86 boards, but TPARCLinux uses a custom stripped down kernel, optioned for the AMD Geode.
Then, of course, being that this was a Debian-based system, it surely would be nice to have the AX.25 software available as packages so that the build-environment could pull them in and install them in to the image. It would also be nice down the road to be able to upgrade units in the field when changes to the AX.25 code was made.
This created another fork in the project, since it was found that the available Debian AX.25 packages are old and heck, even the current released packages are old, the most stable code is only available in CVS. So, VE7FET created another Google Project, this one to take the CVS code, clean up the build tools and create the necessary files to package the binaries up in to Debian packages. That project lives at at Google as Linuxax25.
Well now we've got this customized Linux distribution, but it uses custom kernel packages, and homebrewed AX.25 packages, oh and most importantly the FPAC package... that calls for our own apt-repository to store it all in... and so packages.tparc.org was born.
As you can see, what started as a simple idea to replace some ROSE TNC's with a software solution ended up snowballing in to a very large project to build an FPAC appliance.
The results however, were worth all the effort. Now the tools are in place to be able to make tweaks here and there, and roll out changes as we need them. Install images can be created to be easily burned to a CF card, and swapped out to seamlessly upgrade a node in the field.
About the only thing left to do is manage the configurations for the multiple nodes, so that a consistent backup is kept of the operating parameters of each node. This lets us be able to have the working configs stored off site in the event a replacement node needs to be built and parachuted in to a site. Right now, the configuration management is being done manually. Maybe one day we'll put a tool to work for that too.