DigiRite is a radio contesting accessory for FT8 messaging. It optionally integrates with WriteLog, but also can run stand alone. It is published open source. Other contest logging program authors are free to use DigiRite's sources to build their own integrated FT8 solution under the terms of the GPL.

License

DigiRite is Copyright (c) 2019 by WriteLog Contesting Software, LLC

DigiRite may be copied per the restrictions of the GPL in the file COPYING. The source code to this program may be found at http://github.com/w5xd/Digi-Rite.

The algorithms, source code, look-and-feel of WSJT-X and related programs, and protocol specifications for the modes FSK441, FT8, JT4, JT6M JT9, JT65, JTMS, QRA64, ISCAT, MSK144 are Copyright (C) 2001-2018 by one or more of the following authors: Joseph Taylor, K1JT; Bill Somerville, G4WJS; Steven Franke, K9AN; Nico Palermo, IV3NWV; Grea Bream, KI7MT; Michael Black, W9MDB; Edson Pereira, PY2SDR; Philip Karn, KA9Q; and other members of the WSJT Development Group.

Installation

You may install DigiRite regardless of whether WriteLog is installed. It integrates with both the unlimited and demo versions of WriteLog. The order you install them does not matter. You may run DigiRite stand alone (i.e. without WriteLog) but DigiRite has no dupe checking, logbook, nor rig control. The Demo WriteLog version of WriteLog supports two of the 77-bit contest packing methods: ARRL Field Day and ARRL Round Up. DigiRite will find and use the WriteLog unlimited version waterfall component. With the demo version, you will see the single-line spectrum display instead of a waterfall.

To use DigiRite with WriteLog, you'll need WriteLog version 12.38 or later. In WriteLog, start with a right mouse click in its Entry Window. Once you have DigiRite installed, you will find the menu entry DigiRite View...

RightMouse.png

Without WriteLog installed, bring up DigiRite from the Windows Program Start menu, the DigiRite group. DigiRite will make QSOs, but it maintains no logbook of QSOs, nor will it control your rig VFOs or PTT.

The Setup Screen

The first time you invoke DigiRite, it goes to its setup screen.

Setup.png

When started from WriteLog, only some of these setup items are configurable. For example, you cannot choose the sound device here. Use WriteLog's Sound Board Mixer to choose your sound devices. DigiRite knows whether you brought it up from WriteLog's Left or Right Entry Window (or rig number 3 or 4) and it knows whether your WriteLog Sound board mixers are set for one-device-per-radio or two-radios-on-one-device. For the former, you may choose a left or right channel, but for the latter, DigiRite uses the channel as selected in the Sound Board Mixer.

Be sure to uncheck all of WriteLog Sound Board Mixer control's Exclusive check boxes on the sound devices you want to run with DigiRite.

DigiRite gets your CALL from Writelog. It usually figures out the CALL you want, but if its not right, do a Cabrillo Export in WriteLog to choose the CALL you are operating now and DigiRite will see that one.

The Exchange must be one of those supported by FT8 (details below.) Currently that list is:

FT8 allows three acknowledgement messages. DigiRite treams them all as equivalent when it receives them. Choose the one you want DigiRite to send. RRR, 73 or RR73.

For FT8 operation outside of contests but with WriteLog, the "General DXCC tracking log keeper" can be made to log what FT8 sends and receives. That module, by default, does not log a grid square. You may add the appopriate column to log them. While you are at it, there are two columns that are useful to add. Use WriteLog's Exchange Format Setup and:

  1. click on the bottom-most Exchange field in the left panel (Name)
  2. Click the Insert button
  3. Type GRID in the Caption
  4. Click the Insert button again
  5. Type DGTL for Caption
  6. Click OK

With these changes, WriteLog will log the FT8 signal report in the RST columns, a grid square if exchanged in its GRID column, and "FT8" in the DGTL column.

Force USB

Some rigs do not have a digital mode setting appropriate for FT8 transmission and must be set to USB. For those rigs, turn this check box on and DigiRite monitors the rig connected to WriteLog and, if it finds the rig not in USB, commands the rig to USB. This means that, for example, when you type a VFO frequency into WriteLog's Entry Window, or click on a packet spot, DigiRite will override whatever mode WriteLog calculates for the rig and set it to USB for FT8.

Split the transmit VFO

For certain rigs, it improves distortion to keep the input audio tones high in the rig's audio passband for transmit. The Control VFO Split option tells DigiRite to put the rig in split VFO mode and tune the transmit VFO such that its audio input frequency is between the Maximum audio freq entered and half of it.

SetupSplit.png

