Answers

tSync and tSyncRemote can run
when the current user logs on, but can I make it run when the system
boots up, or before any user logs in?

Although not designed specifically to run as a service (or from a
non-interactive desktop) you may set up both tSync program and
tSyncRemote module to run when computer starts up. The downside of
such approach is that you will not be able to see the programs'
icons on the system tray to be able to control them or to see the
status of their operation.

For Windows 2000/XP:

Run tSync (or tSyncRemote) under a user
account with administrative privileges and set it up the way you
want it to operate.

Exit the program. In either case of tSync or
tSyncRemote right-click its icon in the system tray (next to the
system clock) and select Exit.

Go to Start -> Control Panel, and click
"Switch to Classic View" on the left, then double-click "Scheduled
Tasks" icon.

In the pane listing tasks in the middle right-click the
tSync (or tSyncRemote) task line and select Delete.

Confirm
deletion.

Reboot computer.

How do I set up a network for
tSync to synchronize time, or to send commands to a remote machine?

You will need the following components:

Version of Windows that supports
networking (recommended: Windows 2000/XP/Server 2003,
or Vista/Server 2008/7 - see limitations).

Network card on each computer
(the network card may be already built in your motherboard - in this
case check for presence of the
Ethernet jack).

In case of more than two computers you will
need a network router, or a network switch.

In case of more than two computers you will
need Ethernet cables to connect each computer to the router.

In
case of only two computers you will need a "cross-over"
Ethernet cable to connect two computers directly.

Perform the following steps to set up the network
required by tSync program (only if not set up before):

In case of
more than two computers, connect each computer's network card to a
router using Ethernet cables. In case of only two computers
connect their network cards directly using the "cross-over" Ethernet cable.

IMPORTANT: In case of connecting
two computers directly it is important to use the "cross-over"
Ethernet cable instead of a regular/patch Ethernet cable.

Power on computers and the router, if
present.

When Windows boots up it should detect new
network connections and initialize them.

INFORMATION: You may need to install
additional drivers for the network card(s) before you will be
able to use the network. Refer to the network card
documentation, if the card was not installed before.

INFORMATION: You may need to set up a network connection
manually for the older versions of Windows.

INFORMATION: Your router may need additional setup before it is
ready to accept network connections. Refer to the router
documentation for additional information.

At this point your network connections should
be available for tSync. You may skip to the next step.
In case you want to use a static IP to connect remote computers
you can set it up as follows:

INFORMATION: Static IP configuration is faster
and thus is recommended over the use of computer names if you do
not plan to share Internet connection and/or enable file sharing
between remote machines.

Windows 2000: Go to Start -> Settings -> Control
Panel -> Network and Dial-up Connections, then right-click
the network connection (it may be called something like,
"Local Area Connection") and select Properties. Make sure
that "Internet Protocol (TCP/IP)" is checked, then select that
line and click Properties. Put a check next to "Use the
following IP address" and specify the following: "Subnet
mask" should be 255.255.255.0, and "IP address" should be
192.168.1.N, where N = the number between 1 and 255, that is
unique per each computer on the network. The "DNS Server
addresses" could be left blank. When done, click OK.

IMPORTANT: The above instructions
apply only if the network connection was not set up before.

INFORMATION: If you fail to make tSync communicate with
tSyncRemote using this static IP method, make sure to undo
changes made to the network connection and try using
connection method by specifying a remote machine using its
(DNS) computer name (details).

Windows
XP: Go to Start -> Control Panel -> Network Connections,
then right-click the network connection (it may be called
something like, "Local Area Connection") and select
Properties. Make sure that "Internet Protocol (TCP/IP)" is
checked, then select that line and click Properties. Put a check
next to "Use the following IP address" and specify the
following: "Subnet mask" should be 255.255.255.0, and "IP
address" should be 192.168.1.N, where N = the number between
1 and 255, that is unique per each computer on the network.
The "DNS Server addresses" could be left blank. When done,
click OK.

IMPORTANT: The above
instructions apply only if the network connection was not
set up before.

INFORMATION: If you fail to make tSync communicate with
tSyncRemote using this static IP method, make sure to undo
changes made to the network connection and try using
connection method by specifying a remote machine using its
(DNS) computer name (details).

Windows Vista/7: Go to Start -> Control Panel ->
Network and Sharing Center. Click "View Status" next to the
network connection and click Properties. Make sure that
"Internet Protocol Version 4 (TCP/IPv4)" is checked, then
select that line and click Properties. Put a check next to
"Use the following IP address" and specify the following:
"Subnet mask" should be 255.255.255.0, and "IP address"
should be 192.168.1.N, where N = the number between 1 and
255, that is unique per each computer on the network. The
"DNS Server addresses" could be left blank. When done, click
OK.

IMPORTANT: The above instructions
apply only if the network connection was not set up before.

INFORMATION: If you fail to make tSync communicate with
tSyncRemote using this static IP method, make sure to undo
changes made to the network connection and try using
connection method by specifying a remote machine using its
(DNS) computer name (details).

