Problems with voxl-uvc-server

  • Hi.
    I'm using voxl-uvc-server (v0.1.3) on system image v3.8.

    I have experienced a few problems:

    1. When two different cameras are attached via USB hub (either powered or unpowered) to debug board's USB, voxl-uvc-server usually fails at opening the device.
      If I boot with only one camera attached to the USB hub, it works on the first try. With two cameras attached, it fails (uvc_open failed) around two to three consecutive tries, until its successful.
      In this scenario I was only running one instance of voxl-uvc-server. No other software was accessing UVC (AFAIK) on the VOXL.

    2. I'm trying to use voxl-uvc-server for both cameras. From the docs it should be possible, as they are different brand/type of cameras, and I'm giving each one a unique frame rate.
      But in practice, it doesn't work: The code for voxl-uvc-server prevents two instances from running simultaneously:

    int main(int argc, char *argv[]) {
        // gracefully handle an existing instance of the process and associated PID file
        // make sure another instance isn't running
        // if return value is -3 then a background process is running with
        // higher privaledges and we couldn't kill it, in which case we should
        // not continue or there may be hardware conflicts. If it returned -4
        // then there was an invalid argument that needs to be fixed.
        if(kill_existing_process(SERVER_NAME, 2.0)<-2) return -1;
        // start signal handler so we can exit cleanly
            fprintf(stderr,"ERROR: failed to start signal handler\n");
            return -1;
        // make PID file to indicate your project is running
        // due to the check made on the call to rc_kill_existing_process() above
        // we can be fairly confident there is no PID file already and we can
        // make our own safely.

    How can I run two instances on the VOXL ?


  • Any help about running 2 USB cameras ?
    Can I just remove the code that limits this in UVC-server ?

  • Dev Team

    @amitga Yes you can. That code shouldn't be there since it prevents the exact use case that you are trying to run.

Log in to reply