qm-fsw-ctl

The qm-fsw-ctl utility provides administrative commands for managing Uniloader services, tenants, and diagnostics.

When installing via Ansible, the script qm-fsw-ctl is installed as well; it helps with a number of manual administrative tasks. It is immediately available after Ansible runs; and will print extensive help if invoked directly.

Usage
qm-fsw-ctl [tenants|sync|dumpstate|svcstate|trace]
qm-fsw-ctl [logs|qlog]

qm-fsw-ctl tenants

Prints all configured domains and the current size of their recordings.

Example
# qm-fsw-ctl tenants

Tenants configured on this server:

1.2G	./abc.xy
2.8M	./def.xy

qm-fsw-ctl sync

Outputs the current presence state (all agents on all queues) to the queue_log.

Example
# qm-fsw-ctl sync

Syncing queue information
2025/11/18 14:05:43 Asking for a queue refresh on 127.0.0.1:8021 with pass '*******'
2025/11/18 14:05:43 Event was sent in 0 ms - all went well

You will see all presence state rewritten to the queue_log file.

qm-fsw-ctl dumpstate

Prints the current inner state of service uniloader-freeswitch. As that is written on the service journal, it shows the journal. Press Ctrl-C to stop.

Example
# qm-fsw-ctl dumpstate

Dumping inner state of daemon uniloader-fusion
2025/11/18 14:06:35 Asking Uniloader Fsw on 127.0.0.1:8021 with pass '*******' to log its status
2025/11/18 14:06:35 Event was sent in 0 ms - all went well

Nov 18 14:06:35 svr uniloader[569941]: 2025/11/18 14:06:35 ========== Γνῶθι σεαυτόν - NOSCE TE IPSVM ===========
Nov 18 14:06:35 svr uniloader[569941]: 2025/11/18 14:06:35 Open Calls: 14 - Open agents: 145 (waiting for tiers: 0)
Nov 18 14:06:35 svr uniloader[569941]: 2025/11/18 14:06:35 Ag:04c76072-01a0-4b5e-91a6-cbedc05c4e82 C:user/2002@abc.xy Logged Out,Waiting Qs:NONE
....
Nov 18 14:06:35 svr uniloader[569941]: 2025/11/18 14:06:35 C:fe84a(mc)-Q=q-outbound@abc.xy-A=-B=83843-n:
Nov 18 14:06:35 svr uniloader[569941]: 2025/11/18 14:06:35 -----------------  That's all folks -----------------

qm-fsw-ctl svcstate

Prints the current state for all services.

Example
● uniloader-freeswitch.service - Loway Uniloader 25.09.3 - FreeSwitch
     Loaded: loaded (/etc/systemd/system/uniloader-freeswitch.service; enabled; preset: enabled)
     Active: active (running) since Tue 2025-11-18 10:40:10 UTC; 5h 43min ago
   Main PID: 2354555 (uniloader)
      Tasks: 4 (limit: 4531)
     Memory: 5.0M
        CPU: 166ms
     CGroup: /system.slice/uniloader-freeswitch.service
             └─2354555 /usr/bin/uniloader fsw ....

Nov 18 16:05:16 fusion2 uniloader[2354555]: 2025/11/18 16:05:16 Uniloader 25.09.3 (0-20251118.1037) up - GR: 3 - Mem: Alloc 666k (Free 0k) Sys 6743k
....

● uniloader-splitter.service - Loway Uniloader 25.09.3 - Splitter
     Loaded: loaded (/etc/systemd/system/uniloader-splitter.service; enabled; preset: enabled)
     Active: active (running) since Tue 2025-11-18 10:40:11 UTC; 5h 43min ago
   Main PID: 2354619 (uniloader)
      Tasks: 5 (limit: 4531)
     Memory: 8.3M
        CPU: 7min 54.911s
     CGroup: /system.slice/uniloader-splitter.service
             └─2354619 /usr/bin/uniloader .....

