Configuration Guide

VitalRecorder Configuration File (vr.conf) Guide

VitalRecorder manages device, bed, and filter settings through a single configuration file called vr.conf. This document describes the file structure and how to write it.


Table of Contents

  1. File Location
  2. File Structure
  3. Global Settings
  4. Bed Section
  5. Device Section
  6. Filter Section
  7. Command Line Options
  8. Configuration Examples

1. File Location

PlatformPath
Windows%APPDATA%\VitalRecorder\vr.conf
Linux./vr.conf > ~/vr.conf > /boot/vr.conf (searched in order)
# Run with a piped-in config (Git Bash / Linux shell)
./Vital.exe --console --conf - <<'EOF'
SAVEDIR=/tmp/vr_out
[BED/TEST]
[DEV/BIS]
type=BIS
port=127.0.0.1:4343
EOF

2. File Structure

The file follows an INI-like format consisting of global settings and sections.

# Global settings (top of file)
KEY=VALUE

# Bed (tab) definition
[BED/bedname]

# Device under this bed
[DEV/devicename]
type=DeviceType
port=PortSpec

# Filter under this bed
[FILT/filter_module_name]

Rules:


3. Global Settings

Settings placed before any [BED/...] section.

General

KeyDefaultDescription
SAVEDIR(system default)Recording file save directory
VRCODE(auto-generated)VitalRecorder identification code
DEBUG0Debug mode (0: off, 1: on)
FILENAME_TEMPLATE%r_%y%m%d_%h%i%sRecording filename template

Recording

KeyDefaultDescription
RECORD_WHEN_START1Auto-record on launch (0: off, 1: on)
CUT_FILE1Split file at patient boundaries (0: off, 1: on)
CUT_HOURLY0Split file every hour (0: off, 1: on)
CUT_BY(none)Signal for file split trigger (e.g., spo2, hr, any)
PT_WAITING_TIME5Patient waiting time in minutes

Server

KeyDefaultDescription
SERVER_IP(none)VitalDB server address (IP:port)
UPLOAD_SERVER_IP(none)File upload server address
MONITOR_SERVER_IP(none)Web monitoring server address
SEND_WEB1Send data to web server (0: off, 1: on)
CLOUD_UPLOAD0Enable cloud upload (0: off, 1: on)

TLS / Certificate Trust

VitalRecorder can verify the server TLS certificate for all HTTPS uploads and WebSocket monitoring connections, or it can accept any certificate (legacy behavior).

Note for the 1.x line: the default is TLS_INSECURE=1 (verification off). Many hospital deployments use private/self-signed CAs that are not installed system-wide, so forcing verification would break existing uploads. Sites that do have a trusted CA chain can opt in by setting TLS_INSECURE=0. Vital Recorder 2.0 is planned to flip this default.

KeyDefaultDescription
TLS_INSECURE11 skips peer and hostname verification (1.x default — preserves compatibility with private/self-signed hospital certificates). 0 enables full TLS verification using the system trust store (and TLS_EXTRA_CA if provided).
TLS_EXTRA_CA(none)Absolute path to an additional CA bundle file (PEM). Added to the trust store on Linux/macOS (OpenSSL/curl). On Windows the system certificate store is used — install the hospital CA there instead; this key has no effect under WinInet. Only applies when TLS_INSECURE=0.

Typical scenarios

# Example — enable TLS verification, using a hospital-provided CA bundle on Linux/RPi
TLS_INSECURE=0
TLS_EXTRA_CA=/etc/vitalrecorder/hospital-root-ca.pem
# Example — enable TLS verification using only the Windows system certificate store
TLS_INSECURE=0

Window

KeyDefaultDescription
START_MAXIMIZED1Start maximized
START_MINIMIZED0Start minimized
OPTION_MIN_TO_TRAY0Minimize to system tray
OPTION_ALWAYS_ON_TOP0Always on top
PLAY_SOUND1Play alarm sounds

Event Presets

Up to 30 event preset labels can be defined with EVT_TEXT_0 through EVT_TEXT_29.

EVT_TEXT_0=Induction
EVT_TEXT_1=Intubation
EVT_TEXT_2=Incision

4. Bed Section

Defines a bed (tab). Multiple beds can be defined in a single configuration file.

[BED/OR1]

5. Device Section

Devices are added under a [BED/...] section.

Basic Settings

[DEV/devicename]
type=DeviceType
port=PortSpec
KeyRequiredDescription
typeYesDevice type (e.g., BIS, Intellivue, Solar8000)
portYesConnection port (see Port Formats below)
companyNoManufacturer (e.g., Nihon Kohden)
readonlyNoRead-only mode (0: off, 1: on)

