MiniLog gateway into DXKeeper


DX Keeper is my main logger. I have it on my desktop PC far from hamshack and I do not use it for direct logging, but all QSO are imported via ADIF from another (contest) loggers etc. After I realized there is networking feature I got idea, it could be way how avoid handling with ADIF files and log directly into DXK from remote place.

Unfortunately, DX Keeper’s networking feature is not regurlary documented. However, there is available DXlabtest application include VB source code, which is so called documentation. Must admit, that Visual Basic was not my favorite platform to do kind of explorations..

So, how it works:

  • DXKeeper receives TCP connection at {setup_port} + 1, so default port = 52001
  • Message format is "<command:{command_len}>{command}<parameters:{par_len}>{par}"
  • Today are implemented two commands: log and eqsllog
  • Parameters is ADIF of logged qso

  1. def send(self, command, data):
  2.         self.sock.sendall('<command:%d>%s<parameters:%d>%s'
  3.                        % (len(command), command, len(data), data) )

  1. conn = tcpclient()
  2. conn.connect('',52001)
  3. conn.send('LOG','<CALL:4>TE5T <RST_SENT:3>599 <RST_RCVD:3>599 <FREQ:3>14, <BAND:3>20M <MODE:2>CW <QSO_DATE:8>20130601 <TIME_ON:6>080800 <EOR>')
  4. conn.close()

This was for me opportunity battle with Tkinter for first time. I wrote simple application for online and free form logging and also for rewriting paper logs directly to DX Keeper. Source code can be found here:

You need have to installed python envirioment and save source code as Minilog.pyw. Should work from linux maschine as well, in linux is usually python already preinstalled. If you run this app remotely, check firewall on PC with DXKeeper that it does not block incoming connection.

Top are data for all entered QSOs, bottom are data for each individial QSO and cleared after sent (alt-s). Currently accepted formatting, each kind on extra line:

  • Date: 2013-06-05 if not specified current date
  • Time: 17:39 if not specified current UTC, must lead with 0 i.e. 07:22
  • Callsign: AA1ZZ
  • Band: 160m-3cm
  • Mode: cw, ssb, rtty, sstv, fm, psk
  • RST RX: 59[9]
  • RST TX: 57[8]>
  • Serial received: #23
  • Serial sent: !10
  • Frequency: 14.230
  • QTH: @New York
  • IOTA: AS[-]123
  • Name: /John
  • Comment: :Any remark

There is integrated autoincrement of TX serial number. Current value is show top right corner and phylosofy is once you enter received number is automatically used this TX number and incremented.

In the code is not much care about error handling, so check if your data were successfully logged in DX Keeper. I think, I will add feature save ADIFs locally for case if TCP screw up..