Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. [Solved]Lost Wifi settings after reboot
Forum Updated to NodeBB v4.3 + New Features

[Solved]Lost Wifi settings after reboot

Scheduled Pinned Locked Moved Unsolved QML and Qt Quick
14 Posts 3 Posters 2.1k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • K Kuzma30

    I use in my app code from here
    https://code.qt.io/cgit/qt/qtdeviceutilities.git/tree/examples/deviceutilities/settingsuiapp/DeviceUtilities/SettingsUI/Network
    to make "Settings page".
    I can set WiFi parameters. Its works fine, but when I reboot (Qt6.x Raspberry CM4 with boot2qt distro) I lost my WiFi settings and need re-enter it again.

    In what place parameters saved and restored?

    I also try example code from
    https://doc.qt.io/QtDeviceUtilities-6.2/qnetworksettingsmanager.html#details

    I put

    #include <QtNetworkSettings/QNetworkSettingsManager>
    

    and add in main

        wifiManager = new QNetworkSettingsManager(this);
    wifiManager->connectBySsid("mySSID","my_passwod");
    

    but get error

    /home/qtemb/FertiGUI/main.cpp:568: error: invalid use of ‘this’ in non-member function
    /home/qtemb/FertiGUI/main.cpp:568:47: error: invalid use of ‘this’ in non-member function
      568 |     wifiManager = new QNetworkSettingsManager(this);
          |                                               ^~~~
    
    Axel SpoerlA Offline
    Axel SpoerlA Offline
    Axel Spoerl
    Moderators
    wrote on last edited by
    #2

    @Kuzma30 said in Lost Wifi settings after reboot:
    Generally: Please format your code, using the respective functions in the menu.
    It makes things so much easier to read for those who want to help.

    and add in main
    wifiManager = new QNetworkSettingsManager(this);

    The parent argument thisdoesn't refer to anything, because main is not a class member.

    I don't know if this is the reason for loosing / not restoring the WiFi settings.
    It's documented here, how to obtain the name of the settings file.

    Software Engineer
    The Qt Company, Oslo

    1 Reply Last reply
    0
    • K Offline
      K Offline
      Kuzma30
      wrote on last edited by
      #3

      I add this code to my class for system parameters

      class MySystem : public QObject
      {
          Q_OBJECT
      ....
      Q_PROPERTY 
      ......
      public:
          void connectWiFi()
              {
                  auto wifiManager = new QNetworkSettingsManager(this);
                  QString ssid = "mySSID";
                  QString password = "myPassword";
                  wifiManager->connectBySsid(ssid,password);
              }
      

      and get error during linking

      :-1: error: CMakeFiles/Ferti.dir/main.cpp.o: in function MySystem::connectWiFi()': /home/qtemb/FertiGUI/cpp/MySystem/mysystem.h:-1: error: undefined reference to QNetworkSettingsManager::QNetworkSettingsManager(QObject*)'
      :-1: error: /home/qtemb/FertiGUI/cpp/MySystem/mysystem.h:47:(.text._ZN8MySystem11connectWiFiEv[_ZN8MySystem11connectWiFiEv]+0x58): undefined reference to `QNetworkSettingsManager::connectBySsid(QString const&, QString const&)'

      JoeCFDJ 1 Reply Last reply
      0
      • K Kuzma30

        I add this code to my class for system parameters

        class MySystem : public QObject
        {
            Q_OBJECT
        ....
        Q_PROPERTY 
        ......
        public:
            void connectWiFi()
                {
                    auto wifiManager = new QNetworkSettingsManager(this);
                    QString ssid = "mySSID";
                    QString password = "myPassword";
                    wifiManager->connectBySsid(ssid,password);
                }
        

        and get error during linking

        :-1: error: CMakeFiles/Ferti.dir/main.cpp.o: in function MySystem::connectWiFi()': /home/qtemb/FertiGUI/cpp/MySystem/mysystem.h:-1: error: undefined reference to QNetworkSettingsManager::QNetworkSettingsManager(QObject*)'
        :-1: error: /home/qtemb/FertiGUI/cpp/MySystem/mysystem.h:47:(.text._ZN8MySystem11connectWiFiEv[_ZN8MySystem11connectWiFiEv]+0x58): undefined reference to `QNetworkSettingsManager::connectBySsid(QString const&, QString const&)'

        JoeCFDJ Offline
        JoeCFDJ Offline
        JoeCFD
        wrote on last edited by JoeCFD
        #4

        @Kuzma30 said in Lost Wifi settings after reboot:

        QNetworkSettingsManager

        You can not find the class QNetworkSettingsManager From here
        https://doc.qt.io/qt-6/classes.html
        Was it dropped in Qt6? I guess you are running Qt6 example.
        What are your Qt version and OS?

        K 1 Reply Last reply
        0
        • JoeCFDJ JoeCFD

          @Kuzma30 said in Lost Wifi settings after reboot:

          QNetworkSettingsManager

          You can not find the class QNetworkSettingsManager From here
          https://doc.qt.io/qt-6/classes.html
          Was it dropped in Qt6? I guess you are running Qt6 example.
          What are your Qt version and OS?

          K Offline
          K Offline
          Kuzma30
          wrote on last edited by
          #5

          @JoeCFD said in Lost Wifi settings after reboot:

          QNetworkSettingsManager

          Qt 6.7.0 (boot2qt distro), OS linux

          Axel SpoerlA 1 Reply Last reply
          0
          • K Kuzma30

            @JoeCFD said in Lost Wifi settings after reboot:

            QNetworkSettingsManager

            Qt 6.7.0 (boot2qt distro), OS linux

            Axel SpoerlA Offline
            Axel SpoerlA Offline
            Axel Spoerl
            Moderators
            wrote on last edited by
            #6

            @Kuzma30
            But there's no QNetworkSettingsManagerin 6.7....

            Software Engineer
            The Qt Company, Oslo

            K 1 Reply Last reply
            0
            • Axel SpoerlA Axel Spoerl

              @Kuzma30
              But there's no QNetworkSettingsManagerin 6.7....

              K Offline
              K Offline
              Kuzma30
              wrote on last edited by
              #7

              @Axel-Spoerl
              Agree (I don't know from where I get this files in my bsp). Now I rolling back to 6.6.
              How to connect to WiFI nbetwork with SSID and password in v6.6?

              Axel SpoerlA 1 Reply Last reply
              0
              • K Kuzma30

                @Axel-Spoerl
                Agree (I don't know from where I get this files in my bsp). Now I rolling back to 6.6.
                How to connect to WiFI nbetwork with SSID and password in v6.6?

                Axel SpoerlA Offline
                Axel SpoerlA Offline
                Axel Spoerl
                Moderators
                wrote on last edited by
                #8

                @Kuzma30
                It was removed.
                The reason, in a nutshell, is that the OS typically takes care of that and an application shouldn't manage its own network settings.

                Software Engineer
                The Qt Company, Oslo

                K 1 Reply Last reply
                0
                • Axel SpoerlA Axel Spoerl

                  @Kuzma30
                  It was removed.
                  The reason, in a nutshell, is that the OS typically takes care of that and an application shouldn't manage its own network settings.

                  K Offline
                  K Offline
                  Kuzma30
                  wrote on last edited by
                  #9

                  @Axel-Spoerl
                  But this code works in QML 6.6 (Set button for enter password for SSID)

                                  QtButton{
                                      id: setButton
                                      text: qsTr("SET")
                                      height: GUIParam.dialogButtonSize
                                      onClicked: {
                                          if (showSsid) {
                                              NetworkSettingsManager.connectBySsid(ssidField.text, passField.text)
                                              showSsid = false
                                          } else {
                                              NetworkSettingsManager.userAgent.setPassphrase(passField.text)
                                          }
                                          passphrasePopup.visible = false;
                                      }
                                  }
                  
                  Axel SpoerlA 1 Reply Last reply
                  0
                  • K Kuzma30

                    @Axel-Spoerl
                    But this code works in QML 6.6 (Set button for enter password for SSID)

                                    QtButton{
                                        id: setButton
                                        text: qsTr("SET")
                                        height: GUIParam.dialogButtonSize
                                        onClicked: {
                                            if (showSsid) {
                                                NetworkSettingsManager.connectBySsid(ssidField.text, passField.text)
                                                showSsid = false
                                            } else {
                                                NetworkSettingsManager.userAgent.setPassphrase(passField.text)
                                            }
                                            passphrasePopup.visible = false;
                                        }
                                    }
                    
                    Axel SpoerlA Offline
                    Axel SpoerlA Offline
                    Axel Spoerl
                    Moderators
                    wrote on last edited by
                    #10

                    @Kuzma30
                    Can you post a screenshot of what it does, when it runs?

                    Software Engineer
                    The Qt Company, Oslo

                    K 1 Reply Last reply
                    0
                    • Axel SpoerlA Axel Spoerl

                      @Kuzma30
                      Can you post a screenshot of what it does, when it runs?

                      K Offline
                      K Offline
                      Kuzma30
                      wrote on last edited by
                      #11

                      @Axel-Spoerl
                      img1.jpg img2.jpg img3.jpg img4.jpg

                      I make photo of procedure connecting to WiFi in my app. User can't access to system parameters.

                      1 Reply Last reply
                      0
                      • K Offline
                        K Offline
                        Kuzma30
                        wrote on last edited by
                        #12

                        I am trying auto connect to wifi when main window loaded from ssid andd pass

                            Component.onCompleted: {
                                console.log("Check WiFi param")
                                var ssid = param.getParameterValue("WIFI_SSID")
                        
                                if (ssid !== "none") {
                                    console.log("Power On WiFi")
                                    for (var i = 0; NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i) !== null; i++) {
                                        var wifiInterface = NetworkSettingsManager.interface(NetworkSettingsType.Wifi, 0);
                                        wifiInterface.powered = true;
                                        pauseWiFi.start()
                                        console.log("power on")
                                    }
                                    NetworkSettingsManager.interfacesChanged();
                                    wifiSwitchTimer.start();
                                }
                            }
                            Timer {
                                id: pauseWiFi
                                interval: 1000
                                running: false
                            }
                            Timer {
                                id: wifiSwitchTimer
                                interval: 5000
                                running: false
                                onTriggered: {
                                    var ssid = param.getParameterValue("WIFI_SSID")
                        
                                    var pass = param.getParameterValue("WIFI_PASSWORD")
                        
                                    console.log("Connecting to WiFi " + ssid)
                                    NetworkSettingsManager.connectBySsid(ssid, pass)
                                }
                            }
                        

                        But I get error

                        Tried to scan while not powered
                        
                        K 1 Reply Last reply
                        0
                        • K Kuzma30

                          I am trying auto connect to wifi when main window loaded from ssid andd pass

                              Component.onCompleted: {
                                  console.log("Check WiFi param")
                                  var ssid = param.getParameterValue("WIFI_SSID")
                          
                                  if (ssid !== "none") {
                                      console.log("Power On WiFi")
                                      for (var i = 0; NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i) !== null; i++) {
                                          var wifiInterface = NetworkSettingsManager.interface(NetworkSettingsType.Wifi, 0);
                                          wifiInterface.powered = true;
                                          pauseWiFi.start()
                                          console.log("power on")
                                      }
                                      NetworkSettingsManager.interfacesChanged();
                                      wifiSwitchTimer.start();
                                  }
                              }
                              Timer {
                                  id: pauseWiFi
                                  interval: 1000
                                  running: false
                              }
                              Timer {
                                  id: wifiSwitchTimer
                                  interval: 5000
                                  running: false
                                  onTriggered: {
                                      var ssid = param.getParameterValue("WIFI_SSID")
                          
                                      var pass = param.getParameterValue("WIFI_PASSWORD")
                          
                                      console.log("Connecting to WiFi " + ssid)
                                      NetworkSettingsManager.connectBySsid(ssid, pass)
                                  }
                              }
                          

                          But I get error

                          Tried to scan while not powered
                          
                          K Offline
                          K Offline
                          Kuzma30
                          wrote on last edited by
                          #13

                          Updated code. More progress.

                              Component.onCompleted: {
                                  NetworkSettingsManager.interfacesChanged()
                                  pauseWiFi.start()
                              }
                              Timer {
                                  id: pauseWiFi
                                  interval: 3000
                                  running: false
                                  onTriggered: {
                                      NetworkSettingsManager.services.type = NetworkSettingsType.Wifi;
                                      console.log("Check WiFi param")
                                      var ssid = param.getParameterValue("WIFI_SSID")
                          
                                      if (ssid !== "none") {
                                          console.log("Power On WiFi")
                                          //sc.setWiFiOn()
                          
                                          for (var i = 0; NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i) !== null; i++) {
                                              console.log("i="+i)
                                              var wifiInterface = NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i);
                                              wifiInterface.powered = true;
                          
                                              console.log("power on")
                                          }
                          
                                      }
                                      wifiSwitchTimer.start();
                                  }
                              }
                              Timer {
                                  id: wifiSwitchTimer
                                  interval: 5000
                                  running: false
                                  onTriggered: {
                                      var ssid = param.getParameterValue("WIFI_SSID")
                          
                                      var pass = param.getParameterValue("WIFI_PASSWORD")
                          
                                      console.log("Connecting to WiFi  \""+ ssid + "\"")
                          
                                      NetworkSettingsManager.userAgent.setPassphrase(pass)
                                      NetworkSettingsManager.connectBySsid(ssid, pass)
                                      NetworkSettingsManager.interfacesChanged()
                                  }
                              }
                          

                          Now program poweron WiFi, NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i) != null.
                          But result of connectBySsid() with correct ssid and pass - powered on WiFi but without connection.
                          I try code with and without NetworkSettingsManager.interfacesChanged() in the end. Same results.

                          K 1 Reply Last reply
                          0
                          • K Kuzma30

                            Updated code. More progress.

                                Component.onCompleted: {
                                    NetworkSettingsManager.interfacesChanged()
                                    pauseWiFi.start()
                                }
                                Timer {
                                    id: pauseWiFi
                                    interval: 3000
                                    running: false
                                    onTriggered: {
                                        NetworkSettingsManager.services.type = NetworkSettingsType.Wifi;
                                        console.log("Check WiFi param")
                                        var ssid = param.getParameterValue("WIFI_SSID")
                            
                                        if (ssid !== "none") {
                                            console.log("Power On WiFi")
                                            //sc.setWiFiOn()
                            
                                            for (var i = 0; NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i) !== null; i++) {
                                                console.log("i="+i)
                                                var wifiInterface = NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i);
                                                wifiInterface.powered = true;
                            
                                                console.log("power on")
                                            }
                            
                                        }
                                        wifiSwitchTimer.start();
                                    }
                                }
                                Timer {
                                    id: wifiSwitchTimer
                                    interval: 5000
                                    running: false
                                    onTriggered: {
                                        var ssid = param.getParameterValue("WIFI_SSID")
                            
                                        var pass = param.getParameterValue("WIFI_PASSWORD")
                            
                                        console.log("Connecting to WiFi  \""+ ssid + "\"")
                            
                                        NetworkSettingsManager.userAgent.setPassphrase(pass)
                                        NetworkSettingsManager.connectBySsid(ssid, pass)
                                        NetworkSettingsManager.interfacesChanged()
                                    }
                                }
                            

                            Now program poweron WiFi, NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i) != null.
                            But result of connectBySsid() with correct ssid and pass - powered on WiFi but without connection.
                            I try code with and without NetworkSettingsManager.interfacesChanged() in the end. Same results.

                            K Offline
                            K Offline
                            Kuzma30
                            wrote on last edited by
                            #14

                            Final code, that working for me

                               Component.onCompleted: {
                                    NetworkSettingsManager.interfacesChanged()
                                    pauseWiFi.start()
                                }
                                Timer {
                                    id: pauseWiFi
                                    interval: 3000
                                    running: false
                                    onTriggered: {
                                        NetworkSettingsManager.services.type = NetworkSettingsType.Wifi;
                                        console.log("Check WiFi param")
                                        var ssid = param.getParameterValue("WIFI_SSID")
                            
                                        if (ssid !== "none") {
                                            console.log("Power On WiFi")
                                            for (var i = 0; NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i) !== null; i++) {
                                                console.log("i="+i)
                                                var wifiInterface = NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i);
                                                wifiInterface.powered = true;
                            
                                                console.log("power on")
                                            }
                            
                                        }
                                        wifiSwitchTimer.start();
                                    }
                                }
                                property var connectingService: null
                                Timer {
                                    id: wifiSwitchTimer
                                    interval: 5000
                                    running: false
                                    onTriggered: {
                                        var ssid = param.getParameterValue("WIFI_SSID")
                            
                                        var pass = param.getParameterValue("WIFI_PASSWORD")
                            
                                        console.log("Connecting to WiFi  \""+ ssid + "\"")
                            
                                        for (var index = 0; index < 10; index++) {
                                            if (NetworkSettingsManager.services.itemFromRow(index).name===ssid){
                                                console.log("Found SSID at index = "+ index)
                                                root.connectingService = NetworkSettingsManager.services.itemFromRow(index)
                                            }
                                        }
                                        root.connectingService.connectService();
                                        NetworkSettingsManager.userAgent.setPassphrase(pass)
                                        vpntimer.start();
                                    }
                            
                                }
                                    Timer{
                                        id: vpntimer
                                        interval: 5000
                                        running: false
                                         onTriggered: {
                                             console.log("Start VPN")
                                             processWrapper.executeCommand("systemctl start openvpn-client@client")
                                         }
                                    }
                            
                            
                            1 Reply Last reply
                            0

                            • Login

                            • Login or register to search.
                            • First post
                              Last post
                            0
                            • Categories
                            • Recent
                            • Tags
                            • Popular
                            • Users
                            • Groups
                            • Search
                            • Get Qt Extensions
                            • Unsolved