Radio Box (Part 2)

Some quick updates on the Radio Box project.

1. Mounted the Rig Runner (Image 2)

  • I'm only using zip ties at the moment, but I like the position and it makes sense to just continue using them.

2. Mounted a 110v inverter on the side of the box. (Image 1)
  • 250 w
  • 12v in
  • Outputs:
    • 5v (USB)
    • 110v AC
    • 12v (direct pass through)
  • Also provides a small light

3. Cut a hole in back wall to the right of the radio shelf. (Image 3)

  • Allows for a RJ-45 connector and speaker cable to connect to the radio when the radio is inside the case.

4. Mounted a speaker. (Image 1)
  • Cable is run to the cutout in Image 3. 
  • When the radio is on the shelf, the internal speaker is covered. Audio is a bit clearer with the second speaker.

5. Connected a multi-meter to the Rig Runner (Image 1)
  • Created a dedicated cable to go from banana plug to powerpole 

6. Added various zip ties throughout to clean up some cables.

7. Created a power cable for the TNC-X

  • Used with a USB to serial converter because the FTDI chip on the TNC-X has been acting silly.
  • Coax power connector is Radio Shack type L (I believe)

8. Mounted an RJ-45 connector to the front of the box (Image 1)

  • When the radio is on the shelf, the mic connector is covered by the box.
  • The cable connected to this connector is run to the hole in Image 3.

Image 1 - Outside the box

Image 2 - Inside the box

Image 3 - Right side of the box.
Cut out for the RJ-45 speaker cable.


Arduino Logic Analyzer

Recently, I have been helping a friend debug her 3D printer. We came across the need for a logic analyzer, so I put a simple one together.

I am using an Arduino Nano v3.0 for it and am capturing ~10 KSa/Sec. I have it setup to generate a postscript output and display using ghostscript by just running make view .

Note: Pins 5, 6, and 7 are not connected. SOURCE
Example Output (Converted to PNG)

Makefile to link everything together:

Ruby Capture Script:

Code Running on the Arduino Diecimila:

Code running on the Arduino Nano:

Code running on the Digispark:

GNU Plot Script:

Check back. I'll be updating the Gists. Also, I might put them all in one repo. We'll see.


Setting up Xastir to receive APRS

When setting up a service that talks to a USB serial device, you might notice that the adapter might change from one /dev/ttyUSB[0-9]\+ to another. 99% of the time, they will take the lowest number available, but not always. This issue also shows up often when you have multiple USB serial adapters attached to your system. Thankfully, Linux (or the USB serial driver/kernel module) is smart enough to create symlinks in the /dev/serial/by-id and /dev/serial/by-path directories that point to the related /dev/ttyUSB[0-9]\+ files. I find the by-id directory to be the most helpful for what I am doing, as it is created based on the hardware ID of the device, independent of the order plugged in to the system and/or the specific USB port it is connected to.

Using these symlinks is fine and dandy until you come across a program like Xastir which has a character limit for the serial device path. Regardless of how silly this is, it's there. To fix this problem, I created a directory /serial-by-use/ and created useful symlinks to the /dev/serial/by-id symlinks. This also gave me a reason to create symlinks to the other USB serial devices, so ridiculously long ids don't need to be remembered.

(Note: The symlinks are red as the adaptors are not currently plugged into the system at the moment.)

Here is the configuration for the TNC-X in Xastir. Most of the options are still set as default.

(Elsewhere on this blog: Xastir map configs)

Xastir OSM map issues on Fedora 19

The Xastir package in the Fedora (19) repositories has issues with loading OpenStreetMap tiles. Specifically, the error was:

TBD: I don't think we can deal with colorspace != RGB

This thread on the Xastir mailing list lead me to believe that the issue was because the RPM in the repository is compiled using ImageMagick not GraphicsMagick. A quick recompile makes me think this is correct. While I was at it, I compiled in ax.25 kernel support and fast internet map caching (maybe these are compiled into the RPM, but when compiling from source, they do require some extra /\w\+-devel/ packages).

Also, the symlink created below is because my Xastir config file (~/.xastir/config/xastir.cnf) was written based on the RPM which uses the prefix /usr/. Generally when installing from source (and this is not an exception), the prefix is /usr/local/ as to not conflict with package manager managed installs. I didn't want to rebuild my config file.

Commands (YMMV):

Screenshot of it working (with current map settings):

