Re: "A 'wireless' setting is required if no AP path was given."



On Mon, 2021-03-01 at 10:54 -0500, Steve Newcomb wrote:
I have 2 hosts that experience interruptions in their
NetworkManager-managed wifi connections.

In an attempt to force the hosts to restore their wifi connections
more promptly than they otherwise would, I have them running a cron
job called "keepWirelessAlive.py" every 3 minutes.  If wifi is
running, the job does nothing.  If not, it attempts to restore the
connection using nmcli:

nmcli device connect wlp3s0


`man nmcli` says about `nmcli device connect`:

           Connect the device. NetworkManager will try to find a suitable
           connection that will be activated. It will also consider
           connections that are not set to auto connect.

           If no compatible connection exists, a new profile with default
           settings will be created and activated. This differentiates nmcli
           connection up ifname "$DEVICE" from nmcli device connect "$DEVICE"

The case where nmcli finds a suitable existing profile and connects it
is clear. But if the SSID for that profile is not in range, no suitable
profile is found and NetworkManager is told to create a new profile. 

`nmcli device connect` does that by providing an incomplete profile,
that NetworkManager completes. However, `nmcli device connect` does not
work in that case, because you would at least need to specify the SSID.
Thus, creating a profile with `nmcli device connect` does not work.
Instead, it would work with `nmcli device connect wifi ssid ...`.

