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 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