ZL2AFP FSQCall

A Directed Messaging System for FSQ

16.06.2016

Introducing FSQCall

Sending text using FSQ is generally very reliable, certainly more so than other digital modes that use no error correction. It is also very 'slick' (quick to tune, fast typing, and with no delays between overs). In other words an ideal mode for more advanced applications. Therefore, with just a little checking for errors, it has been possible to devise a very simple system (simple to use, that is), which can provide clutter-free communication (station selective squelch), and can also perform various message-related and station-related tasks.

While not attempting to be a full Automatic Link Establishment (ALE) system, FSQCall performs similar functions (plus more) to allow stations to establish links and pass simple messages manually. The focus is on sending simple one-sentence messages or commands in a manner suited to the FSQ protocol. There is a handful of simple and easy to learn commands used by FSQCall. ALL of these are manually typed, while the receiver end is largely automated.

These simple commands allow you to:

  • Find a station's location and status.
  • Read a station's pre-defined message.
  • 'Poll' a station to check how reception is.
  • Send a sentence to all stations within range.
  • Send a sentence to just one specific station.
  • Send a sentence to be stored in a specific file.
  • Change the transmitting speed  at another station.
  • Receive and save a file from an unattended station.
  • Determine which program version a station is running.
  • Send a file to one, many or all stations, even unattended.
  • Call CQ (prints at all stations in range where CQ is enabled).
  • Determine which  other stations  have been active, and when.
  • Have a station relay your sentence to another station or stations.
  • Send an image to,  or receive an image from an unattended station.
  • Send periodic 'soundings and other messages from third party software.
  • Raise an Alert at a station, with automatic response once acknowledged.
  • Send a periodic 'sounding' message to let other stations know you are active.
This sounds like a tall order, but cunning design has allowed all this to be achieved with under a dozen easily remembered commands, and a few others you won't need much. The program itself lists the operating rules and syntax for you, so you can't go wrong. The FSQCall message structure is simply an extension of FSQ. Every sentence starts automatically with your_call:<crc>. The crc (Cyclic Redundancy Check) is used to ensure that the source callsign is received correctly, since it's often used in automatic replies.

You simply type a destination callsign or direction (or maybe more than one), a one-letter command for each callsign (called a trigger), and a message, if needed. Then you just press ENTER, as in normal FSQ.

Here are some examples. The text shown bold is added automatically, outgoing text is in red, while replies (both automated and manual) are shown in blue. In the first exchange, ZL1BPU asks for ZL2ABC's location, which is an automatic response:

zl1bpu:b6zl2abc@

If in range, ZL2ABC will automatically reply:

zl2abc:2ezl1bpu Lower Hutt

Why is the callsign 'zl1bpu' repeated in the reply? So the receiving station FSQCALL selcall opens to allow the message to simply print:

Lower Hutt

As another example, ZL1BPU and ZL2ABC have established contact and are chatting, still with FSQCALL on:

zl1bpu:b6zl2abc Have you seen Jim ZL3JIM lately?
(ZL2ABC sees only Have you seen Jim ZL3JIM lately?)

and ZL2ABC replies:

zl2abc:2ezl1bpu Yes, he was at the club meeting on Wednesday.
(ZL1BPU sees only Yes, he was at the club meeting on Wednesday.)

As you will by now have gathered, if your callsign isn't in an incoming message, nothing will print. This keeps unwanted garble and stuff from other stations, not directed to you, off the screen. In the same way, unless you preface each transmission in FSQCALL mode with a callsign or allcall (a generalized callsign for all stations), nobody will see what you've sent.

FSQCall acts like a smart squelch. It opens the receiver for printing (and other actions) when your callsign is received, and closes again when the actual receiver squelch closes (when the other station stops transmitting).

The Squelch is also 'fade-proof', using a smart delay squelch design to ride through fades that might otherwise close the Selcall.