Nov 18 16:12:01 fusion2 uniloader[2354619]: 2025/11/18 16:12:01 [http://116.203.46.244:8080/queuemetrics/] Driver error: retrying in 300000 ms
....

● uniloader-audiovault.service - Loway Uniloader 25.09.3 - AudioVault
     Loaded: loaded (/etc/systemd/system/uniloader-audiovault.service; enabled; preset: enabled)
     Active: active (running) since Tue 2025-11-18 10:40:13 UTC; 5h 43min ago
   Main PID: 2354680 (uniloader)
      Tasks: 4 (limit: 4531)
     Memory: 2.9M
        CPU: 167ms
     CGroup: /system.slice/uniloader-audiovault.service
             └─2354680 /usr/bin/uniloader av serve ....

Nov 18 15:35:19 fusion2 uniloader[2354680]: 2025/11/18 15:35:19 Uniloader 25.09.3 (0-20251118.1037) up - GR: 2 - Mem: Alloc 539k (Free 0k) Sys 6487k
....

qm-fsw-ctl trace

Creates trace files to be sent to Loway (events and logs). This can be run in parallel to an existing uniloader-freeswitch server, so you can run it on a full production server without interrupting operations.

The command displays where the trace files will be saved.

Once the trace is over, press Ctrl-C to interrupt.

Though you do not need to stop and start the uniloader-freeswitch server, make sure that there are no external calls running apart from the test you want to make, as logs are extremely verbose and hard to understand.
Example
# qm-fsw-ctl trace

Now running event trace files:
 - /opt/fusion-splitter-data/traces/evt_251118-1408_trace.txt
 - /opt/fusion-splitter-data/traces/evt_251118-1408_qlog.txt

Press Ctrl+C to terminate.

2025/11/18 14:08:54 Uniloader 25.09.3 (0-20251118.1037) up - GR: 2 - Mem: Alloc 508k (Free 0k) Sys 6743k
2025/11/18 14:08:54 Starting : FS: 127.0.0.1:8021 (auth '*******') - Qlog: '/opt/fusion-splitter-data/traces/evt_251118-1408_qlog.txt' Events: '/opt/fusion-splitter-data/traces/evt_251118-1408_trace.txt' - DB uri: '127.0.0.1/fusionpbx?sslmode=disable' user: 'fusionpbx' pass: '*************************' - Shorten? true Addmembers? false - Flt Outbound: Caller All, Callee All
2025/11/18 14:08:54 Reading all events from ESL - Do not use in production
2025/11/18 14:08:54 ========== Now syncing all agents ===========
2025/11/18 14:08:54 [Cache] Searching for agent: 04c76072-01a0-4b5e-91a6-cbedc05c4e82
2025/11/18 14:08:54 [Cache] Searching for agent: 0803f46d-b51f-4b9a-810f-588493ae2fa1
2025/11/18 14:08:54 [Cache] Searching for agent: 09213a07-aeac-4f13-927b-1d52d6b47bcf

^C

When done, gather the files in /opt/fusion-splitter-data/traces and send them over, complete with a detailed description of what was tested.

For more details, see this FAQ.

Log Files

qm-fsw-ctl logs

Tails the aggregate logs for services uniloader-freeswitch and uniloader-splitter. Press Ctrl-C to stop.

Example
# qm-fsw-ctl logs

Tailing current state of services

Nov 18 14:06:35 svr uniloader[569941]: 2025/11/18 14:06:35 C:83843(ma)-Q=q-outbound@abc.xy-A=Agent/27875638048@abc.xy-B=fe84a-n:

qm-fsw-ctl qlog

Tails the aggregate queue_log file for all tenants. Press Ctrl-C to stop.

Example
# qm-fsw-ctl qlog

Tailing aggregate queue_log file at /opt/fusion-splitter-data/queuelog-synth-fsw.txt

1763474993|f246360e-1682-4f1d-af7d-d5ccc4cb675a|abc-q-outbound|Agent/abc-27875638075|CONNECT|0||||
1763474998|ul.3912e|abc-q-outbound|Agent/abc-27875638080|ADDMEMBER|||||