Technical Information

Technical Information

N1MM Logger+ is a contest program written in Microsoft Visual Basic .NET. It uses an SQLite database for storing information. Writing and retrieving data to and from the database is done with SQL (Structured Query Language).
Running the program needs no more programs or files than supplied in the installation package and the program update (NewExeVx.x.x).

Do you need all the information given below to use the program? NO

Warning to Anyone Tempted to Directly Edit N1MM’s Database Files

We recommend not to change any data in the database or any other files unless you are very sure what you are doing. It is possible to change the behavior of the program and get erroneous results. If you have changed the contents of the database and the program behaves strangely, go back to the original (unaltered) version of the database.

No support will be given to users who change the database structure or contents. The same goes for changing other files used by the program.

You are on your own!

Don’t make changes if you are not very sure what you are doing. Second and last warning!

Note about scoring

After changing QSO information always do a rescore! Multiplier information and QSO points will be updated after a rescore so any changes made to these directly in the database will be lost.

Adding new contest types

It is not possible to add a contest to the program by editing the database. Contests can be added using the User Defined Contest method.
For contests other than those in UDC files, contest rules etc. are in the main program file (N1MM and are not stored in the database or any other files!

Directory Structure

The program itself is installed under C:\Program Files in 32-bit Windows systems, or C:\Program Files (x86) in 64-bit Windows systems, but none of the files it writes to are stored there. All user files (databases, ini files, error logs, mc files, wav files, ADIF files, Cabrillo files, UDC files, call history files, etc.) are stored in dedicated subfolders in a Logger+ user files area, which by default is installed inside your personal Documents folder. The full name of the user files area on your computer is probably something like c:\users\<Windows ID>\Documents\N1MM Logger+ or Documents\N1MM Logger+. The installer offers the capability to change either of these locations, but unless you are using a cloud-based backup system like OneDrive, it is recommended that you accept the defaults.

Digital engine files (MMTTY, 2Tone, Fldigi) have not been set up to accommodate this two-folder structure, and need to be stored outside the C:\Program Files and C:\Program Files (x86) paths in Windows Vista, 7, 8, 10 and 11. One solution is to place them in a directory outside the normal pre-defined Windows paths (e.g. under C:\Hamradio\MMTTY or C:\MMTTY or …); a second solution is to create a folder inside your Documents folder for digital engines. Either way works.

The SQLite Databases

Information that does not change between contests is kept in a database called N1MM Admin.s3db. Contest QSOs and related information are in databases that may be created or switched from the File menu. All of these databases are stored in the Databases subdirectory in the N1MM Logger+ user files area.

Do_Not_Use_or_Erase.s3db File
There is a special database file called Do_Not_Use_or_Erase.s3db in the Databases directory – do not erase this file, and do not name it as your log database!

The “N1MM Logger.ini” file

The N1MM Logger.ini file is in the Documents\N1MM Logger+ user files directory. Everything in the “N1MM Logger.ini” file should be settable through the program’s user interface. An item may not appear in the “N1MM Logger.ini” file if its value is left at the default.

Removing the ‘N1MM Logger.ini’ file will cause the program to start with default settings and will require all configuration items to be re-entered. In some cases where data in the file has become corrupted, this may be necessary. Before doing that, it is worthwhile to try renaming a recent backup from before when the problems started. There are up to seven backups retained in the main user Documents\N1MM Logger+ directory, one for each day of the week, as in N1MM Logger.ini.Monday.bak, etc.

To Revert to a Previous INI BAK file

  • Close N1MM Logger
  • Rename the current “N1MM Logger.ini” file to something else, for example “N1MM Logger.ini.CURRENT”
  • Make a copy of one of the backup files, based on when the program was last working properly. When you make that copy in Windows Explorer, it will add the word Copy. For example, the copy of “N1MM Logger.ini.Friday.bak” will be called “N1MM Logger.ini.Friday – Copy.bak”
  • Rename that copy “- Copy.bak” file to the active ini file name. For example rename “N1MM Logger.ini.Friday – Copy.bak” to “N1MM Logger.ini”
  • Launch N1MM+ and see if your previous configuration is working properly.

ADIF Fields

N1MM Logger+ complies with the ADIF standard. Standard ADIF fields exported to ADIF include CALL, QSO_DATE, TIME_ON, TIME_OFF, BAND, STATION_CALLSIGN, FREQ, CONTEST_ID, FREQ_RX, MODE, RST_RCVD, RST_SENT, OPERATOR, STX, PFX, and may also include NAME, COMMENT, CQZ, ITUZ, TX_PWR, SUBMODE, STATE, ARRL_SECT, IOTA, and possibly others, depending on the contest exchange and other circumstances.

In addition, there is information stored in the N1MM Logger+ database that can not be included by using only standard ADIF tags. A number of N1MM Logger application-specific tags have been added so that when exporting an ADIF file and importing it again all information from the DXLOG table will be restored. A rescore will update the fields not imported and may be needed to get the score and multipliers to be shown correctly on the screen. These application-specific fields include:

APP_N1MM_EXCHANGE1 – content of the Exchange1 field
APP_N1MM_POINTS – content of the Points field
APP_N1MM_MULT1 (and MULT2 and MULT3) – content of the Multiplier fields
APP_N1MM_RADIO_NR – content of the RadioNr field (SO2R or SO2V)
APP_N1MM_MISCTEXT – content of the MiscText field (if used)
APP_N1MM_CONTINENT – content of the Continent field
APP_N1MM_CONTACTTYPE – content of the ContactType field (e.g. D for dupe)
APP_N1MM_ISRUNQSO – 0 for contacts made while in S&P mode, 1 for contacts made while in Run mode
APP_N1MM_RUN1RUN2:1 – content of the Run field. 1 means radio 1 was the Run radio, 2 means radio 2 was the Run radio.
APP_N1MM_RADIOINTERFACED – indicates whether a radio was interfaced for radio control(1) or not (0)
APP_N1MM_ISORIGINAL – True or False (identifies whether this computer is the “owner” of this QSO in a multi-computer networked environment)
APP_N1MM_NETBIOSNAME – the NetBIOS name of the computer on which the contact was originally logged
APP_N1MM_ID – a 32-hex-digit unique record identifier
APP_N1MM_RoverQTH – Rover QTH (if used)
APP_N1MM_ROVERCNTY – contains the rover county value from RoverQTH if the station is a rover and the contest type is QSO Party.

Note that some fields in the database are used for different purposes in different contests, and may be exported/imported with different ADIF tags in different contests. For example, the Zone field in the database usually contains a CQ zone (CQZ tag in ADIF), but in some contests such as the IARU HF Championship, it contains the ITU zone (ITUZ tag in ADIF) instead. The Section and Misc database fields are likewise often used for different purposes in different contests and may be exported or imported using different ADIF tags depending on what the fields were used for in that particular contest.

In the WAE contests, QTCs are not exported to or imported from ADIF. Exporting a WAE contest to ADIF and importing it into a different database will lose all information about QTCs exchanged during the contest. In order to copy QTC as well as QSO data, you must either use the File > Copy This Contest to Another Database menu item, or else import the TRN file created with the original contest log into a new empty database.

Callsign Checking in the Digital Interface

Below describes how callsign checking is done in the Digital Interface windows.

It first checks to see if the callsign is of the right length (More than 2 less than 11). It then checks to see if someplace in the first 6 characters there is a number. 3rd it checks to see if there are no invalid characters in it. Then if it all that passes it goes through the Busted Call Checker. If the Busted Call Checker returns an Error message then the call is invalid. Anything else from the Busted Call Checker makes it a valid call.

As text comes into the Receive screen of the Digital Interface it gets printed to the window and placed in a temp buffer. When a space or a CR or LF is encountered the program will send the text in the temp buffer to the check callsign routines. Iif it comes back as a valid callsign it is sent to another routine that looks back thru the last 25 characters of the Receive screen and colors them accordingly. At the time the space is encountered the temp holding buffer is cleared and things get sent there all over again. The whole process above takes just over a millisecond to complete.

Unlike other software DE before the call is not required,it looks for space mostly after callsign.

Take a look at this sequence it explains how it picks up callsigns in the RX window:


The program sees the space between the TTT and the WA so it looks into its previous holding buffer which contains “QWSCFGTWA5TTT” that string does not equal a valid callsign even though there is one in it. So because it encountered the space the buffer is cleared and the next string starts being placed into it. When it hits the third space it goes back and checks the buffer again this time it finds WA5TTT and it says it is a valid call. The program now looks back 25 characters and any time it finds WA5TTT it will color it accordingly and also place it in the grab window.

As for the clicking on callsigns it follows the same rule except there is a routine that looks to see the characters that are under the mouse. If it is a valid call then it gets sent through the routines to place it in the entry window. There is a ltrs/figs line of text that shows the actual text that is being converted. This will give you an idea of what text is getting selected etc.

Problems will happen if the rules change in various countries and the rules in the Busted Call Checker can’t keep up with the country changes so you get callsigns that do not come out of it OK. The main reason to add the Busted Call Checker routines in there is to cut down on a lot of garbage that would be getting colored that passed all of the check routines but were not really callsigns

Routers and Firewalls

A router provides your principal defense against the wild, wooly Internet. Everyone who connects to a broadband Internet service should only do so through a router.

A software firewall (like the Windows XP firewall, Zone Alarm, etc.) provides protection from the other computers behind your router. It’s probably okay to turn off the Windows Firewall in a contest station.

Routers provide an important function called network address translation (NAT). If you look at your computer’s IP address and see 192.168.x.y (or 10.x.y.z), then you’re golden. The 192.168.x.y (and 10.x.y.z) address ranges are defined as local only and cannot be routable across the Internet. If your PC has one of these addresses, it’s as if you’re behind a telephone switchboard and do not have a direct dial number. That’s a good defense.

Software firewalls protect you from other computers behind your router. So if you take your laptop around with you and use various wireless networks, you absolutely need a software firewall. The other computers at Starbucks may be full of viruses, and you need a software firewall to protect you from them. Also, if you have a computer in your house that may be used for some less-than-safe surfing, you should have a software firewall. Kids may have permitted access for online gaming, peer-to-peer file sharing, or may have downloaded software that has spyware, etc. Protect your PC by running a software firewall. Finally, if you have a wireless network, make sure you control who access it. If your neighbor can access your network and has a bunch of malware on his machine, your machines could get infected, too.

Robert K5PI.

Adding N1MM to the Windows Firewall

When you do not want to turn off the Windows Firewall you can leave your windows firewall on even though you are behind a router. Add N1MM to your exceptions list and better yet add the local subnet (usually ( to the port exceptions.

Comments are closed.