Hidden Registry Settings

It is strictly recommended for non-administrative users to change all settings via Serial Port Splitter user interface.

Some settings and tweaks which are not present in the GUI can be made via Windows Registry. Registry keys should be created in the following location:

  • for 64-bit system: HKLM\SOFTWARE\WOW6432Node\FabulaTech\Serial Port Splitter\Settings
  • for 32-bit system: HKLM\SOFTWARE\FabulaTech\Serial Port Splitter\Settings
Name Type Range Description
IgnoreWaitingErrorMask DWORD 0, 1 When TRUE, the service will not receive EV_ERR port event from physical port (using for all configured Split physical port)
PauseBeforeClosePort DWORD 0...3000 Pause in milliseconds for the service to wait before finally closing Split or Shared ports (for all configured ports).
CricketUM185C DWORD 0, 1 When TRUE, the service will apply some specific settings for Shared ports (required for "3G USB modem Cricket UM185C" device only).
CheckForRegistryPortExists DWORD 0, 1 When TRUE, the service will will skip ports not present in HKLM\HARDWARE\DEVICEMAP\SERIALCOMM registry key from physical ports enumeration list.
UsePreallocatingForSharedPorts DWORD 0, 1 When TRUE, ports preallocation mechanism is enabled. See below for details.
MinPreallocatingForSharedPorts DWORD 0...50 Minimal number of spare preallocated ports.
MaxPreallocatingForSharedPorts DWORD 0...50 Maximum number of preallocated ports.

Preallocated Ports

New virtual ports can't be created in a flash. In some operating systems the delay of creating new virtual instance for shared port can be about 1.5 seconds (on virtual machines even longer). Pre-created ports will allow to open the same shared port by several applications in the same time (or with the smallest delay possible).

In order to use functionality of preallocated ports, all 3 values UsePreallocatingForSharedPorts, MinPreallocatingForSharedPorts and MaxPreallocatingForSharedPorts should be defined in the Registry.

Immediately after shared port creation, the program creates a set of additional virtual ports which total number equals MaxPreallocatingForSharedPorts. While different applications are opening shared port, our software utilizes previously created ports instead of creating new ports. When the number of previously created ports become less than MinPreallocatingForSharedPorts, our software creates (in a different stream) as many additional virtual ports, as it is needed for reaching the number MaxPreallocatingForSharedPorts.

Choosing Optimal Values

  • MaxPreallocatingForSharedPorts should match the total number of applications that simultaneously open the same port, plus small reserve (a couple of ports).
  • MinPreallocatingForSharedPorts should match the number of applications, which very rarely re-open the port more than once.

If these values are chosen correctly, spare virtual ports will always be ready to connect new applications to the shared port.

After performing the operations of opening/closing the virtual port will not be used any more. This should be taken into account when choosing right values for preallocated ports.