EDIT: One other issue found with compiling from source.

Interface Error! Error opening interface 1 Hard Fail

Permissions with talking to the serial device. Commands above have been updated accordingly. (Fix Source)


Yaesu CT-39 Connections to TNC-X (REDUX: A lesson in double checking)

In my last post, I posted the connections based on the (current) manuals of both devices, not the actual pin out of my TNC-X. I don't know if I purposely changed the pin out when I built the kit or they changed it in the more recent manual.

Updated connection map here:


Yaesu CT-39 Connections to TNC-X

Connections for the TNC-X to FT-817 cable. Colors according to Yaesu CT-39 cable.




Radio Box (Part 1)

Over the past few months, I have been mentally designing a "radio go kit". It would contain:
  • Some sort of computer
    • Raspberry Pi, or
    • Barebones VESA mountable computer
  • 1 or more radios
    • At least one capable of 2m TX/RX (APRS specifically)
    • Ideally at least one capable of HF TX/RX 
  • Permanent housing for my TNC-X
  • Housing and permanent hookup of an Si4707 weather band SAME decoder
  • GPS hookup
  • Open-Mesh AP
  • Be a central power distribution point when using my car as a camper
Internal battery was not a requirement, as I wanted power to be as flexible as possible. 

The case for all of this was up in the air for a while (and to some degree still is). The choice was between:
  • An old computer case from a cascaded work computer
    • Pros: Free, Easy to cary
    • Cons: Mounting things inside might be a bit interesting
  • A giant pelican case (if everything else was taken out of it, I might actually be able to fit inside)
    • Pros: Free, Waterproof, Strong
    • Cons: Huge and cumbersome
  • Purchase a portable gator case and rack mount everything.
    • Pros: Easy to mount things inside, Can get with wheels, Strong
    • Cons: Costs money (can't justify if other options are available... see also: college student)
I ended up settling on the computer case.

For a radio, the internal debate was down to:
  • Yaesu FT-817ND
    • Pros: Small (Can fit inside the space a CD-ROM drive would exist inside a computer case)
    • Cons: 5 Watts.
  • Yaesu FT-897D
    • Pros: 100 Watts.
    • Cons: Large, Cost
(Yes, there are more differences, but for my uses, these are the biggest and most notable.) I ended up choosing an FT-817ND for both the cost and size benefits. I would like to mount it where the CD drive would be, but don't exactly know the best way to do so yet. What ever way I choose, I'd like it to be very simple to remove the rig if I want to (i.e. no screws if possible, or thumb screws if absolutely necessary).

External look of the case. Not pretty, but should work.
(Excuse the mess)

Internals of the case so far. Only the TNC-X, serial adapter
 for the GPS, and the USB hub have
been mounted at this point.

Tasks left to do (in no particular order):

  1. Drill holes and mount the Perma-Proto Board
  2. Acquire a VESA mounting bracket for the RPi
    1. And drill holes for it
  3. Decide on a way to mount the FT-817
  4. Find a place to mount the RigRunner and mount it.
  5. Find a place to mount the Open-Mesh AP and mount it.
  6. Add the power supply back into the case?
  7. Run cables for the radio (serial and power)
  8. Decide the best way to talk to the Si4707
  9. Add a panel mounting jumper for the SO-239 connector on the back of rig(?)
  10. Find a good way to provide 5v

As of right now, the connections are planned to be as follows:

BitTorrent Lab Imaging Suite

For the past year, I have been working at my university as an Assistant Systems Administrator. One of my duties is to help with imaging the lab machines. We have been using various tools to accomplish this task, but none of them work perfectly. For the most part, they are unicast tools and don't scale very well. Some do have multicast support, but getting these services to actually use multicast and complete an imaging job is problematic at best.

At one point, a coworker and myself were trying to figure out a better way to transfer the disk images we deploy to our labs. BitTorrent was brought up. At the time we didn't have the resources to go down this path and ended up using another tool.

A few months later, I ended up writing a bash script that implements BitTorrent for deploying lab images (though it could very easily be used for other purposes).

Currently working on creating the actual documentation for these tools. 

In the meantime, this page will describe most of what needs to be done to "compile" the boot images. When you are done, you should have 2 different bootable images. All options necessary for use need to be set as kernel run time options, so it is advisable to PXE boot the kernel and initrd.gz and use PXELINUX to set the options.