To use the screen above as an example, it has a 2400Hz maximum audio frequency. If you click on a received CQ with, say, a 500Hz RX frequency, DigiRite will respond on that station's own on-the-air frequency. Doing so without splitting your rig's transmit VFO would require feeding an audio tone of (about) 500Hz into your rig. 500Hz is below 1200Hz (half the maximum you have configured above) so DigiRite splits the transmit VFO and moves it down the band roughly 700Hz so that the resulting tone is generated above 1200Hz and fed to your transmitter.

Rigs that are fully digital likely won't benefit from splitting the VFO.

There are situations involving DigiRite's multi-streaming option such that the range of TX frequencies exceeds the range of your entry here. In that case, DigiRite turns off the VFO split and feeds the audio tones into the rig at frequencies matching those it received.

How to use DigiRite

DigiRite brings up two windows. The Transceive screen sets the decoding parameters, displays every decoded FT8 message, and shows a received spectrum.

Without WriteLog unlimited installed, the receiver window is a single line spectrum. The waterfall is available from WriteLog unlimited version. Your selected transmit audio frequency is displayed at the top with the red rectangle, and the decoder's primary receive frequency with a green rectangle. Click in the window where highlighted in the screen below to change either your RX or TX frequency. The mouse click has the same effect as using the up/down numeric entries on the Main Screen (below.)

This screen snapshot is when run with WriteLog's unlimited version.

Decoder.png

Standalone, or with the WriteLog demo version, the Transceive screen has a spectrum line instead of a waterfall:

DecoderDemo.png

The circular clocks are colored red during your transmit cycle, green during your receive. The position on the screen, the window size, and the divider sash positions are all configurable.

The Main Screen

Once you have the decoder working and see decoded messages in the Transceive screen, making QSOs is a process of putting your attention on the Main Screen starting at the left and working to the right.

Decoded messages of interest for contesting are in the Main Screen's leftmost column. They stay there through the FT8 cycle they are decoded, the following cycle, and just a few seconds into one more cycle. Then they are replaced by messages decoded on the new cycle. The center column shows the QSOs you have in progress. It starts out blank. Multiple QSOs in progress means you have sent or received some but not all of the messages needed to allow you to log a QSO. The check box means the QSO is "active" which means DigiRite will compute the next message for the QSO for each cycle. The single-character status is:

