Friday, June 27, 2014

Introducing "Rebel Base"

I have previously blogged about the state of rig control and remote base software, where much of it is proprietary.  It is often said that if you don't like what's out there, go write your own.  But that's not so easier for a non prorammer.  However, I do have many years experience running IRLP nodes and reflectors and hacking in general with BASH shell scripts under Linux and Mac OS X.

Using what I know and a number of open source software packages, I have created a simple remote base system called "Rebel Base".  Rebel Base gets its name from both the suffix of my original callsign, being only one letter short of "Jedi", as well as the use of open source software to support the scripts ("the Source is strong in this one"), or in other words, avoiding the proprietary Empires. :)

Rebel Base provides the following features:

  • Can interface with a local repeater or over VoIP (IRLP, EchoLink, AllStar, etc).  Supports EchoLink natively, can be easily interfaced to IRLP or AllStar.
  • Remote can be controlled by Linux shell commands, EchoLink text box commands and DTMF sequences.  Web based control is also feasible, though development of this is left to an interested third party.
  • Designed for interfacing to a radio (rather than a pure Internet connection), the remote base is limited to amateur bands by design, to avoid the risk of non amateur traffic being forwarded over amateur frequencies.  The frequency list can be edited to suit different countries or to add new bands.  This system can be overridden completely if someone was to develop an Internet only version.
  • Transmit capability can be set on a per band basis.  This can be used to meet local regulations or to protect radios from transmitting into untuned/unmatched antennas.
  • Supports many radios - basically anything supported by Hamlib should work with the system, as Hamlib is used to communicate with the remote base radio.  Also supports network access to radios connected to other machines on the same LAN via rigctld (this has been successfully tested).
  • Facility to add presets for favourite frequencies or local repeaters, for end user convenience.
  • Easily extended.  The core of Rebel Base is a BASH shell script, so extra functionality can be added by anyone with an understanding of shell scripting, Hamlib and Linux.
  • To be released under the GNU GPLv2, to encouage sharing and further development.  Parts of Rebel Base are derived from EchoIRLP, which is also released under the GPLv2.

Remote base functions supported by Rebel Base:

The following functions are supported by the Rebel Base system.  Note that these may or may not work in practice, as the support of both Hamlib and CAT commands vary from radio to radio.  This list is current as of June 27, 2014.  New functionality is regularly added.

  • Enable Rebel Base - Links the remote base's radio port to other ports (both RF and VoIP) on the system, as well as any new VoIP connections.  Also enables remote commands.
  • Disable Rebel Base - Disconnects the remote base from the rest of the system and disables remote commands.
  • Set and (where supported) get VFO frequency.  Frequencies can be entered in Hz, kHz, MHz or GHz.
  • Set mode.
  • Get mode (where supported).
  • Set filter bandwidth (where supported) - Some models require mode and filter to be set in a single command.
  • Get filter bandwidth (where supported).
  • Set repeater tone and TSQL tones.
  • Get repeater tone/TSQL tone (where supported).
  • Set repeater shift (+, - or none).
  • Get repeater shift (where supported).
  • Set repeater offset.  Offsets can be entered in Hz, kHz, MHz, or GHz(!).
  • Get repeater offset (where supported).
  • Repeater presets for repeaters accessible from my QTH.
  • RAW mode - this passes the user's command string directly to the rigctl utility.  Used mostly for debugging, but can also be enabled to allow access to functionality not yet supported - WARNING - this will override the internal sanity checks and security of the system!  RAW mode can only be accessed by local users and selected people.
  • Set PTT - this can be used by EchoLink users to force the remote base into Tx mode, to unkey the local EchoLink client and enable transmissions to be sent by the remote base.  IRLP users can either connect full duplex (where supported by their node) or a web based interface can be used here.
  • Release PTT - releases Rebel Base's control of PTT, but does not override PTT activity generated by traffic from local VHF/UHF or remote VoIP ports.  This function may be automated or integrated with other PTT controls in the future.

Requirements:

Rebel Base has modest requirements.  Most of the software requirements can be met by a reasonably modern Linux distribution.  Where relevant, known working versions will be given.