It sounds like you don't want to use `nmcli device connect`. Use `nmcli
connection up "$PROFILE"` or even `nmcli connection profile "$PROFIILE"
ifname "$IFACE"`.

If you really don't want to select the profile yourself, and let
NetworkManager choose one, maybe you need to first ensure that the Wi-
Fi scan list is up to date. That is, issue a `nmcli device wifi rescan`
before `nmcli device connect`.

But anyway, sometimes connecting to a Wi-Fi may fail. For example, when
the SSID cannot be found. It may simply happen sometimes. Ignore the
error and retry after a while.

If you want to understand why any of that happens, enable level=TRACE
log ([1]) in NetworkManager and debug logging for supplicant.

[1] https://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/contrib/fedora/rpm/NetworkManager.conf#n28


Also, I would try to solve those interruptions, instead of adding a
cron job like this... again, the (trace/debug) logfile is the way to
go.


best,
Thomas


(see below).  The command works fine in tests, but when such an attempt
is made automatically by the cron job, it fails, and NetworkManager's
log
messages explain that I've failed to specify a 'wireless' setting (see
below).  Alas, I can't find a 'wireless' setting anywhere in
NetworkManager's documentation, so I suspect the log message could be
clearer.

Everything is OK:

Mar  1 00:18:01 carp CRON[2615]: (root) CMD 
(/usr/local/ch-tools3/keepWirelessAlive.py)
Mar  1 00:21:01 carp CRON[2740]: (root) CMD 
(/usr/local/ch-tools3/keepWirelessAlive.py)

But then the connection is lost:

Mar  1 00:23:36 carp NetworkManager[657]: <warn> [1614576216.8719] 
sup-iface[0x557adf36a8d0,wlp3s0]: connection disconnected (reason -4)
Mar  1 00:23:36 carp NetworkManager[657]: <info> [1614576216.8993] 
device (wlp3s0): supplicant interface state: completed -> disconnected
Mar  1 00:23:36 carp NetworkManager[657]: <info> [1614576216.9775] 
device (wlp3s0): supplicant interface state: disconnected -> scanning
Mar  1 00:23:40 carp NetworkManager[657]: <info> [1614576220.2651] 
device (wlp3s0): supplicant interface state: scanning -> authenticating
Mar  1 00:23:40 carp NetworkManager[657]: <info> [1614576220.3809] 
device (wlp3s0): supplicant interface state: authenticating ->
disconnected
Mar  1 00:23:40 carp NetworkManager[657]: <info> [1614576220.8807] 
device (wlp3s0): supplicant interface state: disconnected -> scanning
Mar  1 00:23:52 carp NetworkManager[657]: <warn> [1614576232.5545] 
device (wlp3s0): link timed out.
Mar  1 00:23:52 carp NetworkManager[657]: <info> [1614576232.5567] 
device (wlp3s0): state change: activated -> failed (reason 
'ssid-not-found', sys-iface-state: 'managed')
Mar  1 00:23:52 carp NetworkManager[657]: <info> [1614576232.5667] 
manager: NetworkManager state is now DISCONNECTED
Mar  1 00:23:53 carp NetworkManager[657]: <warn> [1614576233.5961] 
device (wlp3s0): Activation: failed for connection 'XXXXXXXXX'
Mar  1 00:23:53 carp NetworkManager[657]: <info> [1614576233.5997] 
device (wlp3s0): state change: failed -> disconnected (reason 'none',
sys-iface-state: 'managed')
Mar  1 00:23:53 carp dbus-daemon[655]: [system] Activating via systemd:
service name='org.freedesktop.nm_dispatcher' 
unit='dbus-org.freedesktop.nm-dispatcher.service' requested by ':1.13' 
(uid=0 pid=657 comm="/usr/sbin/NetworkManager --no-daemon ")
Mar  1 00:23:53 carp NetworkManager[657]: <info> [1614576233.6407]
dhcp4 
(wlp3s0): canceled DHCP transaction, DHCP client pid 7824
Mar  1 00:23:53 carp NetworkManager[657]: <info> [1614576233.6407]
dhcp4 
(wlp3s0): state changed bound -> done
Mar  1 00:23:53 carp NetworkManager[657]: <info> [1614576233.6571] 
device (wlp3s0): set-hw-addr: set MAC address to 5E:75:AF:F6:6C:E0 
(scanning)
Mar  1 00:23:54 carp NetworkManager[657]: <info> [1614576234.0453] 
dns-mgr: Removing DNS information from /sbin/resolvconf
Mar  1 00:23:54 carp NetworkManager[657]: <info> [1614576234.6754] 
device (wlp3s0): supplicant interface state: scanning -> disabled
Mar  1 00:23:54 carp NetworkManager[657]: <info> [1614576234.6755] 
device (wlp3s0): supplicant interface state: disabled -> inactive

So when the keepWirelessAlive.py cron job tries (repeatedly) to bring
the interface back online:

Mar  1 00:24:01 carp CRON[3023]: (root) CMD 
(/usr/local/ch-tools3/keepWirelessAlive.py)
Mar  1 00:24:01 carp NetworkManager[657]: <info> [1614576241.2585] 
agent-manager: req[0x557adf45f810, :1.1154236/nmcli-connect/0]: agent
registered
Mar  1 00:24:01 carp NetworkManager[657]: <info> [1614576241.2871] 
audit: op="connection-add-activate" pid=3053 uid=0 result="fail" 
reason="A 'wireless' setting is required if no AP path was given."
Mar  1 00:24:01 carp /keepWirelessAlive.py: nmcli device connect wlp3s0
4  Error: Failed to add/activate new connection: A 'wireless' setting
is 
required if no AP path was given.
Mar  1 00:24:04 carp systemd[1]: NetworkManager-dispatcher.service: 
Succeeded.
Mar  1 00:27:01 carp CRON[4852]: (root) CMD 
(/usr/local/ch-tools3/keepWirelessAlive.py)
Mar  1 00:27:02 carp NetworkManager[657]: <info> [1614576422.0156] 
agent-manager: req[0x557adf45f8a0, :1.1154256/nmcli-connect/0]: agent
registered
Mar  1 00:27:02 carp NetworkManager[657]: <info> [1614576422.0184] 
audit: op="connection-add-activate" pid=4868 uid=0 result="fail" 
reason="A 'wireless' setting is required if no AP path was given."
Mar  1 00:27:02 carp /keepWirelessAlive.py: nmcli device connect wlp3s0
4  Error: Failed to add/activate new connection: A 'wireless' setting
is 
required if no AP path was given.
Mar  1 00:29:35 carp NetworkManager[657]: <info> [1614576575.6162] 
device (wlp3s0): set-hw-addr: set MAC address to 9E:33:C8:6D:BC:33 
(scanning)
Mar  1 00:29:36 carp NetworkManager[657]: <info> [1614576576.0081] 
device (wlp3s0): supplicant interface state: inactive -> disabled
Mar  1 00:29:36 carp NetworkManager[657]: <info> [1614576576.0163] 
device (wlp3s0): supplicant interface state: disabled -> inactive
Mar  1 00:30:01 carp CRON[5036]: (root) CMD 
(/usr/local/ch-tools3/keepWirelessAlive.py)

...etc.

_______________________________________________
networkmanager-list mailing list
networkmanager-list gnome org
https://mail.gnome.org/mailman/listinfo/networkmanager-list

Attachment: signature.asc
Description: This is a digitally signed message part



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]