How To - Build a High-Quality Radio-less AllStar Node for Under $100
by David Gleason, NR9V

Introduction

AllStarLink Nodes can be built in many ways with various tradeoffs between cost, features, ease of construction, portability, and audio quality. Most nodes now available support only half-duplex operation and often have low audio quality. Various radio-less node designs have been documented online but they seem to all be very basic and outdated.

After months of research and testing starting in late 2022 I developed the AllScan ANF101 which is the highest-quality and most cost-effective full-duplex radio-based node on the market. I then took the same approach to radio-less nodes. My resulting ANR design delivers outstanding audio quality and dynamics while being low-cost, simple to build, easy to customize, with attractive enclosure options that perfectly complement Dell 3040 MiniPC and RPi form factors. I've seen no previous mentions online of this having been done with excellent audio quality, full-featured miniPC, DTMF mic, speaker, and enclosure for under $100 in materials costs.

AllScan ANR100 Radio-Less Node on Left (w/Dell Wyse 3040), ANR100-Mini on Right (w/RPi4)



Radio-less Node Benefits

Radioless nodes are ideal for use cases where WiFi or wired ethernet are available but the additional range provided by an HT or mobile radio is not needed, such as for a desk or table at your home QTH / office / shack, for vehicles or RVs where you have a wifi hotspot, and for 2nd offices, hotels, etc. Radio-less nodes are the simplest, easiest and most cost-effective way to get on AllStar with your own node, and are more portable than even the smallest radio-based node and radio needed to access it.

For a node that's sitting a few feet away on a desk it makes more sense to use a radioless node than to have multiple radios on transmitting 100's of milliWatts of RF. Or as described in my other How-To Guide for the best of both worlds you could build a node with radios but also add a mic and speaker jack so it can be used in radio-less mode when preferred. Though at that point it may be easier to build 2 separate nodes, one with radios and one without, and switch between them as needed or leave them both on to monitor different repeaters/hubs/nodes.

Radio-less nodes are more energy efficient, using generally less than a few Watts, vs. a node with radios plus other radio(s) to access it is easily 3 times the energy consumption. This efficiency means that a radio-less node can be left on and connected to your favorite repeater/hub 24x7 with no noticeable effect on your electric bill and no need to recharge batteries or leave radios powered on.

Radio-less nodes also support Full-Duplex by default. This is a powerful feature, as described in the Full-Duplex Communication Benefits section below, and makes a properly designed radio-less node much nicer to use than any half-duplex node.

Table of Contents

Overview

Quick Demo Video


Block Diagram

Completed Node Pictures

AllScan ANR100 with Alinco EMS-57 DTMF Mic and External Speaker

AllScan ANR100-MGC - Back View

With optional Line Out Jack, 0/10/20dB Mic Boost Switch and Mic Gain Adjust Knob

Wiring Diagram

To enlarge images Right-Click → Open Image in New Tab

Wiring Diagram with Optional Mic Gain Control (MGC) Options

Supports low output dynamic mics and easy adjustment of mic levels. These additional controls are not needed with Alinco EMS-57, Kenwood MC-60A, MC-80, MC-85 or similar mics, but are needed for dynamic mics that do not have a preamp or other mics that have unusually low or high output levels. The added 10Ω resistor and 2,200μF capacitor ensure the lowest possible noise, particularly with older preamplified mics that do not have good supply voltage filtering or mics that combine audio and 5V on one line. See the Products Page for more details on supported mics and let me know if you have any questions.

Completed Node Interface Module Interior View

Completed Module Interior View with Optional Mic Gain Controls

Background

My other How-To Guide on building a full-duplex node using 2 low-cost HTs covers my background in engineering, ham radio, and AllStar, and many other details on the history and features of AllStar. I recommend reviewing that document for a broader context on the use and design of both radio-less nodes and nodes with radios. Each has its advantages, and you can also build a node that does both ie. that has radio(s) as well as speaker and mic jack connections. This Guide enables a full-featured node to be built that has outstanding audio quality and no compromises in quality or functionality yet costs less than any other node on the market.

History

AllStarLink (ASL) has been used for controlling repeater systems for 15+ years, supporting a high-precision multiplexing receiver system that precisely time-aligns audio feeds from any number of receivers and ensures perfect synchronization, even with unpredictable delays that occur over various IP and wireless links. It's based on Asterisk, a powerful open-source PBX system that supports numerous features including full-duplex communications, conference calling, autopatch, integration with VOIP systems and equipment, voicemail, voice detection, Interactive Voice Response menus, support for a wide range of voice codecs, and extensive control and monitoring capabilities via web interfaces, DTMF commands, scripting and macros.

When you put an ASL image on a microSD card or flash drive, you're loading GigaBytes of software containing the result of millions of lines of code that make up Linux, Asterisk, ASL, Apache, PHP, SQLite, and the 1,000's of other utilities and programs that come with Linux. The power and flexibility of all this is far higher than what you see in typical commercial products such as a modern digital HT. Linux, Asterisk and ASL are 100% open-source and free, meaning that not only is it free but that anyone can look at the source code, see how it works, edit it, add to it or improve it.

Node Components

There are several main pieces to an ASL node:

  1. A computing device. This can be a Raspberry Pi, any Intel/AMD PC or Mini/Micro/Thin-Client PC, or a "cloud" Linux server such as a linode.com VM. In the case of a cloud server an RTCM interface can be used which connects to a router and then to your radio (but which cost almost $300). RPis, the Dell Wyse 3040 and some other Micro PCs use only about 5 Watts of power.
  2. A radio interface. This usually consists of a small PC Board with a C-Media CM108 or CM119 IC that interfaces to a USB port and provides an audio input, audio output(s), and GPIO lines for PTT, COS, and status LED(s). This is referred to as a URI (USB Radio Interface), RIM (Radio Interface Module), or could be called an audio interface or sound card, but due to the presence of hardware IO lines for connecting PTT and COS lines the term URI is more accurate.
  3. A radio-based node would then need an integrated radio as well as some other radio to then talk to the node with, but for a radio-less node only a speaker and mic are needed, or an IAX phone/PC app can be used in which case the node needs no audio interface, mic or speaker and could consist solely of a Mini PC or cloud VM running ASL.

Smartphone/PC IAX apps such as DVSwitch Mobile (DVSM), iaxRpt and DroidStar can easily connect to a node. The DVSM 2.x Android app supports IAX client, Web-Transceiver, and Node modes, is highly recommended, and is free in a limited demo mode or $2 to buy. DVSM in Node Mode is a true AllStar node with its own ASL node number but with some limitations. VOIP phones (such as any model supported by Hamshack Hotline) can be convenient and usually have a speakerphone feature, and SIP phone apps such as Linphone or GS Wave can also be used. Thus there are multiple ways to talk on an ASL node, through RF, IAX apps, VOIP (SIP) phones and apps, or in the case of radio-less nodes by plugging in a speaker and microphone. See this excellent article on how to set up VOIP phones/apps on AllStar nodes. This also covers using ASL's autopatch feature, enabling calls to VOIP phones to be made from a radio. This does require port 5060 to be open in the node's iptables (firewall) configuration and forwarded to the node in your router settings.

Laptop and Netbook nodes are perfect both for travelling and for home use. For about the same price as a tiny PC or half the price of an RPi you get an LCD screen, keyboard, trackpad, more memory, built-in wifi, and the latest Linux with 1,000's of free programs. Laptop Node Demo Video / Netbook Node Demo Video

AllScan ANR100-NB Netbook Node


I prefer laptops over netbooks as they have a larger screen, nicer keyboard, more I/O connections and more memory. Installing Debian on an old Windows or Mac laptop is a great move. Linux and open-source software only get better over time because they are based on open standards and long-term stability rather than usurious business models and planned obsolescence.

Audio Requirements

A radio-less node should have equal or better overall audio performance and features as even the best radio-based nodes. There are only a few fundamental differences between them: Nodes with radios support wireless analog FM; radio-less nodes support a mic and speaker; and there are differences in how audio is processed. FM radios provide well-controlled audio filtering and limiting to ensure that the transmitted RF is not overmodulated, which can result in improved consistency of audio levels and improved intelligibility.

ASL in some configurations will filter and limit Rx audio prior when encoding it with various codecs and sending it to other connected nodes. Radios additionally do peak limiting of mic audio to prevent transmitter over-deviation, which also maximizes average Signal-To-Noise Ratio (SNR) and better utilizes the available dynamic range of typical RF communications channels.

