Bookmark:
Configuration of the Network Manager via DBus: how to set the ad hoc mode
If using iwconfig
to "activate the wifi via the command line" then it can make the mode Ad-Hoc
.
Quoting from man iwconfig
Example :
iwconfig eth0 mode Managed <-- often wlan0 not the0
iwconfig eth0 mode Ad-Hoc Freudian ... eth0
Generally the more low level and deeper one goes, the more manually labour intensive the effort becomes, defeating the whole concept and rationale of automation and computers.
However, to use DBus the "easiest" way might be with D-Feet
's GUI or qdbus
as described here and used below.. Note that argument types are limited in command line input to methods of qdbus
and so the matching gdbus
command or D-Feet
maybe needed.
To get the correct argument values for the required methods, observe the influence of iwconfig
, as above, or a working GUI Network Manager with:
dbus-monitor --system "interface='org.freedesktop.NetworkManager'"
while changing the mode paramemter between Ad Hoc and Infrastructure. This will provide the necessary clues for configuration directly on the DBus.
Thus,
qdbus --system --literal org.freedesktop.NetworkManager
lists
/
/org
/org/freedesktop
/org/freedesktop/NetworkManager
/org/freedesktop/NetworkManager/AccessPoint
/org/freedesktop/NetworkManager/AccessPoint/1385
...
/org/freedesktop/NetworkManager/ActiveConnection
/org/freedesktop/NetworkManager/ActiveConnection/58
/org/freedesktop/NetworkManager/AgentManager
/org/freedesktop/NetworkManager/DHCP4Config
/org/freedesktop/NetworkManager/DHCP4Config/45
/org/freedesktop/NetworkManager/Devices
/org/freedesktop/NetworkManager/Devices/0
/org/freedesktop/NetworkManager/Devices/1 <- my wireless device
/org/freedesktop/NetworkManager/IP4Config
/org/freedesktop/NetworkManager/IP4Config/44
/org/freedesktop/NetworkManager/Settings
/org/freedesktop/NetworkManager/Settings/0
/org/freedesktop/NetworkManager/Settings/1
...
/org/freedesktop/NetworkManager/Settings/5
/org/freedesktop/NetworkManager/Settings/6
and
qdbus --system --literal org.freedesktop.NetworkManager \
/org/freedesktop/NetworkManager/Devices/1 \
org.freedesktop.DBus.Properties.GetAll \
org.freedesktop.NetworkManager.Device.Wireless \
| sed -e 's/, "/,\n"/g'
gives the wireless properties with mode in bold:
[Argument: a{sv} {"HwAddress" = [Variant(QString): "74:F0:6D:4B:8E:9B"],
"PermHwAddress" = [Variant(QString): "74:F0:6D:4B:8E:9B"],
"Mode" = [Variant(uint): 2],
"Bitrate" = [Variant(uint): 28900],
"ActiveAccessPoint" = [Variant: [ObjectPath: /org/freedesktop/NetworkManager/AccessPoint/1395]],
"WirelessCapabilities" = [Variant(uint): 127]}]
The pertinent methods in bold of
qdbus --system --literal org.freedesktop.NetworkManager /org/freedesktop/NetworkManager
are
method QString org.freedesktop.DBus.Introspectable.Introspect()
method QVariantMap org.freedesktop.DBus.Properties.GetAll(QString interface)
method QDBusVariant org.freedesktop.DBus.Properties.Get(QString interface, QString propname)
method void org.freedesktop.DBus.Properties.Set(QString interface, QString propname, QDBusVariant value)
method QDBusObjectPath org.freedesktop.NetworkManager.ActivateConnection(QDBusObjectPath connection, QDBusObjectPath device, QDBusObjectPath specific_object)
method QDBusObjectPath org.freedesktop.NetworkManager.AddAndActivateConnection(QDBusRawType::a{sa{sv}} connection, QDBusObjectPath device, QDBusObjectPath specific_object, QDBusObjectPath& active_connection)
method void org.freedesktop.NetworkManager.DeactivateConnection(QDBusObjectPath active_connection)
method void org.freedesktop.NetworkManager.Enable(bool enable)
method QDBusObjectPath org.freedesktop.NetworkManager.GetDeviceByIpIface(QString iface)
method QList org.freedesktop.NetworkManager.GetDevices()
method QDBusRawType::a{ss} org.freedesktop.NetworkManager.GetPermissions()
method void org.freedesktop.NetworkManager.SetLogging(QString level, QString domains)
method void org.freedesktop.NetworkManager.Sleep(bool sleep)
method uint org.freedesktop.NetworkManager.state()
property read bool org.freedesktop.NetworkManager.NetworkingEnabled
property readwrite bool org.freedesktop.NetworkManager.WimaxEnabled
property read bool org.freedesktop.NetworkManager.WimaxHardwareEnabled
property readwrite bool org.freedesktop.NetworkManager.WirelessEnabled
property read bool org.freedesktop.NetworkManager.WirelessHardwareEnabled
property readwrite bool org.freedesktop.NetworkManager.WwanEnabled
property read bool org.freedesktop.NetworkManager.WwanHardwareEnabled
property read QList org.freedesktop.NetworkManager.ActiveConnections
property read QString org.freedesktop.NetworkManager.Version
property read uint org.freedesktop.NetworkManager.State
signal void org.freedesktop.NetworkManager.CheckPermissions()
signal void org.freedesktop.NetworkManager.DeviceAdded(QDBusObjectPath)
signal void org.freedesktop.NetworkManager.DeviceRemoved(QDBusObjectPath)
signal void org.freedesktop.NetworkManager.PropertiesChanged(QVariantMap)
signal void org.freedesktop.NetworkManager.StateChanged(uint)
and of
qdbus --system --literal org.freedesktop.NetworkManager /org/freedesktop/NetworkManager/Devices/1
are
method QString org.freedesktop.DBus.Introspectable.Introspect()
method QVariantMap org.freedesktop.DBus.Properties.GetAll(QString interface)
method QDBusVariant org.freedesktop.DBus.Properties.Get(QString interface, QString propname)
method void org.freedesktop.DBus.Properties.Set(QString interface, QString propname, QDBusVariant value)
method void org.freedesktop.NetworkManager.Device.Disconnect()
method QList<QDBusObjectPath> org.freedesktop.NetworkManager.Device.Wireless.GetAccessPoints()
property read bool org.freedesktop.NetworkManager.Device.FirmwareMissing
property read bool org.freedesktop.NetworkManager.Device.Managed
property read QDBusObjectPath org.freedesktop.NetworkManager.Device.ActiveConnection
property read QDBusObjectPath org.freedesktop.NetworkManager.Device.Dhcp4Config
property read QDBusObjectPath org.freedesktop.NetworkManager.Device.Dhcp6Config
property read QDBusObjectPath org.freedesktop.NetworkManager.Device.Ip4Config
property read QDBusObjectPath org.freedesktop.NetworkManager.Device.Ip6Config
property read QDBusRawType::(uu) org.freedesktop.NetworkManager.Device.StateReason
property read QString org.freedesktop.NetworkManager.Device.Driver
property read QString org.freedesktop.NetworkManager.Device.Interface
property read QString org.freedesktop.NetworkManager.Device.IpInterface
property read QString org.freedesktop.NetworkManager.Device.Udi
property read uint org.freedesktop.NetworkManager.Device.Capabilities
property read uint org.freedesktop.NetworkManager.Device.DeviceType
property read uint org.freedesktop.NetworkManager.Device.Ip4Address
property read uint org.freedesktop.NetworkManager.Device.State
property read QDBusObjectPath org.freedesktop.NetworkManager.Device.Wireless.ActiveAccessPoint
property read QString org.freedesktop.NetworkManager.Device.Wireless.HwAddress
property read QString org.freedesktop.NetworkManager.Device.Wireless.PermHwAddress
property read uint org.freedesktop.NetworkManager.Device.Wireless.Bitrate
property read uint org.freedesktop.NetworkManager.Device.Wireless.Mode
property read uint org.freedesktop.NetworkManager.Device.Wireless.WirelessCapabilities
signal void org.freedesktop.NetworkManager.Device.StateChanged(uint, uint, uint)
signal void org.freedesktop.NetworkManager.Device.Wireless.AccessPointAdded(QDBusObjectPath)
signal void org.freedesktop.NetworkManager.Device.Wireless.AccessPointRemoved(QDBusObjectPath)
signal void org.freedesktop.NetworkManager.Device.Wireless.PropertiesChanged(QVariantMap)