Troubleshooting

Linux

Which Linux distributions are supported?

I just want to do a quick experiment with Video Recognition Gateway (VIRGO). Do I really have to do a full installation?

Actually no. If you just want to run VIRGO temporarily (e.g. to do testing) then there is no need to do a full installation. Do this instead:

  1. Create a virgo-factory.conf file in your home directory which contains the necessary account, environment, and feed information.
  2. Open a shell window and run virgo/versions/current/virgod -l in it.
  3. Open a second shell window and use it to control VIRGO from there. For example, type virgo/virgo service monitor to see the current status of VIRGO.

Once you're done with your work you should terminate VIRGO by typing Control-C in the shell window in which you started virgod.

Here is a small example virgo-factory.conf file:

{
    "global":{
        "environment": "PROD",
        "machine-id-prefix": "vRGo-Rea18L-X-",
        "user-id": "<Your SAFR cloud account ID here>",
        "user-password": "<Your SAFR cloud account password here>",
        "remote-control-enabled":false
    },
 
 
    "feeds":{
        "Axis Q6128-E": {
            "directory":"testy",
            "input.type": "stream",
            "input.stream.url":"rtsp://user:password@101.102.103.104/axis-media/media.amp",
            "enabled":true
        },
    }
}

Note that this quick & dirty way of running VIRGO is not suitable for a production system.

For example, VIRGO will stop running as soon as you log out of the system and the VIRGO factory configuration file is not secured which means that passwords (SAFR cloud account, camera IP passwords, etc) may be exposed to 3rd parties.

I've installed VIRGO but all my feeds die with an "Unexpected termination" error. What is wrong?

Your Linux installation is most likely missing a required APT package/library. Please make sure that you follow the installation instructions for Linux precisely. See this page for the list of required APT packages.

To find out which library is exactly missing, invoke the VIRGO feed daemon directly like this:

> virgo/versions/current/virgofeedd

This will cause the operating system to print the name of the missing library (.so file). Note that this command will print an error message about a missing/broken pipe if no library is missing. This later error is expected but any complaint about a missing dependency/library is not expected and points to a problem you need to fix.

If you see the following, it means that all dependencies are satisfied:

> virgo/versions/current/virgofeedd
 
Fatal error: 'try!' expression unexpectedly raised an error: virgofeedd.DTPError.io(message: "Bad file descriptor (9)"): file /var/lib/jenkins/workspace/ubuntu_16_04_virgo_trunk_daily/build/virgo-build-x86_64-linux/virgofeedd/Sources/main.swift, line 31

If, on the other hand, you see the following, it means that a library is missing:

> virgo/versions/current/virgofeedd
 
virgo_installer/virgo/versions/current/virgofeedd: error while loading shared libraries: libcuda.so.1: cannot open shared object file: No such file or directory

I've connected a camera to VIRGO and it is perpetually stuck in prerolling mode with the error Codec parameters not found. What's going on?

Some cameras have buggy firmware which fail to generate a correct H264 PPS packet if the RTSP transport protocol is set to UDP. Note that VIRGO connects to RTSP cameras via UDP by default because UDP requires less networking resources and has lower latency compared to TCP.

However in this case and to fix this problem you need to tell VIRGO to connect to the camera using TCP instead. Do this by adding the following property to the feed dictionary for the camera:

"input.stream.rtsp.transport":"tcp"

I've just installed VIRGO, changed some things in the virgo-factory.conf file, and now virgod seems to crash all the time?!

Most likely there's a syntax error in the virgo-factory.conf file now. For example, you may have forgotten to add a comma at the end of a property. You can run virgod like this to see the actual error message:

> virgo/versions/current/virgod -l
 
Factory config error: dataCorrupted(Swift.DecodingError.Context(codingPath: [], debugDescription: "The given data was not valid JSON.", underlyingError: Optional(Error Domain=NSCocoaErrorDomain Code=3840 "Badly formed object around character 54." UserInfo={NSDebugDescription=Badly formed object around character 54.})))

You can also check the virgod exit code. It will be 78 (POSIX EX_CONFIG) if there is a syntax error in the factory configuration file.

Note that this kind of error can not be captured by the VIRGO logging system because it happens at the very startup of virgod and before the logging system has been initialized.

macOS

VIRGO crashes when I try to use it

You are most likely trying to run VIRGO on a system which does not have the Swift 5 runtime libraries installed. VIRGO depends on those libraries and Apple started shipping them with macOS beginning with version 14.4.4. If you are running an older OS and are not able to upgrade to a recent version of macOS then you should download the Swift 5 runtime libraries from Apple. See this support article for instructions on how to do this.

Docker

Feed reports "No Recogniser Available" after feed is added.

This type of error is normally produced when the Face Service is too busy to accept additional requests for recognition.

It can also be generated when the VIRGO configuration is incorrect and as such the requests are not getting sent to CoVi and thus time out.

See Also