In nearly all pro audio, recording and broadcast applications some processing is done on voice signals which can include filtering out low and high frequency noise, clicks and pops; compressing the signal to give higher and more consistent average power levels; and limiting to prevent overly loud peaks and distortion. Additional techniques can be used to further optimize clarity for a specific voice and application but these are not as applicable to a general node design.

Mic Audio Processing

Consistent audio levels and dynamics are important on any communication network, otherwise users have to make frequent volume adjustments to properly hear everyone. This is an issue on AllStar and I recommend that any time you hear someone who is significantly quieter or louder than average – let them know. Audio levels are easy to adjust on AllStar and there is no good reason anyone should have improper levels that require everyone else to frequently adjust their volume controls or put up with distorted, clipped, crackly audio.

Building a radio-less node is fairly simple if you're experienced with computers, Linux, and AllStar. I hope this guide will help make the process easier for everyone, while sharing a few optimizations that can result in a node that sounds as good or better than any other node (with or without radios), providing the full, clear sound typical of high-quality FM repeaters.

This goal can be achieved in several ways:

A slight amount of compression (eg. a 2:1 ratio) or similar AGC (Auto Gain Control) functionality along with hard-limiting to 0dBFS ensures no clipping of the ADC and a similar sound to high quality radio-based nodes. An AGC is essentially a compressor/limiter but usually with a longer release time and may include a gain hold time to provide a more stable gain and more transparent audio. In this application the objective is to move the input range of a typical mic output (which can have 60+dB of dynamic range but with low average power and loud plosives, clicks and pops) to a higher average power level with hard-limiting of any overly loud peaks, ensuring the signal will come through clearly – even in loud environments that may have only 20dB of dynamic range.

This article on Repeater-Builder.com talks about dynamics processing in more detail, proposing an Auto-Gain Control (AGC) controlled by a side-chain signal low-passed between 800~1500 Hz to provide smooth subtle leveling while not significantly affecting the higher frequency content and intelligibility. This could be useful not only for radioless nodes but for any node.

The microphone is the first step in the signal chain of any node and if the audio levels, frequency response and linearity of the mic are bad, there is only so much that can be done to fix it. The audio may still sound thin, muffled or tinny, and lack detail and presence. In having tested many studio mics, desk mics, and hand mics I have heard only a few hand mics (Icom HM-154T, Motorola HMN10xx and TDN83xx series) that can sound as good as a high quality desk mic (such as the Icom SM-10, SM-50, or Kenwood MC-85) or condenser mic (such as a Rode NT3), but proper dynamics processing can make even average hand mics sound almost as good. As with any radio or audio system, the node will only sound as good as the microphone, thus an important consideration is finding a mic with excellent audio quality at a reasonable price.

AllStar nodes should support the use of a DTMF mic or keypad for control functions, which implies that a radioless node should either use a DTMF mic or integrate a DTMF keypad into the node. DTMF commands can also be executed in AllScan, Supermon or other apps though, thus a DTMF mic is not essential. Getting a mic that already has a DTMF keypad is simpler but this limits the options to those that have a keypad and output actual DTMF audio rather than serial port button press data. For this node design a genuine Alinco EMS-57 is recommended as it's one of the few widely available models that meets these requirements and works with a 5V supply. This is a basic hand mic however and thus without additional processing the node's receive audio will not sound particularly good. It might sound fine compared to an average node used with an average HT, but that leaves a lot of room for improvement. And be sure to avoid the $20 knockoff EMS-57 mics on amazon/ebay/etc. I have tested these and they don't sound anywhere near as good.

Those who know the value of good quality audio probably already have a good mic or two that could be shared with a radio-less node using a mic/radio switch such as an MFJ-1263. However this would make the node less portable and could increase costs thus the node design should support mics such as the EMS-57 with the best possible audio quality.

To ensure a radio-less node's audio levels and quality will be on par with even the best radio-based nodes an Analog Devices MAX9814 Mic Preamp & AGC module should be added to provide low-noise mic preamplification, limiting, and a small amount of compression/AGC with attack and release times optimized for voice signals. These modules are available for under $3, which is quite a reasonable price for the resulting huge improvement in Rx audio quality.


The MAX9814 works very well with no audible noise and needs no adjustments other than setting the Gain and AR ratios to the minimum values (tie Gain to 5V, AR to Ground). It sounds very clear and hi-fi, providing a nice smoothing out of levels and good limiting without overcompression. The module I have has a 220nF timing capacitor resulting in an AGC attack time of 0.5mS and a release time of 265mS. The fast attack time provides hard-limiting while the longer release time plus 30ms hold time provides smooth detailed audio that makes optimal use of the dynamic range of the CM1xx ADC.

Without an audio processing module, there is nothing to provide limiting of the mic signal, and because hand mics have low output levels with a lot of handling noise, clicks and plosives, the result would be poor sound quality with low average power levels. This is often an issue to some extent even with radio-based nodes when low-cost radios are used that do not have adjustment options for mic gain or dynamics. Some of these functions could be provided by modifying the ASL code but this would increase CPU use and not take full advantage of the dynamic range of the ADC or prevent clipping. Thus the better solution is to optimize the audio at the analog source.

I have also tested MAX4466 mic preamp and SSM2167 dynamics processing modules. The SSM2167's noise gate threshold is too high and is not adjustable which has a very audible effect where quieter parts of the mic audio are cut out (gated). This could be a desirable feature in some cases but with no way to turn it off it's not ideal for general use. Thus significant gain is required in front of the 2167 eg. with a MAX4466 preamp to keep the signal above the noise gate threshold, but this results in significant low frequency noise (-20 to -30 dBFS) even with sharp high-pass filtering. The output of the SSM2167 is then clear and loud and sounds good, with average levels well above its noise floor, but is significantly overcompressed due its compression region being only 31dB wide after which it goes into hard-limiting. I also tested the SSM2166 IC (larger version of the 2167 with more adjustment settings and lower noise gate threshold), which requires more components and does not appear to be available on any low-cost module, and it soon became clear why it is nowhere near as popular as the MAX9814 – the SSM2166 has a lot of noise and audible artifacts, regardless of the settings.

With the MAX9814 the audio sounds transparent, smooth and even, not at all overcompressed or distorted, pops/clicks/plosives/handling noise well limited, with clear full-sounding audio whether talking 2" or 6" away from the mic. These are well designed modules with ferrite beads for RFI rejection, low power consumption, and very low noise. For more details review the MAX9814 IC datasheet and other info online. With these modules being ≤ $5 there is no excuse to not use one in a radio-less node. These have an electret mic and bias resistor on the module which should both be removed. The mic audio line then connects to the Mic In pad location shown above.

Speaker Audio Processing

Implementing the above recommendations will ensure that the mic (Rx) audio from a radio-less node has similar levels, tone and dynamics as even the best radio-based nodes. A similar approach can be taken with the speaker (Tx) audio also. The speaker audio is not as important because only you hear it, but to ensure a radio-less node sounds as good as a radio, limiting and possibly high-pass filtering can also be done on the Tx audio. Signals from AllStar can vary widely due to some users not having their gains set optimally which can result in 10+dB of difference in levels from one node to another. Most radios will not make an overly quiet signal louder but they will do limiting of overly loud signals which will help even out levels somewhat. Therefore to give similar levels and dynamics to a radio, processing should be done on the speaker audio to compress or hard limit signals above ~-10dBFS peak or ~-20dBFS RMS.

The goal in this case is to provide a small amount of AGC and limiting, similar to what we do on the Mic audio but with no preamplification needed and ideally a smaller AGC range, since incoming IAX audio should generally have more consistent levels than a raw mic signal. The MAX9814 has a fixed 20dB AGC range which works well for mic audio but might result in reduced Tx audio dynamic range. For speaker audio processing an AGC with an adjustable range of 0 — 10 or 15 dB should be ideal, with fast limiting to ensure no clipping. I'm now testing a few options to provide this between the URI and audio amp module.

A radio-less node ideally would have adjustments for Mic Gain, Low-cut filter Frequency and Slope, Mic EQ, Compression Ratio and Threshold, Mic AGC Range, Speaker AGC Range, Speaker Volume and possibly also controls for the AGC release times. However this would be 10 or more controls needing to be set and optimized, and would result in a larger and more expensive node. For hams who want the best possible audio such a node could be popular, but to keep the node design simple and practical it's better to optimize as many of these settings as possible based on testing with various mics and different nodes, hubs, etc. As the goal is to match the overall sound of a good radio, the same adjustments as are available on a good VHF base radio should be provided, and a variable AGC/limiter on the speaker audio would be a nice value-add.