The right most column is less used. You may manually type in a message to send (subject to FT8's packing constraints), you may select an out-of-order message among the Alternative messages for a given QSO, and at the bottom right, is the button for calling CQ.

DigiRite does the most automation with that center check box, Automatically transmit next" turned on, and, if you're new to this, that is the recommended place to start (of course assuming you have already correctly filled in the Setup screen above.) Turn that check box on and DigiRite will automatically choose which, of the limited selection of FT8 messages available, it should send on each cycle.

To answer a received CQ, click on one in the left most panes.

MainScreen.png

The color coding in the left pane (in yellow and red) uses WriteLog's dupe checking. The red (with the "D" display) is a dupe, and the yellow (with the "M") is a new multiplier.

The Calculated next to send pane gets populated with the messages from the QSO(s) in Progress. Incoming FT8 messages tend to decode well before the end of the 15 second cycle, and those trigger entries here as they arrive. But failure to hear a message from a QSO in Progress is only calculated at the very beginning of the transmit cycle. Those "no message" results appear only very briefly if they are actually transmitted. At that same time—the beginning of the transmit cycle—any message in this panel selected to be sent this cycle is  removed. Any that cannot be sent (most likely because there are more QSO(s) in Progress than you have Streams selected) remain in this panel so you can see what would have been sent if it could.

More on the Main Screen

The volume of DigiRite's output to your transmitter is controlled by the slider at the lower right. Avoid overdriving your rig's TX input by reducing the slider until the power output drops. The Tune button produces about 3 seconds of 1000Hz audio.

In the QSO(s) in Progress panel, the two numbers following the CALL are the RX frequency for her message, and the TX frequency we are using to call her. The TX frequency is blank until we initiate our first message to her (except when we are using her RX frequency.) The values of these frequency numbers are the audio frequencies as detected in your receiver audio. If you have turned on DigiRite's ability to split your transmit VFO, the frequency numbers will not match what you might hear in your TX audio monitor during an FT8 transmission.

The gray background on a QSO indicates a QSO in progress, but on the oppoisite odd/even TX cycle from what is selected at the lower right. We can't transmit to that station until the cycle is reversed. DigiRite will automatically reverse the cycle if it completes a transmit cycle with nothing to send and you have a QSO in progress on the other cycle (i.e. a gray one).

Colors

In the left-most column, the color coding is according to whether the CALL is a dupe as reported by WriteLog. But in the center column, the color coding on the chronology is according to how the message is related to a QSO in progress.

PTT

When run with WriteLog, DigiRite sends PTT commands to WriteLog, which will forward them however you have WriteLog set up to do PTT.

And DigiRite also looks up the corresponding RttyRite PTT settings for its connection to WriteLog. If RttyRite was configured for PTT on a Serial port, DigiRite controls the RTS line on that same Serial port. When it does Serial port PTT, it puts the ptt on COMn message at the lower right so you can see it is doing ptt.

Without WriteLog, you must use some other way to key your rig. VOX works for many rigs.

Main2.png

Context menu for QSO(s) in Progress

A right mouse click (and also ALT+P with the keyboard focus on one of its entries) brings up a context menu with these options.
  1. TX on their frequency. Check this on and DigiRite will transmit on the RX frequency for the message that started that QSO.
  2. Active. turn this off and DigiRite won't send anything to this station.
  3. Move QSO Up and Move QSO Down change the priority of this QSO. Only the top-most active QSO (or QSOs if you have enabled multi-streaming) will generate an outgoing message in a cycle.
  4. Log QSO as-is enters the QSO in WriteLog's log. DigiRite normally does this automatically, but you may force the QSO into the log using this menu. This menu item has no other effect, and you may log the same QSO again later. That might be useful if a later message comes in on the QSO that has additional information for the log.
  5. Alternative Messages fills in the list in the right panel.
  6. Remove from List asks no questions and simply makes this QSO vanish.
  7. Inactive: remove all removes all unchecked QSOs
  8. Logged: remove all removes all that have an "L" in the left column.

RightMouseQso.png

Check box contesting

The button in the very middle, Automatically transmit next is critical to the flow. Turn it off and DigiRite sends no message without you manually clicking its check box in the center Calculated next to send. Click Automatically transmit next to on and DigiRite, at the beginning of a 15 second FT8 cycle, will transmit the highest priority message (or messages, see multiple streams below) for that cycle.

The check boxes in the Messages to me and the CQs heard windows are also critical. Click on a check box in either of those lists to initiate a QSO with that station. For answers to CQs, the Auto respond to non-dupe check box means DigiRite will respond to any and all callers, in the order they are decoded. If you are rare DX, you likely want this box left off so you may choose among multiple answers to your CQ. See the 5V7EI simulated screen shot above.

Go with the Flow

You probably want to start by turning the aforementioned Automatically transmit next button on. Next you may either turn the Call CQ button on or instead click on a received CQ message in the lower left. Your interaction with DigiRite is much the same both ways. Either of the lists in the left-most column can initiate a QSO.

Initiating a QSO causes it to appear in the QSO(s) in Progress box. DigiRite priorities the QSOs from top to bottom in the QSO(s) in Progress window. A QSO will stay in the pane until you remove it (right mouse button.) Once the QSO is logged, it will not do much, but it remains in place so that any extra messages that appear from the QSOd station after we log it can be associated back with that same QSO. If you want to start over with a station (i.e. go back through the exchange sequencing and log them again) you right mouse, remove this QSO.

As each 15 second FT8 cycle begins, DigiRite decides what it wants to send. It lists the candidate messages in the center pane, "Calculated to send next." These are not listed in any particular order. The priority is set by the order above in "QSO(s) in Progress." Each message has a check box which enables sending it. Turn off the check box and it won't be sent.

On a transmit cycle where nothing has already been selected to be transmitted, you may click on a message in the left-most panes late--up to 6 seconds after the cycle begins.

The Conversation chronology is a chronological listing of all the messages sent and received that are related to the QSOs in progress.

Contest Setup Details

The 77-bit message packing format used by FT8 currently has definitions for only certain messages which means that only certain contests can be operated using FT8. DigiRite must be configured in its Setup screen to select one of those. The exchange messages in the 77bit packing are:

DigiRite's behavior if you choose that last entry, Grid Square & dB Report differs from the others. Choose any of the first four, and DigiRite's automatic QSO sequencing runs the exchange contest-style, with all the necessary information for a QSO packed in a single 77-bit message.

With Grid Square & dB Report DigiRite uses a different sequencing method that handles a QSO possibly including two different messsages, both a grid square and a dB report, in that order. This sequencing is more typical of casual not-in-a-contest QSOs.

For RTTY Round up and ARRL Field Day, DigiRite gets its exchange message by looking into WriteLog's Document settings/RTTY messages. It looks at the top entry on that WriteLog dialog. It inspects that top message to figure out what your transmitted exchange is: state/province/serial number for Round UP, or Field Day class and ARRL section for Field Day.

The Exchange setting you use in DigiRite's Setup menu must make sense for the contest you have selected in WriteLog. The contest selection is not integrated between the two programs; DigiRite and WriteLog will not give error messages if you have them set to cross purposes. Instead, DigiRite sends/receives what you have set here and logs what it can into WriteLog. DigiRite's auto-sequencing, for the first four selections above, only supports a contest-style fixed exchange. Once you have sent and received one exchange, it thinks you are finished and ready for the next QSO. To repeat, if you instead want to exchange both a grid square and a dB signal report in both directions, use that last Exchange selection.

To support a VHF rover changing grid squares during a contest, DigiRite, when run with WriteLog, monitor's its connected Entry Window for a MYGRID column and transmits that entry from WriteLog rather than the one entered on this setup form.

WriteLogRttySetup.png

Multiple Streams

During a 15 second cycle, the FT8 signalling scheme allows multiple concurrent outgoing messages. DigiRite will send up to five in a cycle by setting its Streams parameter in the TX section of its Main Screen. The nature of the FT8 signalling method means your transmit power is distributed among those streams. Therefore, expect your signal to noise at the other other end's receiver to be reduced. You may change this parameter at any time, but it takes effect only at the beginning of each transmit cycle.

Transmit Frequency

To simplify managing your TX frequency when you have multiple QSOs in progress and are transmitting multiple streams per cycle, DigiRite limits its choice to only two possible TX frequencies for a given QSO. It has the frequency you have entered in the Main Screen TX box, and it has the RX frequency of the FT8 message that started the QSO. Each transmitted message is on one of those two frequencies, with the qualification that your entered TX frequency is "fuzzy." DigiRite, when you have multiple transmit messages on the same cycle and on its own TX frequency, offsets each stream round your entered TX frequency by about 60Hz for each one. The second transmitted stream fills the 60Hz slot above your entered TX frequency, the third fills the slot below, the fourth is above the second one, and the fifth is below the third one.

To switch DigiRite's TX frequency choice, use the right mouse context menu on a QSO in Progress (or ALT+P with the keyboard focus) and change the top menu entry, TX on her frequency. For QSOs on our own TX frequency, the QSOs in Progress display shows our TX freqency as blank until the first TX cycle that a message is transmitted for that QSO. Once a QSO is started on a TX frequency, DigiRite keeps it there unless you click this menu entry.

Starting a QSO by answering a CQ message is the only way that DigiRite puts its QSO's transmit frequency on the other station's RX frequency. In all other cases, DigiRite chooses its own TX frequency. When answering a CQ, you may force DigiRite onto its own TX frequency for that QSO by using a right mouse click instead of a left click.

Other details

Both CQs shows you both even and odd CQs in the window just above. Turn it off and only those in the opposite cycle from your transmit are displayed.

Abort TX turns off the transmitter and PTT and turns off all check boxes that automate QSOs such that no further transmissions will go out. Your QSOs in progress and everything else on the page stay the same. This is the panic button. The keyboard ESC key activates this same function.

Setup lets you change the contest exchange, etc. Warning: An OK to the Setup dialog will cancel all QSO(s) in progress.

WriteLog will bring up a separate DigiRite window for each Entry Window you have configured in WriteLog Number of Radios. Each WriteLog Entry Window must be set to L or R (or rig 3 or 4 but for those two you must manually configure the sound cards in Setup.)

With the CQ button on and Automatically Transmit next also on, DigiRite will make QSOs pretty much without interaction. It has a 5 minute internal timeout. If that much time passes without your interactions and without an answered CQ, it turns off its automation.

DigiRite discovers if you want your sent CQ message to be directed by inspecting the bottom entry in WriteLog's RTTY messages setup dialog. It expects to see the letters CQ followed by a word—four letters maximum per the FT8 message packing rules—that is your directed CQ. Note that if you are operating with an FT8 "non standard call" (which means your CALL can't be fit into its 28bit callsign encoding) then only bare CQs are possible and DigiRite ignores that bottom CQ entry in WriteLog.

