/****************************************************************************
**
** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Creator documentation.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
**
****************************************************************************/

    /*!
    \page creator-developing-generic-linux.html
    \if defined(qtdesignstudio)
    \previouspage creator-developing-android.html
    \nextpage studio-advanced.html
    \else
    \previouspage creator-developing-b2qt.html
    \nextpage creator-developing-ios.html
    \endif

    \title Connecting Generic Remote Linux Devices

    You can connect generic Linux devices to the development PC to run,
    debug, and analyze applications built for them from \QC.

    If you have a tool chain for building applications for embedded Linux
    devices installed on the development PC, you can add
    it to \QC. You can then select a \l{glossary-buildandrun-kit}{kit}
    with \uicontrol {Embedded Linux} device type to
    build applications for and run them on the devices.

    To be able to run and debug applications on generic remote Linux devices,
    you must add devices and select them in the \QC \l{glossary-buildandrun-kit}
    {kit}.

    You use a wizard to create the connections. You can edit the settings later
    in \uicontrol Tools > \uicontrol Options > \uicontrol Devices >
    \uicontrol Devices.

    \image qtcreator-linux-device-configurations.png "Devices dialog"

    You can protect the connections between \QC and a device by using an
    \l{https://www.openssh.com/}{OpenSSH} connection. OpenSSH is a
    connectivity tool for remote login using the SSH protocol. The OpenSSH
    suite is not delivered with \QC, so you must download it and install it
    on the development PC. Then, you must configure the paths to the tools in
    \QC. For more information, see \l {Configuring SSH Connections}.

    You need either a password or an SSH public and private key pair for
    authentication. If you do not have an SSH key, you can use the ssh-keygen
    tool to create it in \QC. For more information, see \l {Generating SSH Keys}.

    \note \QC does not store passwords, so if you use password authentication,
    you may need to enter the password on every connection to the device,
    or, if caching is enabled, at every \QC restart.

    To configure connections between \QC and an embedded Linux device and to
    specify build and run settings for the device:

    \list 1

        \li Make sure that your device can be reached via an IP address.

        \li Select \uicontrol Tools > \uicontrol Options > \uicontrol Kits >
            \uicontrol {Qt Versions} > \uicontrol Add to add the Qt version
            for embedded Linux.

        \li Select \uicontrol Tools > \uicontrol Options > \uicontrol Kits >
            \uicontrol Compilers > \uicontrol Add to add the compiler for
            building the applications.

        \li To deploy applications and run them remotely on devices, specify
            parameters for accessing the devices:

            \list a

                \li Select \uicontrol Tools > \uicontrol Options >
                    \uicontrol Devices > \uicontrol Devices > \uicontrol Add >
                    \uicontrol {Generic Linux Device}
                    > \uicontrol {Start Wizard}.

                    \image qtcreator-screenshot-devconf-linux.png "Connection Data wizard"

                \li In the \uicontrol {The name to identify this configuration} field,
                    enter a name for the connection.

                \li In the \uicontrol {The device's host name or IP address} field,
                    enter the host name or IP address of the device.
                    This value will be available in the variable \c %{Device:HostAddress}.

                \li In the \uicontrol {The username to log into the device} field,
                    enter the username to log into the device and run the
                    application as.
                    This value will be available in the variable \c %{Device:UserName}.

                \li Select \uicontrol {Next} to open the
                    \uicontrol {Key Deployment} dialog.

                    \image qtcreator-generic-linux-device-key-deployment.png "Key Deployment dialog"

                \li In \uicontrol {Private key file}, select a private key file
                    to use for authentication. This value will be available in
                    the variable \c %{Device:PrivateKeyFile}.

                \li If you do not have a public-private key pair, select
                    \uicontrol {Create New Key Pair}. For more information,
                    see \l{Generating SSH Keys}.

                \li Select \uicontrol {Deploy Public Key} to copy the public
                    key to the device.

                \li  Select \uicontrol {Next} to create the connection.

            \endlist

            All of these parameters can be edited later, as well as additional ones that the
            wizard does not show because there are sensible default values. One of these is
            the SSH port number, which is available in the variable \c %{Device:SshPort}.


        \li Select \uicontrol Tools > \uicontrol Options > \uicontrol Kits >
            \uicontrol Add to add a kit for building for the device. Select the
            Qt version, compiler, and device that you added above, and choose
            \uicontrol {Generic Linux Device} for the device type.

        \li To specify build settings:

        \list 1

            \li Open a project for an application you want to develop for the
                device.

            \li Select \uicontrol Projects > \uicontrol {Build & Run} to enable
                the kit that you specified above.

        \endlist

        \li Select \uicontrol Run to specify run settings. Usually, you can use
            the default settings.

    When you run the project, \QC deploys the application as specified by the
    deploy steps. By default, \QC copies the application files to the device.
    For more information, see \l{Deploying Applications to Generic Remote Linux Devices}.

    \endlist

    \include linux-mobile/linuxdev-keys.qdocinc configuring ssh
    \include linux-mobile/linuxdev-keys.qdocinc generating ssh keys
    \include linux-mobile/linuxdev-processes.qdocinc managing device processes
*/