Below pic is of my personal ANR200 with a Symetrix 528E Voice Processor and 421m AGC Leveler. The 528E is used for mic audio dynamics processing and powering a Rode NT3 Condenser Mic w/Inrad DMS-1 PTT Mic Base. The 421m processes the node output audio ensuring smooth even levels from AllStar, bringing up overly quiet stations and reducing the levels on overly loud stations. Most AllStar users have good audio levels in which case the 421m makes no difference but it is helpful for those occasional users who are too quiet or too loud. The 421m does add some quiet white noise to the audio output which is not an issue in radio / repeater nodes that already do bandpass filtering, or in radio-less nodes can be removed with a ~3KHz low-pass filter or with a speaker that has built-in filters.


Parts List and Component Options

The main components I recommend are as follows, with purchase links and approximate prices:

Total: $60

The above items are available from many sources and can be purchased from the links above or from any other reputable source. (If any links on this page are no longer working or you find a better source for any parts let me know.)

The PAM8302A modules are an Adafruit design and have been copied by many other sellers but unfortunately most of the copies do not work well and have significant distortion on the audio. Therefore only the module from Adafruit or from a reputable US seller with excellent reviews should be used.

I would recommend the Adafruit MAX9814 module also but have had no issues with MAX9814 modules from other sellers. This module is available on ebay from Chinese sellers for as little as 99¢ shipped, vs. $7.95 from Adafruit, which is quite a price difference.

I have bought many 3040's from various sellers for as little as $25. Some 3040's also come with a built-in wifi card and dual antennas, which work very well. Most 3040's run on 5V 3A, but some will also run on 5-16V. I've also seen new 3040's on ebay for a little bit more (~$60) which is a small price difference for new vs. used. But even a used 3-5+ year old 3040 should run very well for many years. The design is well thought-out with excellent thermal management and no fan to pull dust inside. If getting one that's more than a few years old I recommend checking the small backup battery and replacing it if below 3V. CR2032 batteries are available with solder tabs for as little as $1 ea. The case pops open with no tools needed and you can then also confirm if it has built-in wifi. Many 3040's have the internal wifi card and antennas even though many ebay sellers don't mention it. I usually have numerous 3040's with and without wifi in stock that I can provide with new backup battery and ASL preinstalled at a reasonable price. I can also provide kits with any or all needed parts, as well as fully assembled and tested nodes, or just the assembled audio module that will plug into an RPi or miniPC that you already have.

USB Radio Interface

A number of URIs are available that use high-quality C-Media USB Audio I/O Controller ICs:

Option 1: BH7NOR or Kits 4 Hams Interfaces

The BH7NOR R1-2023 are compact, inexpensive, and have outstanding RFI resistance. The Kits 4 Hams DINAH or PAUL should both work well. Any of these interfaces are good options but at $45+ they would be the most expensive part of the node.

Option 2: Modified CM108 Interface

CM108 USB interfaces work well though require some modifications, including soldering onto a ~0.01" (0.25mm) wide IC pin. If you have a microscope and experience with soldering surface-mount parts this is easy to do but otherwise could be challenging.

Total: $7

The CM108 fobs' stereo line out audio is excellent (Hi-Fi/CD quality) but the (unmodified) mic input has significant digital noise in the intended use with an electret mic. Removing bias resistor R6 solves that issue and the audio input then sounds great with over 60dB SNR. In about 10 minutes I can remove R6, solder on wires for COS (Mic PTT) and the audio, 5VDC and Ground lines.

The CM1xx-series ~45dB mixer gain range supports the mic input and audio output very well with no trim pots or resistors needed. ASL sets these gain settings in the IC based on the rxmixerset, txmixaset and txmixbset config settings. This provides a wide adjustment range while retaining the full dynamic range of the 16-bit converters. I have the txmixbset gain set at the default (500) in the simpleusb_tune settings. Without a mic preamp/dynamics module set rxboost=1 in rpt.conf and then rxmixerset to 999, however the audio quality is far higher with a MAX9814 preamp & AGC module, in which case set rxboost=0 and rxmixerset to around 50 (see simpleusb.conf settings below). I generally recommend CM108AH interfaces, but CM108B should also work fine, though will most likely require different gain settings.

Some C-Media ICs including the CM108B and CM119B can run with or without an external quartz crystal. Fobs that do not have a quartz crystal may have less accurate sample timing, though I have not yet confirmed if this is actually an issue.

There is a similar fob made by Syba that uses a CM119A IC. These go for $10, which is still very cheap. The Syba fob has a small plastic case and a metal housing on the USB connector which is nice and is a good alternative but may not have any significant advantage over a CM108AH fob.

Only C-Media or Syba fobs should be used. Other fobs are not as well made or encapsulate the IC in a resin material preventing access to the pins.

See the CM108 Sound Fob Wiring section below for further details.

Audio interfaces should have lower noise if inside a grounded metal enclosure with external wiring kept as short as possible. RFI is much less likely to be an issue with a radio-less node, but as this will likely be used in ham shacks that have various radios in use, ideally the same RFI precautions should be taken as for a node with radios. See my other How-To Guide for details.

Additional Required Components

You may already have a microphone around the shack with an 8-pin round plug wired for Kenwood or Alinco radios, which should work fine with this node, and you probably already have an external 4 or 8 Ω speaker with 1/8" (3.5mm) plug. This design uses 5V USB power from the MiniPC, which may not be enough voltage for some mics that are designed for 8V, though most such mics I have tested work fine on 5V. The Alinco EMS-57 is a good mic that is intended for 5V use and has a built-in DTMF keypad and encoder. Some other mics with keypads don't actually have a DTMF encoder and instead send serial data out expecting a radio to then generate the DTMF tones. Be sure to carefully review the schematic and pinout of any mic before using with this node.

A variety of other mics and mic jacks can also be used. Icom HM-154T DTMF mics sound good but have an RJ45 connector and do require 8V for the DTMF encoder. If a mic does not work on 5V a small DC-DC converter such as a B6287 module can be added to supply 8V or any other needed voltage. I have built nodes with Icom mic wiring instead of Kenwood/Alinco, using a B6287 step-up converter module to provide 8VDC, and they work perfectly. Battery powered mics would also be a good option such as a Rode NT3, which along with an Inrad DMS-1 desk mic stand can provide excellent audio quality.

If you go with an Alinco EMS-57 I highly recommend the genuine Alinco mic from a reputable source such a DX Engineering, HRO, Gigaparts, or other Alinco-authorized Ham Radio vendor. These go for about $68 but sound much better than the $20 Chinese knockoff EMS-57s. I have tested both, and the genuine Alinco has a much fuller sound, better presence, much lower handling noise, and a longer more pliable coiled cord. Everyone on AllStar will greatly appreciate your making the small additional investment required for a genuine high-quality mic. Good mics are a great long-term investment and tend to hold their value.

Kenwood MC-60A, MC-80 and MC-85 desk mics are great options that sound better than pretty much all hand mics, work fine on 5V (no batteries needed), have built-in preamps, and can provide the same audio level output as an EMS-57 allowing them to be used with this design with no changes needed to the mic gain settings. Many Icom desk mics can also work great but require an adapter to go to a Kenwood/Alinco mic pinout. The Icom SM-10, SM-30 and SM-50 are all great sounding mics. An MFJ-1263 Mic/Radio Switch Box is a great way to connect multiple brands of mics to various radios or radio-less nodes.

Any 4 - 8 Ω speaker should be fine, such as an Astatic VS4 which are only $12 and sound reasonably good for the price, or for significantly better audio quality a small mobile speaker from Icom, Kenwood or Yaesu should work very well such as an SP-35 or MLS-100 which are around $30 or so. I also tried a $15 Powerwerx MBXSPK but it sounded terrible. Old Heathkit, Motorola, GE and many other vintage speakers often sound great and can be found for ~$25 - $50.

A small PAM8302A amp module has plenty of volume for most environments, but for louder environments eg. driving on the highway with the windows open you may need something a bit louder. The PAM8302A module will output 2.5W @ 4Ω and 1.5W @ 8Ω or there are many other small audio amp modules available with power ratings into the 50+Watt range but you would then need to power the amp module from a separate power supply, as URIs or miniPC USB ports will only be able to supply about 5V 500mA. Powered external speakers can also be used in which case no amp module is needed in the node. Or potentially a small bluetooth module could be integrated into the node and a wireless bluetooth speaker and/or mic used, however this would complicate the design, probably result in low audio quality, and increase the chances of RFI issues.

