Klipper should be already installed and configured on the machine.
3DPrinterOS communicates with Klipper using it's virtual serial port link(usually /tmp/printer)
Please make sure that that it is enabled in your Klipper configuration.
If it does, then you should have a link in /run/klipper/sock or in legacy version /tmp/printer pointing to a Klipper's virtual serial port.
Important! Check virtual port's read and write rights from the user that is running 3DPrinterOS Client, using this console commands:
(replace /tmp/printer with your klipper's virtual port)
    echo "M105\n" >> /tmp/printer
    cat /tmp/printer
This command should not produce any errors or warnings, permission denied and so on.
If your Klipper's virtual port is in custom location(any other than /tmp/printer), you'll have to set accordingly in 3DPrinterOS Client settings.
(~/.3dprinteros/user_settings.json  or /home/$USER/.3dprinteros/user_settings.json)
Edit this file to set a proper Klipper port with your preferred editor or in local 3DPrinterOS UI editor.
    "klipper": {
      "custom_port": ["/tmp/my_printer"]
    }
If you don't wish for your 3DPrinterOS Client to ever communicate through USB(not through Klipper) you can disable USBDetector in the same settings file:
    "active_detectors": {
      "StaticDetector": false,
      "USBDetector": false,
      "NetworkDetector": false,
      "KlipperDetector": true,
      "GPIOUARTDetector": false
    } 
But this last step isn't necessary when /tmp/printer is set properly and is always present.
Because 3DPrinterOS Client can automatically detect Klipper and disables USB detection in most cases.