Port Formats

FormatExampleDescription
COM portCOM1, COM3Windows serial port
TCP/IP192.168.1.100:4343Network device (IP:port)
Port number4343localhost TCP port
RPi serialF1-F4Raspberry Pi AMA ports
RPi USBLU, LU1-LU4USB Left Upper
RPi USBRU, RU1-RU4USB Right Upper

Port Filtering

Keyword and IP filters can be appended to the port value.

port=PORT#keyword1 keyword2#keyword3@IP_SUFFIX
DelimiterDescription
#Keyword OR group separator
(space)AND condition within the same # group
@IP address suffix filter

Examples:

ADC Device Settings

For ADC (Analog-to-Digital Converter) devices, per-channel settings are available.

KeyDescription
srateSampling rate (Hz)
parname1, parname2, ...Parameter name for each channel
gain1, gain2, ...Voltage-to-physical-unit conversion gain for each channel
[DEV/SNUADC]
type=SNUADC
port=COM3
srate=500
parname1=ECG
gain1=1.0
parname2=ART
gain2=100.0

S5 / Datex Device Settings (GE Solar / Bx50 / B1x5M / Canvas)

Devices that use the Datex DRI protocol (S5, Solar8000, Bx50, B1x5M, Canvas) support per-device options to choose which waveforms are requested from the monitor.

KeyDescription
wavsComma-separated list of waveforms to request (up to 8)
waveonly1 = waveforms only, no numeric values; 0 = both (default)

Available waveform names: ECG1, ECG2, PLETH (alias PPG), CO2, O2, N2O, AWP, IABP1–IABP8, EEG1, EEG2, EEGBIS, EEGENT, EEGENT400.

Invasive arterial pressure (ART) waveform: Use IABP1 — ART and INVP1 are not recognized. The first invasive pressure channel (commonly labeled ART on the monitor screen) is mapped to IABP1.

Default waveforms when wavs is not set:

DeviceDefault waveforms
B1x5M (B105M / B115M / B125M)ECG1, PLETH only — the B1x5M family cannot keep up with the full S5 stream, so the default is intentionally reduced
All other S5 / Solar8000 / Bx50 / CanvasECG1, PLETH, IABP1, CO2, AWP

If you need additional waveforms on a B1x5M (e.g., invasive arterial pressure), list them explicitly:

[DEV/B1x5M]
type=B1x5M
port=LU
wavs=ECG1,PLETH,IABP1,CO2,AWP

6. Filter Section

Adds a real-time signal processing filter. Filter definitions are loaded from the filter server.

[FILT/filter_module_name]

Filter runtime (1.18.37+) — VitalRecorder downloads a slim Python 3.11 runtime (~27 MB) on first filter use, replacing the previous 121 MB pyvital-based bundle. The local server is provided by openvital (numpy + stdlib http.server, no async/web framework deps). Basic ECG / PPG / EEG filters work out of the box; ML-heavy filters (HPI, beat noise detector, rhythm classifier, dlapco SV) are gated behind the Install ML filters button in the Add Filter dialog, which runs pip install openvital[all] silently (no command window) and pulls PyTorch / TensorFlow only on demand.


7. Command Line Options

vr --conf <path>         Specify configuration file path
vr --console             Run in console mode (no GUI)
vr --debug               Console + debug mode
vr --debug test.conf     Debug mode with specified config file
vr --version             Show version info
vr --devtypes            List supported device types
vr --help                Show help

8. Configuration Examples

Basic: Single Patient Monitor

SAVEDIR=D:\VitalData

[BED/OR1]

[DEV/Solar8000]
type=Solar8000
port=COM1

Multiple Devices

SAVEDIR=D:\VitalData
VRCODE=OR1_PC

[BED/OR1]

[DEV/Intellivue]
type=Intellivue
port=192.168.1.100:4343

[DEV/BIS]
type=BIS
port=COM3

[DEV/Primus]
type=Primus
port=COM4

Multiple Beds

SAVEDIR=D:\VitalData

[BED/OR1]

[DEV/Solar8000]
type=Solar8000
port=COM1

[BED/OR2]

[DEV/Philips]
type=Intellivue
port=192.168.1.101:4343

Debug / Test

SAVEDIR=C:\Users\lucid\Desktop
DEBUG=1

[BED/test]

[DEV/NK EGA]
type=EGA
company=Nihon Kohden
port=9001

With Filter

[BED/OR1]

[DEV/Solar8000]
type=Solar8000
port=COM1

[FILT/pleth_spi]