Another option would be to integrate a small FM radio transmitter module into the node which would allow any FM stereo receiver, boombox, or car stereo to be used as the speaker. This would make the node even more portable because a separate speaker would not be needed. Many stereos also have an 1/8" Aux input that could be easily used, which would provide even better quality than a wireless FM stereo link. To support that just add an 1/8" TRS Line Out jack to the node in addition to the speaker jack output. The Line Out jack Tip and Ring terminals would connect directly to the Tx Audio line on the URI.

Some basic wiring (such as 24 ga. Hookup wire) is then needed to connect all the above together.

The above can be purchased directly from numerous sources or I can provide any of the above parts in a Kit. If you just need a few things it may be more cost-effective to get them directly from Amazon/Ebay/Mouser/DigiKey/etc., but if you need a number of the above items it may be more cost-effective to go with a kit. Amazon and ebay have pretty much everything you need at good prices and traditional electronics suppliers like Mouser and DigiKey are really only needed for more specialized components or where quality is important, for example I get filter capacitors and semiconductors from Mouser or similar US distributors to be sure I'm getting genuine high-quality parts meeting all stated specs. Pricing is usually lower when buying in larger quantities, thus I buy most parts in Qtys of 10 or more and can pass on the savings in kits I provide.

Optional Components

To add the Mic Gain Control (MGC) options you'll need an additional 2,200μF capacitor, 470Ω resistor (or as low as 220Ω is fine and will give a larger attenuation range), and the following:

Total: $5

Enclosure Options

Die-cast or extruded aluminum enclosures are essentially indestructible and have a nice "industrial" look. ABS, polycarbonate, or other plastic enclosures are also very durable, cost less and are a little easier to cut and drill. RFI can be more likely to occur with non-metallic enclosures but that's less likely to be an issue with radio-less nodes. Steel can work also but is harder to cut and drill.

The Hammond 1593WTBU translucent blue enclosures are a great size that's just slightly wider than the Dell 3040, and make it easy to see the status LEDs inside without needing to mount extra LEDs on the exterior. Clear visibility of the PC and radio interface is important. Sometimes things happen on AllStar such as disconnects or timeouts and the status LEDs make it easier to see what's going on.

For portable applications a small LiFePO4 battery pack and charger could be added allowing the node to work anywhere that wifi is available.

Another great option is to put the node components inside of an existing speaker enclosure. There are 100's of speakers available on ebay from vintage 1950's Heathkit or Motorola mobile speakers to many classic Kenwood, Icom, Ten-Tec, etc. models from the past 50 years. Pairing a high-quality speaker such as a Kenwood SP-70 or SP-120 with a classic desk mic such as an MC-60A, MC-80 or MC-85 can result in a node that looks great and sounds amazing.


For this build I added a bi-color status LED, mic jack, volume control, and A/B switch supporting the original functionality of an external input from any rig. This also has mic gain controls and a preamp/AGC bypass switch on the back to allow the node to be used with an external dynamics processor.

By default I use a Hammond 1593WTBU Translucent Blue Enclosure (4.1" x 4.3" x 1.4") but the Hammond 1593BBTBU (3.75" x 3" x 1.2") can be used for a smaller form factor similar to RPi's. The smaller version is slightly more difficult to assemble however due to the limited internal space, with little extra room for other options such as a Mic Gain Control switch and knob.

Setup Steps

Dell Wyse 3040 Micro PC

Installing ASL on a Dell 3040, other Mini/Micro PC, or Netbook is not hard if you're experienced in building/maintaining PCs. The 3040's have a UEFI-only BIOS that needs a boot file in a specific place. Making a UEFI USB drive is simple: Download the most recent ASL install image, then format the USB drive as FAT32 and unzip the image files onto it (7-Zip is a good program for unzipping ISOs). The USB drive has to have the ASL image files on it with no modifications. Do not try to make it "bootable" using some other program as that will result in a "legacy" boot format, which will not work.

There have been rare cases reported where people were not able to properly copy ISO files to a USB drive but were finally able to get it working using "Rufus", a free program that can create UEFI USBs. It's probably not going to do anything that 7-Zip wouldn't but it's possible that if you are unfortunate enough to be running an OS like Windows 11 that it may be limiting your ability to do basic things and thus a "special" program may be needed. (However in such a case the first thing I would recommend is to install Linux on your PC instead, as it's a far better OS that is completely free, more secure, and easy to install.)

To initially set up a 3040 requires a USB keyboard and a monitor/TV with a DisplayPort cable. Plug in the keyboard and DisplayPort cable. Power up the 3040 and when you see the Dell logo hit F2 to enter BIOS setup, and review the various settings. Some 3040's may have a BIOS password which defaults to "Fireport". This can be cleared in the Security section or if some other password was set can be cleared with a button on the PCB. Recommended BIOS settings:

System Configuration
→ UEFI Network Stack: Disabled
→ Integrated NIC: Enabled (NOT w/PXE)
→ USB Configuration: Enable all checkboxes
Secure Boot: Disabled
Power Management
→ AC Recovery: Last Power State
→ USB Wake Support: Disabled
→ Wake on LAN: Disabled
POST Behavior
→ Keyboard Errors: Disabled
→ Fastboot: Auto
Virtualization Support: Disabled

Nothing should need to be changed on the boot order page or most other pages. Once you have confirmed the BIOS settings, save and exit, and then when you see the Dell logo hit F12 for the boot menu, then select the USB drive. The 3040 will then boot from the USB drive and will guide you through the ASL installation.

The Intel/AMD ASL image is an installer image intended to boot on a removable device and install Debian and ASL on an internal storage device (or on a separate removable USB/SDCard). This differs from the RPi image which goes on an SD Card, into the RPi, and the install is done. The Debian installer is pretty simple and takes about 10 minutes to complete. The default options should all be fine. Make sure to install to the MicroPC's internal eMMC drive, overwriting ALL existing partitions.

The Intel/AMD ASL install image is based on the Debian Linux installer which has a boot file where the 3040 expects it. However, once the install finishes to the 3040 internal flash, the boot file there needs to be renamed for the 3040, thus an extra step is required: Hit Ctrl + Alt + F2 after the Debian installer has completed to access the console and then run the following commands:

sudo mkdir /boot/efi/EFI/BOOT
sudo cp /boot/efi/EFI/debian/shimx64.efi /boot/efi/EFI/BOOT/BOOTX64.EFI

(Alternatively these commands can be run by booting a UEFI clonezilla USB drive, selecting the "Local operating system (if available)" boot option, and then the Debian OS option. Clonezilla is also useful for backing up nodes and PCs and for upgrading PC hard drives.)

Then remove the USB drive and power cycle the PC. The rest of the AllStar setup process is then the same as on an RPi. Refer to the AllStarLink.org Install Guide to complete the node configuration and properly provision it on the AllStarLink Web Portal.

When I build nodes I use Clonezilla to restore an image with the latest compiled-from-source ASL 2.0, AllScan, Supermon and various other utilities already set up. I then update everything and make a backup copy of the node eMMC before shipping. For instructions on how to backup and restore a node using Clonezilla see this post on the AllScan Facebook Group.

Installing on other Thin Client models or on a Netbook or Laptop should be even easier as those shouldn't need the boot file to be renamed. Note however that Chromebooks should be avoided. Only use a Netbook if it already has a properly working Linux OS, not ChromeOS which is a closed and encumbered platform.

Alternatively, Debian 10 can be installed from a Debian install USB, and then ASL installed as described in the "Updating to the Latest ASL Code" section below. This gives more options in how Debian is set up. Debian 11 or 12 can be used also but ASL does not yet officially support those and a lot of extra steps are needed to make the compile work (see the ASL Forum for details).

A Desktop GUI can be a nice addition if you have a monitor, TV, or remote desktop app that can be connected to the 3040. The Xfce Desktop is easy to set up, looks great, simplifies wifi and wired network management, and only needs about 2GB of eMMC space. The whole install with Desktop can fit on an 8GB 3040 but is a tight fit requiring some adjustments to partitions or removing unneeded packages thus the 16GB 3040 version is preferable. The 3040 is then a full-featured Linux PC with 1,000's of free programs. Only a single command needs to be run to install Xfce, see this article for details.

Recommended App-Rpt Settings