Perform the following steps to set up tSync
program:

Set up tSync program on the main computer by
adding remote machine(s) to its "Remote Machines" list (read
here). In case you skipped the step
of setting up a static IP above, make sure to specify that remote machine by its
computer name (read how to get it),
or if you set up connection using a static IP address, make sure
to specify the remote machine by its IP address
(read how to get it).

IMPORTANT: To be able to connect using remote computer
names, make sure that each computer on the network has a
different DNS computer name (details
here).

INFORMATION: tSync requires basic TCP/IP connection for
its communication. It does not require presence of the
Internet connection or file sharing between remote machines.

INFORMATION: It is recommended for network
time synchronization to select a
computer that has (fast) Internet connection to put tSync
server program on. This way you can also synchronize time over the
Internet on all computers on the network.

Refer to the manual
for more detailed information about the software setup.

How do I learn the IP address
of a remote machine on my network?

Perform the following
steps on remote machine which IP address
you'd like to learn:

Windows
XP/2000: Go to Start -> Run. Type
cmd and click OK. Type
ipconfig in the Command Prompt
window and hit Enter. The desired address will be displayed in
the "IP Address" field for your network connection.

Windows Vista/7: Go to Start and type
cmd in the search bar, hit
Enter. Type ipconfig in the
Command Prompt window and hit Enter. The desired address will be
displayed in the "IPv4 Address" field for your network
connection.

When tSync (or tSyncRemote)
is run I see the following message, "Another instance of the program
is already running. Close it to re-start it again..."

This message could be displayed in one of the following cases:

You just exited the tSync (or tSyncRemote module) and it didn't
have enough time to close completely (it may take up to several
seconds to close all connections).

You just re-installed the tSync (or tSyncRemote module), that
caused the previously running version to close. In this case you did
not let enough time for the old version to close. Wait for a couple
seconds and repeat it again.

tSync program (or tSyncRemote module)
was already started either by another user, or as a service in a
non-interactive desktop. You do not need to run another instance of the
program in this case. In case you want to change settings for the
program, or to uninstall it you will have to either log in as the user
that initially started the program, or remove it from the
Windows auto-start if it's run as a service. Refer to the
Question 1 for more
information. In case of tSyncRemote module you can also close it
using tSync's remote interface "Exit" command
(more info).

When I run tSync (or tSyncRemote) it resets my
clock one hour behind (or forward). How do I fix that?

The main reason why this may happen is because your daylight saving
option is not set up properly:

Windows XP: Double-click on the system clock on the Windows
taskbar (in most cases it is located in the bottom right corner
of the screen). In the "Date and Time Properties" window switch
to the Time Zone tab and make sure that "Automatically adjust
clock for daylight saving changes" is checked. Click OK to save
the changes.

Windows Vista/7: Left-click on the system clock on
the Windows taskbar (in most cases it is located in the bottom
right corner of the screen) and select "Change date and time
settings". In the "Date and Time" window click "Change time
zone" button and make sure that "Automatically adjust clock for
Daylight Saving Time" is checked. Click OK to save the changes
in every window that was opened.

The issue may also manifest itself because you do not have the
latest update for your operating system from Microsoft. This is especially true for users
in U.S. where in 2007 and in 2008 the Congress passed several
changes to the way the daylight saving is observed. There are two
ways to resolve this issue:

Download and install tSync v.1.2 or later (and tSyncRemote
module v.1.2 or later) and specify not to use "Machine's daylight
saving" in the tSync Options window for each network connection.

INFORMATION: In this case you will also have
to disable automatic adjustment of the system time according to the
daylight saving schedule on each remote machine that causes this
issue.

Follow
the link below to download and install the following update on each computer where
you're running tSync (or tSyncRemote):

How do I learn the computer
name of a remote machine on my network?

Perform the following steps on remote machine which computer
name you'd like to learn:

Windows
2000: Right click My Computer icon on the desktop and select
Properties. In the System Properties window switch to "Network
Identification" tab. The name of interest should be displayed on the "Full
computer name" line.

Windows
XP/2003: Go to Start. Right click My Computer and select
Properties. In the System Properties window switch to "Computer
Name" tab. The name of interest should be displayed on the "Full
computer name" line.

Windows
Vista/7: Click the Microsoft logo (i.e. Start button at
the bottom left corner of the screen). From a pop-up menu
right-click Computer and select Properties. In the "View basic
information about your computer" window the name of interest
should be displayed on the "Full computer name" line.

Can I set up tSync to synchronize time and
execute commands between two or more machines over the Internet?

Yes, you can. Although time synchronization over the Internet connection between two or more
remote machines is not recommended due to possible accuracy issues,
but you can use both tSync and tSyncRemote module to send remote
interface commands (read
more) between computers on the Internet. To do that you
will need the following:

One
(server) computer connected to the Internet that will run tSync
server module. (Note that the static Internet
IP address on this computer is not required.)

One or more
(client) computer with a static Internet IP address that
will run tSyncRemote module.