Hardware:

  • PC capable of running Linux.  A Raspberry-Pi or similar ARM based system should also work, but hasn't been tested yet.  128MB RAM and 2GB disk/SSD storage should be sufficient.  The test environment is a 300 MHz PII with 128M RAM and 4GB HDD running CentOS 4.
  • Soundcard for the remote base.  If a local repeater is used, a second soundcard to interface to this system.  USB sound dongles can be used.  Additional soundcards may be required for IRLP/AllStar integration.
  • Radio - Must be supported by Hamlib for rig control.  Models tested so far are Yaesu FT-736R and Icom IC-7000.  Antenna systems for bands of interest (obviously!).
  • Rig interface - for connecting audio and PTT generated by the local repeater and VoIP stations.  A wide variety of interfaces including generic PSK-31/data mode interfaces, EchoLink specific interfaces (e.g. VA3TO/WB2REM) or IRLP board can be used.  VOX operation is also possible, but not recommended.
  • Repeater (optional) for local VHF/UHF access.  Link between Rebel Base and the local repeater MUST be full duplex, whether hardwired or via link frequencies.
  • IRLP node (optional) if you want to link IRLP to the remote base.  Rebel Base and IRLP can be run on the same machine, and a simple modification to IRLP can be used to directly process DTMF commands, without having to decode them over the audio link.  Audio decoding of DTMF should work, however.
  • AllStar node (optional) if you want to link the remote base to the AllStar network.  AllStar can be connected to Rebel Base via software (requires a recent version of thelinkbox), or via a link port and soundcards. 
  • EchoLink login (optional) Not really hardware (EchoLink support is built into thelinkbox), but if you want to link Rebel Base to the EchoLink network, you can use thelinkbox to login to EchoLink directly, and remote base commands are accepted via the EchoLink textbox.

Software:

Rebel Base's software requirements are fairly modest, and most can be met by a fairly recent Linux distribution.

Major packages, not on all Linux systems:

  • thelinkbox - This is the heart of the system, providing local repeater control, EchoLink support, interfacing to IRLP (usually via hardware) and AllStar (software or hardware), and command inputs to the Rebel Base scripts.  Version 0.46 has been tested and anything newer should work.  Older versions may or may not work.
  • Hamlib - Provides the control for the remote base radio.  The "rigctl" utility that comes with Hamlib is used to send commands to the radio.  Version 1.2.13.1 is the version used for development and testing.  Newer versions should work, as will some older versions.  Some Linux distributions come with an older version of Hamlib that may work with Rebel Base.

Various utilities - The rest of the software will often be installed with a modern distribution, or can be easily added using your distribution's package managet (yum, apt-get, etc):

  • bc - mathematical package, used to scale frequencies and CTCSS tones between the user interface and the values required by rigctl.
  • grep - for parsing regular expressions, used to look for strings.
  • cut - used for processing outlets from rigctl to prepare it for display.
  • sed - used to convert some user input to lower case.
  • bash - the shell used by Rebel Base.

Status:

Rebel Base is under active development and testing.  Features are still being added on a daily basis.  The system is quite functional, though the availability and functionality of features is in a state of constant change.  As of yet, there are no public releases.

Development Roadmap:

Future development under consideration includes:

  • Implement additional features, such as split operation, RIT, XIT, DCS, DTMF generation, etc.
  • Implement DTMF commands for IRLP/EchoLink/AllStar RF users.
  • Beef up security, lock down RAW mode, implement per-user/link/link type access controls on transmitter control.  This could be used to enable/disable bands based on who is present on the link at the time (e.g. to prevent Foundation licensees from using bands like 6m or 23cm).  EchoLink users can be treated individually, while RF links would be handled in a more generic manner using regular experessions.
  • Tidy up PTT and COS, with an aim of eliminating the need for a separate PTT/COS interface for the remote radio, automating release of Hamlib PTT after several seconds as an interim measure (i.e. giving enough time to hit PTT on EchoLink or a simplex or half duplex RF link).
  • Release code and create a support mailing list (most likely using Yahoo Groups or Google Groups). 
  • Documentation for both users and hackers/experimenters.
  • Live, full scale testing, once I resurrect my repeater hardware and connect audio/control lines.

Stay tuned for announcements.  May the Source be with you!