Tests I ran on a 3040 (which has 4 CPU cores) doing a full-duplex parrot test showed that the simpleusb driver and usbradio driver in various modes use about 25% CPU (6% total CPU of all 4 cores) or slightly higher but well under 10% total CPU. Tests with the Linux 'htop' command confirmed that asterisk does appear to use all 4 CPU cores thus there should be plenty of headroom on the 3040.

My testing of the usbradio driver in carrierfrom=usbinvert mode (using the iaxRpt PC app recording directly (software loopback) into Audacity) showed that usbradio bandpasses and limits the outgoing IAX audio, which results in a significant reduction in overall dynamic range and loudness. Thus I recommend the simpleusb driver as this transmits the mic audio over IAX exactly as it came in from the ADC. Usbradio's limiting and bandpass filtering could be useful if they were more flexible but there seems to be no option for makeup gain thus all audio is limited to <~-10dBFS.

rpt.conf Recommended Settings

rxchannel = SimpleUSB/usb_[node#] ; Comment out all other rxchannel lines
duplex = 3 ; Full-duplex, do not repeat Rx audio to Tx audio
hangtime = 100
althangtime = 100
;linkunkeyct = ct8 ; Comment out to prevent courtesy tones when connected
holdofftelem = 1
telemdefault = 0   ; Prevent "node X connected to node Y" messages
parrotmode = 1     ; 1 = Parrot On Command
;Uncomment following lines:
921 = cop,21 ; Enable Parrot Mode
922 = cop,22 ; Disable Parrot Mode

simpleusb.conf Recommended Settings

rxboost = 0 ; If not using a mic-preamp/dynamics module set to 1
carrierfrom = usbinvert
ctcssfrom = no
deemphasis = no
plfilter = yes ; enable PL filter - reduces low frequency noise
txmixa = voice
txmixb = no
duplex = 1 ; Full-duplex

Updating to the Latest ASL Code

The ASL install image is rarely updated thus to get the latest features and bug fixes requires downloading and compiling the latest code and updating the OS and packages. This takes about 10-15 minutes to do, as follows:

  1. Log into the node by SSH as root (run "sudo su" if not already root user).
  2. Run the command listed on the ASL GitHub Prerequisites - "Install apt dependencies" section. Note: The "Repo" steps should not be necessary and are not recommended.
  3. Run the 5 commands listed on the ASL GitHub Compiling - "Manually" section.

Your node should now have the very latest ASL code, fixes and features. If you see any error messages, go to the ASL Forum App_rpt-users Category, do a search there to see if the error message was already reported and a solution provided, or if not open a new Topic there and describe the error(s). You should then likely get a response within a few hours or so. Because ASL is currently in the process of Beta testing the 2.0 release there can occasionally be compile errors but they are usually easy to resolve thanks to the many excellent devs and contributors.

After setting up any node I recommend checking the system logfile /var/log/syslog periodically to make sure there are no error messages shown during system boot and normal operation. I have seen errors with some ASL versions where an invalid command in /etc/network/if-up.d/firewall causes the networking service to exit and thus the node will lose its DHCP IP address after half a day or so (bug report). This is easy to fix by commenting out the 1st line in /etc/network/if-up.d/firewall. I have also seen an issue where the cron entry set up for AllMon is not valid preventing Allmon's astdb file from getting updated. If you don't use Allmon it's not an issue but is easy to fix by adding a cron command similar to the one set up by Supermon (eg. run "sudo crontab -e" and add a "0 9,21 * * * (/usr/sbin/astdb.php cron)" line at the bottom). There are other known issues in older ASL code that have already been fixed in the latest code, and these couple other fixes will probably be merged soon.

Wiring and Assembly

The MiniPC provides 5V on the USB ports, with the URI then providing 5V to the mic and audio modules. The node can also be powered from 12VDC instead of an AC adapter by using a 12V 3040 version or an LM2596 module or similar DC-DC converter which are widely available for < $2 ea. Dell Wyse 3040's are often available on ebay without AC adapters at a significant discount, thus a 12V powered node can be even more cost-effective.

To enlarge any image in this document, Right-Click → Open Image in New Tab

CM108 Fob Wiring

Using a ~$5 CM108 Sound Fob will result in a major cost savings vs. relatively expensive radio interface modules, and is easy to do if you have experience working with surface-mount electronics. Modification instructions:

  1. Remove resistor R6
  2. At the top middle there are 3 light brown capacitors in a row. Connect the 5VDC wire to the left side of the bottom capacitor (just above the "C10" text)
  3. Attach a 28 or 30 gauge wire to Pin 48 on the CM108 IC (COS)
  4. (optional) Attach a 300Ω resistor and LED to Pin 13 on the CM108 IC (PTT). Cover the resistor to LED connection in heat shrink tubing. Then connect the LED cathode to the Mic Jack Sleeve pad
  5. Connect wires for the Mic (Rx Audio) line, Spkr (Tx Audio) line, and Grounds

Wires can be soldered directly to the contacts on the tops of the 3.5mm jacks. An advantage of this approach is that the 3.5mm jacks remain fully intact and usable, which can be useful for test/debug purposes.

NOTE: The Tx Audio line can be taken from the 3.5mm jack Tip (Left channel - txmixa) or Ring (Right channel - txmixb). Be sure to set the txmixa and txmixb settings in simpleusb.conf accordingly.

Closeups showing wired CM108AH fob ready for assembly into an ANR100



URI & Mic Wiring

The below diagram shows the lines that need to be connected to the 8-pin mic connector, followed by the connection locations on the URI and other components. 5 wires need to be connected: Mic, Mic Gnd, PTT, 5VDC, and Gnd. The Mic and Mic Ground lines should be run as a twisted pair to the MAX9814 module which has a ferrite bead between Gnd and Mic Gnd for improved RFI rejection. A ~1nF bypass cap should be placed across the mic input pads on the MAX9814 module.

Front View of Mic Jack

Wiring - Modified CM108 Sound Fob

Line Out Jack Tip ------ Volume Control Potentiometer (Tx Audio)
Line Out Jack Sleeve --- Volume Control Potentiometer Ground
Mic In Jack Ring ------- MAX9814 Out (Rx Audio)
Min In Jack Sleeve ----- Mic Jack Pin 8 (Ground)
CM108 Pin 48 (COS) ----- Mic Jack Pin 2 (PTT)
CM108 Pin 13 (PTT) ----- PTT LED (optional)

Wiring - R1-ASL

MiniDIN6 Pin 1 --- Volume Control Potentiometer (Tx Audio)
MiniDIN6 Pin 2 --- Volume Control Potentiometer Ground, Mic Jack Pin 8 (Ground)
MiniDIN6 Pin 4 --- Modify to provide 5VDC
MiniDIN6 Pin 5 --- MAX9814 Out (Rx Audio)
MiniDIN6 Pin 6 --- Mic Jack Pin 2 (PTT to URI COS)

Wiring - RIM-Lite V2

DB9 Pin 2 --- Volume Control Potentiometer (Tx Audio)
DB9 Pin 3 --- Mic Jack Pin 2 (PTT to URI COS)
DB9 Pin 6 --- MAX9814 Out (Rx Audio)
DB9 Pin 8 --- Volume Control Potentiometer Ground
DB9 Pin 9 --- Mic Jack Pin 8 (Ground)

MAX9814 Mic Preamp & AGC Wiring

The MAX9814 module first needs to have the electret mic element removed, which can be done by holding a soldering iron on both pins then pull it out or let it drop out. (Desoldering braid can be used to remove remaining solder.) Then remove the small bias resistor next to the Mic+ pad. Then connect 2 short wires for 5V and Ground, and connect the AR input to Ground. If you'll only be using mics such as a genuine Alinco EMS-57, Kenwood MC-60A, 80 or 85, or a mic that has an output level adjustment control, no mic gain adjustment controls should be needed and the MAX9814 Gain input should be connected to 5V.

To accommodate a wider gain range and support dynamic mics that do not have a built-in preamp, a 5KΩ potentiometer can be added before the MAX9814 module, and a SPDT (On/Off/On) switch can be added to allow the +10 and +20 dB MAX9814 gain options to be easily enabled. If you may at some point use a microphone other than the Alinco EMS-57, or if you have a loud voice or like to talk very close to the mic, this potentiometer will allow the gain to be reduced. The CM108 has additional gain available with the rxmixerset parameter but it does not have much room to reduce gain since the MAX9814 already provides 40dB of preamp + AGC gain, and in the case of low output dynamic mics these require additional gain in the 9814 preamp section to ensure proper AGC input levels.

To reduce low-frequency (LF) noise a 0.1μF film capacitor should be added between the mic jack and MAX9814 input. This forms an RC high-pass filter with the 5.6KΩ resistor (or 5KΩ MGC potentiometer + 470Ω resistor if adding the Mic Gain Controls), with -3dB frequency of around 300Hz (1/2𝜋RC) with a slope of 6db/octave. That's not a steep filter slope but will make it less likely that various LF noise such as wind noise or thumps will result in excessive limiting or clipping. If you have good mic technique and do not use the node in noisy environments this RC filter may not be needed, but it's easy to add and will ensure smoother AGC performance. The simpleusb driver has a plfilter setting that does a 24db/octave low-cut below 250Hz, which will prevent LF content going out to other nodes and thereby provide a frequency response consistent with radio-based nodes, but because simpleusb's filtering happens after the ADC, excessive LF from the mic can result in degraded dynamics and gain pumping effects if not filtered prior to the MAX9814. Ideally an 18 or 24 dB/octave low-cut filter would be added prior to the MAX9814 in which case the filtering in simpleusb would not be needed, but such a filter would require a significant number of additional components ie. an Op-Amp IC and about a dozen resistors and capacitors (for a schematic or an assembled PCB contact me for details).

The simpleusb driver by default does not filter out low frequencies thus plfilter should be set to yes in simpleusb.conf. Or the usbradio driver can do similar filtering with the rxhpf setting in usbradio.conf, with selectable 250 or 300 Hz -3dB point.

An issue with any audio test that relies on voice is that there is a lot of variation depending on how loud you talk, mic distance, response of the mic itself and the voice characteristics of different people. I prefer to talk at least a few inches from the mic and at an angle to minimize plosives, and with that an rxgain setting of 75 usually works well for me. But there could easily be ±6-10 dB of difference in voice energy content vs. frequency, overall volume and mic technique for different people, which could result in overly "hot" audio for some people.

The MAX9814's AGC function (which with relatively short attack and release times acts as a compressor/limiter) brings up the average levels and provides nice even levels, limiting loud peaks while boosting quieter parts. This can result in average RMS levels being higher than other nodes, which can be helpful so long as the audio is not overcompressed or clipped. Many AllStar nodes have quiet audio, probably often because of the use of HTs with low mic gain, and many are too loud. Audio should utilize the full dynamic range of the ADC, have a slight amount of compression to ensure good intelligibility in low dynamic range (high background noise) contexts, and limiting to prevent ADC clipping.

Assembly Steps

I recommend first carefully drilling the appropriate sized holes in the enclosure for the jacks and controls. This template is what I use but be sure to double-check all measurements. I then recommend pre-wiring each module as described in the above sections, at which point the modules then connect together quickly and easily.

Connect the CM108 module to the volume potentiometer, mic jack pins 2, 5 & 8, and the filter cap

Be careful when soldering to the mic and speaker jacks – too much heat can melt the plastic and damage the jacks. I recommend putting a plug in each jack when soldering to help keep the jack contacts stable and better dissipate heat, and not holding the soldering iron on the jack terminals for any more than ~half a second.

Connect the MAX9814 and PAM8302A modules

Connect the speaker jack to the audio amp module

The wiring is now complete. Now plug in a speaker and mic, and plug the USB cable into a 3040, RPi or other computer running ASL.

If using the smaller Hammond 1593BBTBU enclosure the assembly steps are the same but things will be more tightly packed:

Pre-wired modules prior to final assembly:


If adding the optional Mic Gain Controls and for a more detailed overview of the recommended assembly steps see the demo video & slideshow below.

Demo Video and Slideshow of All Build Steps with Mic Gain Control Options


Additional Notes

No PTT line is needed since there's no radio, but an LED can optionally be connected to the URI PTT line to show when it's outputting audio, which is useful for seeing when the node is keyed up, ie. during hang time with no audio or if you had the volume turned down or had several nodes/radios nearby and wanted to be able to see which one audio was coming from. The mic's PTT line connects to pin 48 on the CM1xx IC (COS). PTT on most mics is active-low thus no extra resistors or transistors are needed.

Speaker-mics can be easily supported with this design. These almost all have an electret mic element requiring a few Volts on the mic audio line, which can be provided with a 2.2KΩ resistor connected between audio line on the mic jack and 5V. In this case the type of jacks used by the speaker-mic/headset (usually 3.5mm TRRS or 3.5mm & 2.5mm K1 jack) should probably be used. If you have any questions on how to best accommodate a specific speaker-mic let me know.

It does not appear that any speaker-mics are available that have a DTMF keypad, and because DTMF control is a useful feature ideally a DTMF mic and separate speaker can be used. DTMF control is not always needed and does have some limitations however. Apps such as AllScan and Supermon are much easier to use than memorizing various DTMF command codes and node numbers, and they allow you to disconnect from a node without keying it up. For example if you are connected to a repeater/hub node and then want to disconnect, with DTMF you have to key up the mic in order to send the disconnect command, which results in keying up the repeater/hub and all users of that system hearing the button clicks and kerchunk. This can be disruptive to other users and should be avoided if at all possible. DTMF can be very useful for other purposes however, for example if you take the node on a trip and connect to a network that you don't have control over and need to determine the node's IP address, or need to turn wifi on or off. Nodes I build support these functions with DTMF commands *690–*693, and can easily support any other OS or hardware functions.

A small speaker could optionally be built into the node enclosure but it's probably simpler to have a 3.5mm TS jack for an external speaker, and optionally an additional 3.5mm TRS jack for headphones or a line out connection.

The CM108B datasheet indicates it will only put out 442mVrms into 32Ω which is only 6mW of power, which is enough for some headphones but not for a speaker. Thus an audio amp module is needed, along with a 1KΩ audio-taper volume control potentiometer. A PAM8302A amplifier module will output 2.5W which is plenty for typical use around the QTH. I initially tried an LM386 module which sounded good however it had some occasional quiet clicking noises even when the volume control was all the way down and even with an added bypass capacitor. I then switched to a PAM8302A module and the noise went away. The PAM8302A does have some very quiet background white noise but it's only audible when the node is not keyed and if your ear is right next to the speaker. TDA2822M audio amp modules have also worked very well and may provide slightly better sound quality and less potential for RFI than Class D (digital PWM) amplifiers. I also tried an LM4871 module but it had the same clicking noise issue as the LM386. And I have used HJX8002 Audio Amp Modules but then found they sometimes also have a clicking noise issue when used with a 3040 with WiFi.

Node Management / Dashboard Apps

Installing AllMon and then Supermon is highly recommended. Supermon provides many system info and configuration functions and only takes about 5-10 minutes to install and configure. AllScan can then be installed in even less time and provides a Favorites Dashboard with integrated ASL Stats scanning. This makes it easy to add favorite nodes and see their Tx & Rx activity and Connected Link Count stats in real-time (typically 1-minute resolution). These apps can be used in any web browser.

Wi-Fi Support, Portability

Wired-internet is more reliable and easier to set up but for a portable node wireless connectivity is essential. USB WiFi adapters are inexpensive and fairly easy to set up if you have basic familiarity with Linux.

Many 3040's come with an internal WiFi card and antennas that work well. Otherwise a cheap USB WiFi adapter should work for short-range communication but I would recommend a reputable brand that's known to work well on Debian Linux and that has a proper antenna. With WiFi frequencies starting at 2.4GHz, a 1/4λ vertical antenna should be 3cm in length or for some gain you'd want 1/2λ or 5/8λ ie. 6-7cm antenna length. Any adapter that's smaller than that is probably not going to have good performance. The TP-Link "Archer T2U Plus AC600" look good and are < $20. I would suggest testing a few different models and seeing how their signal strength, jitter, packet loss, etc. are at different distances from your WiFi router.

If you use WiFi on a node you should have basic familiarity with Linux and configuring the various settings. Eventually some setting or driver may need to be updated or debugged. Like anything with computers this is not hard to do, just do a web search for what you want or what issue you're seeing and dozens of web pages with plenty of answers will usually come up.

Wi-Fi Setup for nodes with no Desktop GUI (Command-line Only)

This Article has detailed instructions on how to set up wifi on Debian. This process does require knowing the node's IP address (which can usually be found on your router management page) and initially connecting to the node through ethernet with an SSH app. This may not be easy to do on networks that you do not manage but there are ways to make that easier, for example you can set up a command in ASL to say the node's IP address in response to a DTMF command. On all nodes I ship I have DTMF commands *690 and *691 set up to say the node's LAN and WAN IP addresses. See the AllScan FaceBook Group for details on how to set up these commands, plus many other tips and updates.

Before configuring WiFi as described in the above article you may need to run the following steps: "sudo su", "apt install wireless-tools wpasupplicant", then run "iwconfig" and confirm a wireless interface is listed. On a Dell 3040 with internal wifi module this shows a wireless interface named "mlan0". You may then need to run "ifconfig mlan0 up" to start the interface. "iw mlan0 scan" should then list the available networks, or run "iw mlan0 scan | grep SSID" to see just the names.

After first setting up wifi on a 3040 I was seeing a lot of jitter and audio dropouts but after disconnecting the ethernet cable, restarting my wifi router and restarting the node, everything worked perfectly.

Another way to set up wifi on Debian is with iwd, which may be slightly simpler vs. the article above. See this Article for details.

Wi-Fi Setup for nodes with a Desktop GUI

To simplify wifi network management a desktop environment can be set up on the node such as Xfce or MATE along with a small ~11-15" LCD monitor and USB keyboard/trackpad – or use an inexpensive Netbook or small Laptop instead of a MiniPC. Connecting is then as simple as clicking on the network icon and selecting the wifi network.

If you often travel and connect to various wifi networks, using a small laptop or netbook for the node computer rather than a 3040 can make things much easier to manage. These are available for around the same price as 3040's which is a quite a deal considering they include an LCD, keyboard, trackpad and battery. I have used a small Asus netbook that came with Linux Mint preinstalled (was only $50 on ebay) that I set up with Debian 11 and ASL and it works perfectly. This makes for an innovative node product that in addition to being an AllStar node works as a regular laptop and runs 1,000's of free programs available on Linux supporting web browsing, office apps, graphics, audio, music, ham radio apps, etc. Small laptops are slightly more expensive but still < $100, and have a nicer keyboard, more I/Os, and better performance.

For my ANR100-LT nodes I use Dell E7440 laptops, which are easy to find for < $100, with 256GB SSD, charger and Win 10 Pro. They are really nice compact laptops with backlit keyboard, full HD LCD, and many hours of battery life. I then shrink the C drive by 65,535 MB and then run the ASL install USB, which installs Debian and ASL on the blank 64GB partition and automatically sets it up to dual-boot either OS, with Debian 10 and ASL as the default. ANR100-LT Demo Video

Full-Duplex Communication Benefits

Radio-less nodes support full-duplex by default ("duplex" should be set to 3 in rpt.conf and to 1 in simpleusb.conf). This provides some very nice advantages over half-duplex nodes.

In The Beginning...

In the beginning...there was CW. Most HF/CW/All-mode transceivers support full or semi break-in keying, meaning that the receiver is on between symbols/letters/words sent. Thus if someone is transmitting on a decent radio and making a reasonable attempt to monitor the frequency between characters or words, anyone can easily break in. Thus CW supports interactive, fluid conversation, and allows others to join a QSO or reply to a CQ at any time. CW can be considered semi-duplex because each dit and dash is only a couple 100mS and good radios can switch between Tx and Rx very quickly. Thus the receiver is never off for a significant time and it's easy to hear responses and other activity on the frequency.

And then there was AM, and soon after SSB which is much more energy-efficient and more widely used. Because SSB has no carrier there is no energy transmitted (or very little) during quiet parts ie. between words or during pauses. Experienced hams take advantage of this by briefly unkeying here and there, during pauses or maybe every other sentence, for enhanced awareness of the channel. This is a subtle technique that many aren't aware of. Some operators will just key up and talk for minutes straight, whereas more experienced OMs tend to keep things shorter and more interactive – just like in-person conversations. When you talk to someone in person you don't just talk for 3+ minutes straight at a time without ever pausing to allow someone to comment, acknowledge, reply, etc. And there's usually no good reason to do this on the ham bands, with some exceptions such as on nets. Thus while SSB is not generally full-duplex, experienced hams use it in an interactive way where they pay attention to what's happening on the frequency (as well as plus or minus a few KHz where there might be QRM or QRN that needs to be worked around), and as a result QSOs tend to be more dynamic and interesting.

And Then There Was FM

Next there was FM. FM sounds better than AM because of its better noise resistance, but it is less energy efficient than SSB due to having a constant power regardless of modulation level. And unlike SSB where you can unkey briefly with no audible effect, if you unkey on FM it results in squelch drops for listeners (unless their radio has unusually good squelch like an IC-9700 or they have tone squelch properly set up), thus there is a slight disincentive on FM to pay attention to the channel while you're transmitting.

Due to the FM capture effect, multiple people can't transmit at the same time or the signals interfere destructively or one covers up the other. With SSB that's not an issue and multiple signals combine linearly. One might be louder than the other or you might not be able to follow what either is saying very well but at least you'll be able to tell that there are 2 people talking, vs. FM doubling which can sound like a train wreck. Thus when FM first started being used on repeaters 60+ years ago it sounded great but also had some limitations that earlier modes did not.

As a side note, repeaters don't need to only use FM (or PSK digital equivalents). They could also support SSB without a huge amount of effort. Squelch would be a little more complicated because you don't have a constant carrier to reference, but DSP, signal analysis, noise reduction and AGC techniques have come a long way since the days of the first FM repeaters. It would not be hard to set up a repeater with separate FM and SSB inputs and repeat the audio on separate FM and SSB outputs. This would for the first time (that I know of) enable the advantages of SSB to be achieved on a repeater, namely SSB's inherent resistance to destructive interference and thus the ability to support multiple signals on a single frequency, and SSB's greater power efficiency that would reduce battery use for portable users or give more range with the same average power.

Before the Above There Was The Telephone

Originally repeaters and radios only supported half-duplex (from the user perspective). If you receive at the same time you're transmitting, from a repeater that has only one FM receiver, you're generally just going to hear yourself, or maybe a bunch of noise if someone doubles with you. Technically a repeater is full-duplex because it can transmit at the same time it's receiving, but that doesn't do you a lot of good (beyond the basic advantages that repeaters provide) if no more than 1 repeater user can transmit at the same time. Prior to ASL, only rarely did repeaters actually support true multi-user full-duplex communications. This is in contrast to phones which are multi-user full-duplex and always have been, which is much more natural and intuitive. Even the very oldest telephones from the 1800's were full-duplex. Apparently Thomas Edison and whoever else contributed to the early development of telephones figured out that it would be easier to just let people talk whenever they want with no limitations on how many people can talk at a time. This is easier to do on a pair of wires than over RF, but can be easily done on RF by using multiple bands/frequencies.

Multi-User Full-Duplex Repeaters

Most repeaters have only one FM receiver, which due to the FM capture effect can only properly receive one signal at a time, thus there was really no such thing as a repeater where any number of people could talk at any time while also hearing everyone else. To support that without ASL currently requires a repeater to have multiple receivers. Such systems do exist and work well for trivia nets or other scenarios with quick-witted hams jumping in with quick comments. San Diego's W6ZN repeater does this and there are numerous interlinked repeater systems with multiple inputs such as the SoCal DARN or PAPA systems where you can listen to one repeater on one mountain and transmit into a linked repeater on another mountain. ASL now makes it much easier for repeaters to support true multi-user full-duplex, as connected (radio-based) user nodes in fact extend the repeater with additional receivers and user-specific link monitoring transmitters (ie. that do not repeat local Rx audio).

And Then There Was The Internet

The Internet is essentially an extension of public telephone systems that had existed for a century before, with the major difference being packet-switching vs. circuit-switching. They both work for getting audio from one place to another regardless of if it's half-duplex or multi-user full-duplex. The internet does this in a general way with no limitations on the application layer which is a big improvement over the closed and proprietary phone system networks that have now become mostly obsolete.

And Finally There Was Asterisk and Then AllStarLink

Because ASL is based on Asterisk – a phone system, it supports full-duplex perfectly and makes it very simple. Even repeaters that have only one RF input, that would not ordinarily support multi-user full-duplex, if ASL-linked now support this capability by default for all AllStar users. I have tested this on many repeaters and it works just like a full-duplex phone call on a speakerphone. You talk just like you would on a simplex node but if someone else keys up you hear them and if someone doubles you hear it right away. Because you always hear the remote system, and if someone starts to double or there's echoes, timeouts, interference, etc. you can simply unkey until the repeater (or node / hub / bridge / etc.) is clear. This is a powerful feature that greatly improves the interactivity, efficiency and flexibility of amateur radio repeater communications. And it's an essential feature in emergency comms scenarios.

For those who have not used a full-duplex radio or node, or who do not intuitively understand how much of a difference it makes, a simple analogy is to consider what it would be like if the phone system was only half-duplex. Imagine that when calling a friend, relative, or business if only one person could talk at a time, no one could speak until the other person or people on the call unkeyed, and if when you then did key up to speak you couldn't be sure someone else hadn't keyed up at the same time. This would result in awkward and inefficient conversation because it would no longer be like real in-person communication. In contrast, full-duplex enables natural, smooth, effortless communication just like when you're standing right next to someone.

True Multi-User Full-Duplex

Although most people may not know it (even repeater owners), ASL-linked repeaters by default do support true Multi-User Full-Duplex. This is a subtle detail that can be hard to fully appreciate until you've tried it yourself. The repeater itself on analog will not support more than one analog RF input at a time if the repeater has only one RF receiver, but generally will support any number of simultaneous ASL full-duplex users and at least one analog RF input. There are a small number of improperly set up repeaters that don't support multi-user full-duplex but I only know of a few.

By default when a repeater links to ASL it will be with a node whose audio output gets mixed with the RF receiver audio input(s). Some repeaters may prioritize one over the other and only allow one audio channel at a time, or ASL may be linked through some intermediary interface, but even then multiple connected AllStar users can still be full-duplex and talk and hear each other fine, as that's a core feature of Asterisk's architecture. Audio streams from each connected node are always routed to all other connected nodes, no different than a VOIP conference call.

Some repeater system admins may opt to give RF Rx audio priority over AllStar Rx audio but there is no advantage to this and it only causes issues. For example if an RF user and an AllStar user key up at the same time the RF users on the repeater will hear only the RF user while AllStar users hear only the AllStar user, thus resulting in 2 separate conversations, which makes for quite a dysfunctional system. Such a phenomenon could be called "halfing" rather than "doubling", as it results in the communications topology being split into separate halves while both users are keyed up. Fortunately only a small number of repeaters seem to have this issue. If you should encounter such a system I suggest letting the admins know there is a better approach, ie. combine (mix) the Rx audio inputs rather than prioritize one over another.

Amateur vs. Professional

Go on any repeater net that has more than a half dozen or so users and you'll frequently hear doubles, echoing, etc. This wastes minutes of everyone's time and sounds "amateurish". Full-duplex solves these issues and gives you full situational awareness. This goes back to the definitions of "amateur" vs. "professional". "Amateur" just means we're not in it for money – not that we can't communicate well. Full-duplex gives you full real-time situational awareness – just like in the real world if you were right next to everyone in the QSO, and AllStar makes this so easy to do that there's no reason not to.

FAQs

Q: I like the idea of Full-Duplex but I have to wonder wouldn't I get a lot of feedback? When I use Full Duplex on satellites I need earbuds.

A: The great thing about Full-duplex on AllStar (with duplex=3 in rpt.conf, not 2 or 4 which is a repeater), is that it does NOT repeat your Tx audio into the Rx audio that goes back to you. Thus it's no different than talking on a speakerphone – you hear the other people on the call but it doesn't feed back your own audio. Because of this, Full-Duplex is actually much easier to use on AllStar than it is on satellites or non-ASL-linked repeaters.

Node Notes / Instructions

I provide the following notes with nodes I build and have included them here as they are useful notes regarding the general operation of any AllStar node.

  1. When you first plug in the node and connect an ethernet cable, it should be assigned a DHCP address by your router. If you look on the router's web admin page it should show a list of connected devices and the IP Address assigned to the node. You should then 'reserve' that address for the node there so the IP Address does not change later. The *690 DTMF command can also be used to have the node say its LAN IP address, or *691 for the WAN address.
  2. You'll also need to then forward port 4569 UDP&TCP in the router to the node. If this is not done you may get jittery audio or dropouts. (This assumes you do not already have another node on port 4569. Otherwise subsequent port#s should be used ie. 4570, 71...)
  3. If you will want to use AllMon/Supermon/AllScan from external networks you'll also need to forward port 80 TCP in the router to the node, or for portable nodes use a Dynamic DNS service.
  4. To access the node by SSH enter the node's IP Address in your SSH client, username=______ and password=______. This password should be changed. To do this, log into the node by SSH and type "passwd" and you will be prompted for a new password. Make sure not to lose that as there is no easy way to recover or reset it.
  5. AllMon, Supermon and AllScan are all installed and have the same login: username=______ password=______, and can be accessed by entering the node's IP or DDNS Address in your browser. This will open the AllMon index page which then has links to Supermon and AllScan. To update the AllMon password see this link. To update the Supermon password see this link. To update the AllScan password go to the Users page link.
  6. If the Dell 3040 has not been connected to power for awhile sometimes the power button has to be held in for 5-10 seconds and it may take a minute to then start up. Usually though a single click is all that's needed to turn it on or off.
  7. AllStar nodes can take several minutes after first being turned on to register with the ASL Network and for connections to remote nodes to then be accepted.
  8. RX and TX level adjustments can be made in the asl radio tune settings, by logging in by SSH and running "sudo /usr/sbin/simpleusb-tune-menu" if using simpleusb driver or "sudo /usr/sbin/radio-tune-menu" if using usbradio driver, then follow the prompts to adjust the level settings.
  9. You can check your audio using Parrot mode: Enter DTMF command *921 to enable, *922 to disable. (Be sure you're not connected to any other nodes when doing any testing.) N2DYI's Parrot Test Node 55553 can also be used.
  10. The audio levels on the node have been adjusted to good general levels, however your voice and various mic(s) you use may be louder or quieter than average and you may need to adjust the Rx gain (volume level from the mic going out to other nodes) accordingly. You can also adjust the Tx gain (max volume from the speaker) to your personal preference.
  11. For nodes with wifi, it is generally recommended to use wired ethernet when available for best performance. In this case the wifi module should be turned off with the SSH command "ifconfig mlan0 down" or DTMF command *692, and can later be turned back on with the command "ifconfig mlan0 up" or DTMF command *693. The wifi will default to on when the node is next powered on or rebooted, unless this is changed in the networking settings.
  12. If you have questions on the node or settings be sure to review this guide, which is frequently updated.

Troubleshooting

If there is any noise on the node's transmit or receive audio, try adding a small ferrite clip-on filter on various audio and power wires. And to prevent possible ground loops, keep all wiring as short as possible and always run power and audio wires/cables in straight lines and next to each other rather than spread apart or in any kind of shape resembling a loop. Also be sure to use only a star-ground configuration such that there is no more than one ground path between any 2 node components.

If you get distorted audio or stuttering/dropouts, make sure all your port settings match on the ASL site for both the server and the node, and that those match the port settings in iax.conf (bindport), rpt.conf ([node#] = radio@ip:port), in the node's firewall (iptables) configuration, and in the router/cable modem. This is 6 different places the port has to be set. If it's your first node then you probably have the default of 4569 and didn't need to change anything, but if it's not your first node then a different port number is required (eg. 4570, 4571, ...), and all 6 of those places need to have the same setting. The node can still appear to be working fine if those settings don't match but the audio will be more likely to have stuttering/dropouts.

Conclusion

My goal has been to build full-duplex radio-less and radio-based nodes as cost-effectively as possible using only high-quality off-the-shelf components, that are fully self-contained and as portable and compact as possible. I also build and sell fully assembled, configured and tested nodes, to accommodate hams who would rather pay a little more for a plug & play node than build one from scratch. For more info send me an email. I usually have several nodes in stock or can custom build a node to your specifications usually within a couple days.

Because all the software is open-source and the node uses only commonly available off-the-shelf parts, anyone can make a node with the same main components and sell them on ebay/qrz/eham/etc., while adding their own unique touches, other features, options, or optimizations. I encourage anyone to do so and hope this article will be useful.

Note for ebay users: Be sure to contact me (or any other ham radio equipment builder) directly before purchasing a node through ebay. Ebay fees are quite high and you can save 10-20% by ordering direct from a reputable seller and using no-fee payment services such as venmo or zelle.

Contact

For any questions, feedback or other enquiries email david at allscan.info. 73, David NR9V

−−··· ···−−

GitHub | Facebook Group | YouTube | AllStarLink.org | ASL Forum | eHam.net