tSync server program has to be set up on the host (server) computer
(more here).

tSyncRemote module(s) have to be set up on each
(client)
machine (more here).

Refer to the manual for more information on how to
set up both tSync (here) and tSyncRemote module (here).
In case of tSync, you can set it up to use static Internet IP
addresses to connect to each (client) remote machine.

INFORMATION: Most certainly each router on the remote end-points will require appropriate port forwarding for the connection port used during tSync installation.

Can I connect more than one
tSync server program to a single tSyncRemote machine?

Yes, you can. In this case make sure not to cause a conflict between
multiple-server time synchronizations and/or remote interface
commands.

How accurately can tSync
synchronize time over network on remote machine(s)?

To answer this question you need to understand how the network
synchronization is performed by tSync (and tSyncRemote module). Each
time you instruct tSync to synchronize time on your network the
following sequence takes place for each remote machine. (Note that
tSync works with one machine at a time and continues on until every
machine in the list has been serviced):

tSync sends a request for tSyncRemote to "wake up". (Arrow 1 in the diagram below.)

tSyncRemote remembers the exact time when it received the
"wake up" command (T1 in the diagram) and sends response back to
tSync. (Arrow 2 in the diagram)

tSync reads the system time, converts it to UTC format
(Tm in the diagram) and
sends it back to tSyncRemote. (Arrow
3 in the diagram)

tSyncRemote remembers the exact time when it received the UTC time stamp from tSync (T2 in the diagram). At this point the tSyncRemote module
has all the information it needs to set the time. It acts in one
of two ways:

If the setting to use the daylight saving was
specified, tSyncRemote converts the UTC time stamp it
received from tSync into the local time according to the
Windows daylight saving settings and sets the time according
to the following formula:

Time = Tm + (T2 - T1)
/ 2 + DaylightSavingAdjustment

If the daylight saving was not used for this particular
remote machine, tSyncRemote sets the time according to the UTC
time stamp it received from tSync without adjusting it
according to the local daylight saving settings:

Time = Tm + (T2 - T1)
/ 2

Lastly, tSyncRemote sends a confirmation back to tSync that the time
synchronization was successful.

The following diagram illustrates time synchronization over a network connection performed by tSync and tSyncRemote module:

The internal timers (T1 and T2 in the diagram) used by tSyncRemote are very
precise, capable of measuring time intervals down to tens of nanoseconds.
The UTC time stamp sent by tSync (Tm in the
diagram) has a gradation down to 100-nanosecond
intervals. But, still the exact precision used by your system will depend
on your hardware.

So, as you can see the mechanism of time synchronization can be very
accurate. It has only one weak spot though - it relies on the fact that
the transmission times (arrows 2 and 3 in the
diagram) are roughly the same, thus if they are
not, the precision of the time synchronization will be diminished.

If remote time
synchronization is so precise as described in FAQ 9, why don't I
see it on my system?

Although tSync (and tSyncRemote module) can synchronize time very
accurately with the initial time variation measured in tens of
milliseconds, the further precision is relegated to your system
clock. Unfortunately many (older) PCs were not designed to maintain
accurate system time down to milliseconds, thus due to this reason you
may see a significant variation between two or more systems. Even
within a few minutes.

Just FYI, on one of our older Dell systems
the time difference grows to several seconds within 10 minutes after
the initial time synchronization.

The only workaround in this case
could be performing time synchronization more often. In normal
circumstances, done once an hour, the time synchronization between
remote machines should maintain a sufficient system clock accuracy within several
seconds.

Is there a way to export and then import the
list of 'Remote Machines' in tSync?

Regrettably, no. We'll try to issue an update that will be able to do it. Until then you will have to do it
manually by using Regedit.

Here's how:

Install and configure tSync.

Make sure to set up all remote
machines in the list using the user interface, as described
here.

Then open exported .reg file in the Notepad and edit out everything except these three values, and save changes:

SetupEnblNtwkSync

SetupRepeatNtwkSync

SetupNtwkMachns

So you'll end up with something like this:

Then take this exported .reg file to other computers &
repeat steps below for each new system:

First, make sure to close tSync completely. For that
right-click its icon on the system notification tray (by Windows
clock) and select Exit.

Import the .reg file (by double-clicking it) and restart tSync. It should now show your list of
remote machines.

Are you planning to make tSync (and tSyncRemote) fully compatible with Windows 10?

The short answer is yes.

The long answer, it depends. This software has a very small user base, which makes it hard to allocate our time and resources when other projects may require our attention. We still have it on our list of to-do things, and as soon as we have an opportunity we will update tSync (and tSyncRemote) sufficiently enough to make it run on Windows 10 without the need for manual changes in the System Registry and in the Task Scheduler.

Lastly, if you're asking whether or not we're planning to re-write tSync to make it run as a Windows service (so that interactive user is not required to log in to make tSync work) then the answer is, no. Not in the immediate future. As stated above the user base for this software is small enough for us to justify such a re-write.