Because the squelch also locks-out transmission, just as in FSQ, stations generally do not transmit over other stations, or reply until the other station has finished transmitting. Various delays are also added before automatic replies, in order to manage the priority of messages. Manually typed messages have the highest priority, automatic responses have medium priority, and sounding messages the lowest.

Up-to-date detailed descriptions of the FSQCall Syntax, suggested calling frequencies and Operating Rules are provided in the Help information, updated at each release.

Error Checking

Using a full error correction system would add unacceptable delay and markedly reduce throughput, spoiling what is a remarkably slick design, and since FSQ is generally robust, an error correction system is not justified in FSQCall. If necessary, critical files can be pre-encoded using a third-party error correction application before and after transmission.

Station logs, callsign lists and message replies need to be accurate, so a simple error check mechanism is used on the message preamble, in order to validate each transmission. The preamble of every sentence is protected by a checksum, an 8-bit Cyclic Redundancy Check. The CRC forms the two mysterious letters/numbers which follow the colon in every FSQCall header. If this header is not correct, the message will be ignored, for three reasons. If the preamble is incorrect:

  1. The software won't know who to send automatic replies to!
  2. You might otherwise log or list an incorrect callsign.
  3. There's a high chance that the message will also contain errors, and you may also not know who it's from, in order to reply or ask for a repeat.
Each message is also of course checked for the correct destination callsign (your callsign), and if that's not present, or received incorrectly, the message is ignored. It's also ignored if your callsign is not immediately followed by a permitted trigger character. These are the command characters used to tell the receiver what to do. There are eight main trigger characters: ? * ! # @ & < and >, plus space. (There are also a few rarely used ones that you don't need to remember).

? * ! # @ & < and > plus space

Quite simply, if you don't get an expected reply to your command or message, you just send it again. Messages that don't have an automatic reply (the only one is callsign followed by space) are best used only when the other station is attended, otherwise you've no way of knowing if it was received. If it wasn't received, the other station operator will probably send "agn?" or perhaps just "?".

The program has a 'Monitor Pane' as one of the Options Panes, and you can always keep an eye on that to see if there was anything you might have missed. This is especially useful if for some reason the squelch closes early (typically caused by a long fade), or some station is calling you, but doesn't have your callsign the same as you've set it.

FSQCALL Command Summary

This is a very brief summary. For full syntax, pull up the Syntax help file from the program menu.
callsign message           Enables print of message at station callsign. Used extensively for normal chatting.
callsign?                  Returns signal report from station callsign
callsign*                  Sets FSQCALL ACTIVE at station callsign if it was in SLEEP
callsign!message           Station callsign retransmits message
callsign#[name.ext]message Station callsign stores message as or appended to name.ext
callsign@                  Returns QTH message from station callsign
callsign&                  Returns QTC message from station callsign
callsign>                  Station callsign changes to 3 baud and confirms
callsign<                  Station callsign changes to 6 baud and confirms
callsign^                  Station callsign reports its FSQCALL software version
callsign$                  Station callsign reports its list of stations heard
callsign%X                 Station callsign sends or is sent an image file (X defines the resolution)
callsign|message           Station callsign displays an Alert Box with message
allcall message            Enables print of message at all stations in network
allcall#[name.ext]message  All stations in network store message as or appended to name.ext
cqcqcq message             Enables print of message at all stations with CQ reception enabled
callsign means the registered callsign (set in their software) of a target or destination station.
message means any appropriate text, which may in some instances include further callsigns and triggers.
Several other command trigger characters are reserved for additional future features.

All you do is type a callsign (or several callsigns or just allcall), followed by a command character (or space) and then, if required, a message.

Hello guys!                 won't print at any station with FSQCall on!
zl1xyz Hello John           prints only at ZL1XYZ
zl1xyz zl1zza Hello guys!   prints only at ZL1XYZ and ZL1ZZA
allcall Hi folks...         prints at every station within range
It's easy to see how simple this all is. All it takes is a little practice. The callsign can usually be selected from a list. There are various ramifications involved if the syntax is used improperly. The FSQCall Rules available from the program Menu clearly lay out simple restrictions that avoid such problems.