An alternative messages is sent only if you click its check box. Only one of them is sent, and it takes the place of any Calculated next to send message for that QSO. A Manual message typed into the top right box takes the place of all messages for its cycle. No other messages are sent with a manual message, regardless of the multi-streaming setting.

Don't overlook the resize handles for both the Main Screen and the Transceive screen. There is a sizing sash between the everything-received list and the waterfall, and another sizing sash on the Main Screen that controls the width of the left-most panes with your answers and CQs received.

Both DigiRite windows are keyboard aware. Press the Alt key when the keyboard focus on either, and it will underline its various keyboard Alt-key shortcuts. On the Main Screen Alt-P gets the keyboad focus to the QSO(s) in Progress, after which the cursor keys move the focus among the QSOs there. With the keyboard focus on one of them, another ALT+P brings up the context menu the same as right mouse button does on that QSO.

The DigiRite for each Entry Window (i.e. radio) has its own two log files. They are located in the Windows Users directory. It usually is
C:\Users\<your-username>\AppData\Local\DigiRite-1
This is for the L radio. DigiRite-2 is for the R radio, etc. The DigiRite.log file is always appended and you must occasionally check its size and delete it from DigiRite's Help menu. The other log file is named Conversation.log. It contains the entries in DigiRite's Conversation History window. The conversation log file is erased and started over every time you restart DigiRite.