AllStarLink :: RFless Node Mk I

I've wanted to build a radio-less node because sometimes it's easier and makes more sense than a radio-based node. Additionally, sometimes iaxRpt is a pain (e.g. fails to register with Asterisk, network latency issues, etc).


Fob modification is for fools -or- I'm not patient or skillful enough to make tiny solder joints Most importantly I wanted to avoid modifying the sound fob because the Pi has GPIO pins for a good reason: they are to be used for input/output. If you want to solder small wires to small chips on the fob, please have at it and I greatly respect your skills. But after having a modified fob that I bought fail on me, I think it's a needless and clumsy workaround. Additionally, I suspect the fob mods increase potential for QRM, as I hear it on many such nodes.

Parts is parts

  1. RaspberryPi 3A+ -- my most favorite Pi board aside from the PiZero. Does the job of the 3B+ without the latter's power management (undervoltage) issues and with only the single USB port needed. If you need an ethernet connection, obviously grab the 3B+

  2. Syba Sound fob CM119 chipset UNMODIFIED -- plug this into the Pi running HamVoIP and audio is just automatically piped out by default. That's a great sign. Amazon Link (2021-09)
  3. Microphone -- for the talkie talkie. I used a Juentai version of the standard Kenwood KMC-32. It is essentially the same mic but with different keypad layout. The pinout is exaclty the same. I chose this because it has 4 convenient wires: PTT, PTT ground, Mic Audio, Mic ground. That's very easy to wire up to the GPIO pins and the sound card.
  4. Audio amplifier board -- 3 watts output, two channel, tiny 30mm X 22mm X 16mm size. The sound fob's audio output will not drive anything more than headphones. For noisy shack environments, a small amp is needed. This particular one is conveniently powered by 5V directly from the Pi GPIO pins.
  5. JST connector pigtails -- for connecting to the GPIO pins. [Image]
  6. A box to put it all in. There will be wires. Make sure the box is large enough for comfortable fit and assembly.

Hardware Assembly

Following are a few pictures of the enclosure and wiring. Click to embiggen.

The Case. A recycled 1980s-era SVGA switch box. I've fallen in love with these as project boxes. The main switch has been replaced by the amplifier volume knob. I drilled holes for a 5-pin mic connector, LEDs, headphone jack, and a gratuitous button.

I suppose I could have found an RJ-45 to hook up the microphone and that would have been easier. But I wanted the old school look of the round, metal connectors.

LEDs as follows:

  • Yellow LED below mic connector indicates power on. I may modified it to be some sort of heartbeat or connection status LED in the future.
  • Green LED above left of speaker indicates "Receive", namely that signal is coming in from the internet connection. In Asterisk configuration parlance, this is actually called transmit because a node radio would transmit the signal.
  • Red LED above right of speaker indicates "Transmit, namely that I am talking into the internet connection. In Asterisk configuration parlance, this is actually called receive because a node radio was receiving signal.

Gloriously Stock Sound Fob -- I soldered two wires (one channel plus ground) of a 3.5mm TRS stereo plug pigtail to two pins on the 5-pin panel mount connector. The plug plugs into the microphone jack on the sound fob. A second 3.5mm TRS stereo plug goes from the sound fob's headphone jack to the left, right, and ground solder points on the amplifier. That's it for the sound fob!

The Amplifier. The tiny amp has stereo inputs and outputs, so one output channel goes to the built-in speaker while the other goes to a headphone jack to connect external headphones if desired. Amazon has tons of variations of these, all based on some variation of the PAM something something chip. I chose one that could specifically be powered by 5v so that I could power it direclty off of the Raspberry Pi GPIO.

Wire nest. Shockingly, there is still quite a bit of space inside despite the mess of wires. The hole for one of the SVGA connectors in back provides a convenient access to the Pi SD card.

JST GPIO connections All non-audio signalling is accomplished via GPIO. The LEDs are connected to GPIO with on inline resistor on one of the legs. Resistor values can be 220, 330, 470 ohm.

The PTT activated COS signal only uses two GPIO pins: a 3.3 volt positive and a generic I/O pin that a script (see below) pulls to ground using the Pi's built-in pull up/down resistors. When PTT is pressed, the I/O pin is pulled high. The script reads that state and calls the usb-tune-menu command to assert COS. This tells Asterisk to pass mic audio into the internet connection. More on the script in the next section.

In this image, connections are as follows from left to right:

  • Physical Pins 4 6 :: to 5 volt power to amplifier
  • Physical Pins 14 16 :: to Green LED "RX"
  • Physical Pins 18 20 :: to Red LED "TX"
  • bottom row Physical Pins 17 19 :: from mic PTT, COS detect

LED business

More in-depth information about wiring LEDS as well as scripting the Pi to turn them on/off and configuring Asterisk to call the scripts can be found at this link.

Software Control

  1. Configure rpt.conf events stanza


    ; EVENTS ; replace with your node number, obvs [events514262] ; Commands for FOB COS indicator when available ; For this to work you must also add - gpio4 = out,0 - to simpleusb.conf ; Uncomment (remove ;) on next two lines to activate ;cop,62,GPIO4:1 = c|t|RPT_RXKEYED ;cop,62,GPIO4:0 = c|f|RPT_RXKEYED ; these will operate a front-face light to show radio is receiving voice from internet /var/local/sbin/gpio-4-high = s|t|RPT_TXKEYED /var/local/sbin/gpio-4-low = s|f|RPT_TXKEYED ; these will write the tranmit status of your node to a temporary file so that the PTT ; script knows whether to dis/engage the PTT/COS correctly ; write 1 to temp file = s|t|RPT_TXKEYED ; write 0 to temp file = s|f|RPT_TXKEYED ; these will operate a front-face light to show radio is transmitting your voice into internet /var/local/sbin/gpio-5-high = s|t|RPT_RXKEYED /var/local/sbin/gpio-5-low = s|f|RPT_RXKEYED
  2. OPTIONAL Modify Supermon... for fun

    This quick modification to Supermon's link.php file allows you to PTT from the Supermon web page.

    // BEGIN KB9IQX print "

    "; if(isset($_POST['ptt_down'])) { echo "

    "; shell_exec("sudo asterisk -rx 'susb tune menu-support K'"); } else { echo "
    "; shell_exec("sudo asterisk -rx 'susb tune menu-support k'"); } // END KB9IQX
  3. Install script for handling Mic Control