Uses for FSQCall

The simplest application for FSQCall is that it provides a 'watering hole' for a group of friends who wish to keep in touch and chat occasionally. Experience has shown that leaving your equipment running on 7105 kHz during the day, and 3580 kHz at night, will provide fairly reliable communications over about a 500 - 1000 km range. Depending on propagation, 40m may well work day and night. Only modest power is required. You can leave a message for your friend if they aren't available, and even use one friend to relay a message to another. The software will tell you who is currently available.

If you wish to chat with two or more friends at once, simply include both/all their callsigns in each sentence. Alternatively, use allcall as the address, and everyone in range will receive the message. In order to avoid serious mayhem on the radio channel, most automated replies do not work with allcall.

FSQCall is also designed for management of field stations in an emergency, exercise, or sports event scenario. FSQCall should not be used to pass important messages such as medical information or treatment (risk of error), casualty lists (privacy issues), and it won't handle large files, but is absolutely ideal for passing commands such as changing location, requesting specific information, or passing on changes to plans, schedules and contact information. Typical messages would be 'Call John (09) 554 321' or 'Check number of stage starters with marshall'. By using FSQCall, the field stations can remain in contact without having to continuously listen on a radio channel (which can be very tiring), and without missing a message if they step away from the radio for some reason.

FSQCall and SSB can be used on the same channel (although not at the same time). If the radio transceiver has good syllabic (voice activated) squelch, you'll probably not even hear the FSQ signals, even though the software receives them.

FSQCall also works really well on VHF FM, or on VHF repeaters. Stability of equipment can be an issue on VHF, especially with narrow-band digital modes. Using audio subcarriers on an FM transmission avoids this. In addition, if the transceiver can be operated with the FM squelch open (you often don't need to listen anyway), FSQCall will easily copy signals that won't open the squelch. In fact it has been found that the sensitivity of IFK modes on FM is much better even than VHF SSB.

Operator training requirements are minimal. Practice with a couple of laptops chatting across the clubrooms (use cables rather than speaker to microphone, which works poorly with MFSK modes) for an hour or so will train new operators well. Another hour spent with each operator's own HF equipment connected would be useful in order to check out and become familiar with their digital interface, connections and settings.

Program Appearance

The program starts with FSQCALL (selective or Directed calling) ON. It can be changed to non-selective mode by pressing the blue SELCAL button. There is no visible difference in the appearance of the modes, except that all incoming text appears on the main upper pane in green when FSQCALL is off.

When in FSQCall Active mode, you must operate under its rules, using direction callsigns and triggers in your sentences, in order to communicate with other stations. It is best if all stations in a network are all in FSQCall Active mode, rather than a mixture of modes. You can temporarily drop back to FSQ mode by turning off the SELCAL button at the bottom of the program window. No logging takes place while not in Active mode. Another station can put you back into Active mode with the * command.


Screenshot of the ZL2AFP FSQCALL software
(Click on image for a bigger view)

Program Panes
The program window is resizable, by dragging the edges. There are several distinct panes within the program window:

'Tool Tips' are available for most controls. Simply hover the mouse over the control.

Credits

  • The FSQCALL protocol was developed by Murray ZL1BPU with significant input from Con ZL2AFP
  • All the hard coding work was done by Con ZL2AFP, following many years of development of MFSK modes, including DominoEX and WSQ of course.
  • Most of the testing was done by ZL2AFP and ZL1BPU, with assistance from others, including several enthusiastic alpha testers.
  • Almost all the documentation, promotional material, the web pages and Help information were written by Murray ZL1BPU.
  • Some useful functional suggestions have made by the various alpha sofware testers, which have enhanced the performance and given us a huge 'to do' list. Thanks guys!


  • Copyright © Murray Greenman and Con Wassilieff 2013-2016. All rights reserved.