I am new to connman and I'm trying to get WiFi working.  I previously had
it somewhat working but then realized the connman README suggests enabling
some WPA supplicant compiler options.  After doing so I am now seeing
problems when I attempt to power on WiFi.  When I enable the power for the
WiFi device it fails to create the interface within the supplicant.  I
think this then causes some problems in connman because the parts of the
code have the interface marked as powered, yet if you attempt to scan it
returns there is no power (error -ENOLINK or -67).  So it seems some of the
subsystems (Technology API) think the device is powered.  Then lower level
structures indicate it is off (driver->powered, in the scan routines).

My questions are:
1. Why will WiFi no longer power on/create the interface in the
supplicant?  What am I doing wrong?
2. Does this failure uncover some inconsistencies in tracking the power
state in connman?

More info:
1.  My connman build is from commit:
3a92f7ef6945a8a24ebaf4bc191fdf51ea33d7b9<http://git.kernel.org/cgit/network/connman/connman.git/commit/?id=3a92f7ef6945a8a24ebaf4bc191fdf51ea33d7b9>(9/30/2013)
2. My HW is a Boundary Devices iMX nitrogen6x board with a TI-wl1271 WiFi
chip.
3. I have verified WiFi does work on this HW using wpa_cli commands without
the connman.
4. Previously worked inconsistently with 1.17 of the connman--with
different unknown problems.  So I thought I'd update connman to a more
recent build.  This also gave problems so I rebuilt wpa_supplicant with the
new compiler options, and here I am.
5. My system does not have the nl80211 driver installed/built.  It
previously worked with wext support.
6. When I power on the WiFi device I do get the DBus signal indicating the
"powered" property changed to true.
7. I start the connmand using: connmand -d -n -W wext &

Any help would be MUCH appreciated.

Tysen

So connmand traces: <NOTE: may have a few of my own traces mixed in>

<Here I am trying to power on WiFi through the technology interface>
connmand[1442]: src/dnsproxy.c:udp_listener_event() Received 42 bytes (id
0xd695)
connmand[1442]: src/dnsproxy.c:parse_request() id 0xd695 qr 0 opcode 0
qdcount 1 arcount 0
connmand[1442]: src/dnsproxy.c:parse_request() query
9.1.168.192.in-addr.arpa.
connmand[1442]: src/dnsproxy.c:resolv() server 192.168.1.1 enabled 1
connmand[1442]: src/dnsproxy.c:forward_dns_reply() Received 119 bytes (id
0xb872)
connmand[1442]: src/dnsproxy.c:forward_dns_reply() req 0xb09f0 dstid 0xb872
altid 0x04a5 rcode 3
connmand[1442]: src/dnsproxy.c:cache_update() offset 0 hdr 0x7eaf3960 msg
0x7eaf3960 rcode 3
connmand[1442]: src/dnsproxy.c:forward_dns_reply() proto 17 sent 119 bytes
to 8
connmand[1442]: src/manager.c:register_agent() conn 0xa65b0
connmand[1442]: src/agent.c:connman_agent_register() sender :1.3 path
/com/service/TestConnManAgent
connmand[1442]: src/agent.c:agent_ref_debug() 0xb2d50 ref 1 by
src/agent.c:308:agent_create()
connmand[1442]: src/agent.c:connman_agent_register() agent :1.3
connmand[1442]: src/agent.c:set_default_agent() default agent set to :1.3
/com/service/TestConnManAgent
connmand[1442]: src/manager.c:get_technologies()
connmand[1442]: src/dnsproxy.c:udp_listener_event() Received 42 bytes (id
0xdb63)
connmand[1442]: src/dnsproxy.c:parse_request() id 0xdb63 qr 0 opcode 0
qdcount 1 arcount 0
connmand[1442]: src/dnsproxy.c:parse_request() query
9.1.168.192.in-addr.arpa.
connmand[1442]: src/dnsproxy.c:resolv() server 192.168.1.1 enabled 1
connmand[1442]: src/dnsproxy.c:forward_dns_reply() Received 119 bytes (id
0xbf57)
connmand[1442]: src/dnsproxy.c:forward_dns_reply() req 0xb09f0 dstid 0xbf57
altid 0x5272 rcode 3
connmand[1442]: src/dnsproxy.c:cache_update() offset 0 hdr 0x7eaf3960 msg
0x7eaf3960 rcode 3
connmand[1442]: src/dnsproxy.c:forward_dns_reply() proto 17 sent 119 bytes
to 8
connmand[1442]: src/manager.c:get_technologies()
connmand[1442]: src/technology.c:set_property() conn 0xa65b0
connmand[1442]: src/technology.c:set_property() property Powered
connmand[1442]: src/technology.c:technology_enable() technology 0xb3d60
enable
connmand[1442]: src/rfkill.c:__connman_rfkill_block() type 3 block 0
connmand[1442]: src/device.c:__connman_device_enable() device 0xb1d20
connmand[1442]: src/device.c:connman_device_get_string() device 0xb1d20 key
Interface
connmand[1442]: plugins/wifi.c:wifi_enable() device 0xb1d20 0xa6b28
nl80211,wext
connmand[1442]: gsupplicant/supplicant.c:g_supplicant_interface_create()
ifname wlan0
connmand[1442]: gsupplicant/supplicant.c:interface_get_params()
connmand[1442]: src/technology.c:technology_save() technology 0xb3d60 type
3 name WiFi
connmand[1442]: src/storage.c:storage_load() Loading
/var/lib/connman/settings
connmand[1442]: src/rfkill.c:rfkill_process()
connmand[1442]: src/rfkill.c:rfkill_process() idx 0 type 1 op 2 soft 0 hard
0
connmand[1442]: src/technology.c:__connman_technology_update_rfkill() index
0 soft 0 hard 0
connmand[1442]: src/technology.c:technology_find() type 3
connmand[1442]: src/technology.c:technology_apply_rfkill_change()
technology 0xb3d60 --> 0/0 vs 1/0
connmand[1442]: src/device.c:__connman_device_enable() device 0xb1d20
connmand[1442]: src/technology.c:__connman_technology_update_rfkill() WiFi
is not softblocked
connmand[1442]: gsupplicant/supplicant.c:interface_get_result()
connmand[1442]: gsupplicant/supplicant.c:interface_get_result()
interface_get_result: error=fi.w1.wpa_supplicant1.InterfaceUnknown
connmand[1442]: gsupplicant/supplicant.c:interface_get_result() Interface
not created yet
connmand[1442]: gsupplicant/supplicant.c:interface_get_result() Creating
interface
connmand[1442]: gsupplicant/supplicant.c:interface_create_params()
connmand[1442]: gsupplicant/supplicant.c:interface_create_result()

** (connmand:1442): WARNING **: error fi.w1.wpa_supplicant1.UnknownError
connmand[1442]: plugins/wifi.c:interface_create_callback() result -5 ifname
(null), wifi 0xa6b28
connmand[1442]: src/device.c:device_pending_reset() device 0xb1d20


<Here is when I try to scan>
connmand[1442]: src/technology.c:scan() technology 0xb3d60 request from :1.3
connmand[1442]: src/device.c:__connman_device_request_scan() device 0xb1d20
err -67
connmand[1442]: src/technology.c:reply_scan_pending() technology 0xb3d60
err -67
connmand[1442]: src/technology.c:reply_scan_pending() reply to :1.3


< Here is DBus monitor traces>
method call sender=:1.3 -> dest=net.connman serial=10 path=/;
interface=net.connman.Manager; member=GetTechnologies
method return sender=:1.1 -> dest=:1.3 reply_serial=10
   array [
      struct {
         object path "/net/connman/technology/ethernet"
         array [
            dict entry(
               string "Name"
               variant                   string "Wired"
            )
            dict entry(
               string "Type"
               variant                   string "ethernet"
            )
            dict entry(
               string "Powered"
               variant                   boolean true
            )
            dict entry(
               string "Connected"
               variant                   boolean true
            )
            dict entry(
               string "Tethering"
               variant                   boolean false
            )
         ]
      }
      struct {
         object path "/net/connman/technology/bluetooth"
         array [
            dict entry(
               string "Name"
               variant                   string "Bluetooth"
            )
            dict entry(
               string "Type"
               variant                   string "bluetooth"
            )
            dict entry(
               string "Powered"
               variant                   boolean false
            )
            dict entry(
               string "Connected"
               variant                   boolean false
            )
            dict entry(
               string "Tethering"
               variant                   boolean false
            )
         ]
      }
      struct {
         object path "/net/connman/technology/wifi"
         array [
            dict entry(
               string "Name"
               variant                   string "WiFi"
            )
            dict entry(
               string "Type"
               variant                   string "wifi"
            )
            dict entry(
               string "Powered"
               variant                   boolean false
            )
            dict entry(
               string "Connected"
               variant                   boolean false
            )
            dict entry(
               string "Tethering"
               variant                   boolean false
            )
         ]
      }
   ]
method call sender=:1.3 -> dest=net.connman serial=11
path=/net/connman/technology/wifi;
interface=org.freedesktop.DBus.Introspectable; member=Introspect
method return sender=:1.1 -> dest=:1.3 reply_serial=11
   string "<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object
Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd";>
<node><interface name="org.freedesktop.DBus.Introspectable"><method
name="Introspect"><arg name="xml" type="s" direction="out"/>
</method></interface><interface name="net.connman.Technology"><method
name="GetProperties"><arg name="properties" type="a{sv}" direction="out"/>
<annotation name="org.freedesktop.DBus.Deprecated"
value="true"/></method><method name="SetProperty"><arg name="name" type="s"
direction="in"/>
<arg name="value" type="v" direction="in"/>
</method><method name="Scan"></method><signal name="PropertyChanged"><arg
name="name" type="s"/>
<arg name="value" type="v"/>
</signal>
</interface></node>"
method call sender=:1.3 -> dest=org.freedesktop.DBus serial=12
path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string
"type='signal',member='PropertyChanged',interface='net.connman.Technology',path='/net/connman/technology/wifi',eavesdrop='false'"
method call sender=:1.3 -> dest=net.connman serial=13
path=/net/connman/technology/wifi; interface=net.connman.Technology;
member=SetProperty
   string "Powered"
   variant       boolean true
method call sender=:1.1 -> dest=fi.w1.wpa_supplicant1 serial=80
path=/fi/w1/wpa_supplicant1; interface=fi.w1.wpa_supplicant1;
member=GetInterface
   string "wlan0"
method return sender=:1.1 -> dest=:1.3 reply_serial=13
signal sender=:1.1 -> dest=(null destination) serial=82
path=/net/connman/technology/wifi; interface=net.connman.Technology;
member=PropertyChanged
   string "Powered"
   variant       boolean true
error sender=:1.2 -> dest=:1.1
error_name=fi.w1.wpa_supplicant1.InterfaceUnknown reply_serial=80
   string "wpa_supplicant knows nothing about this interface."
method call sender=:1.1 -> dest=fi.w1.wpa_supplicant1 serial=83
path=/fi/w1/wpa_supplicant1; interface=fi.w1.wpa_supplicant1;
member=CreateInterface
   array [
      dict entry(
         string "Ifname"
         variant             string "wlan0"
      )
      dict entry(
         string "Driver"
         variant             string "nl80211,wext"
      )
   ]
error sender=:1.2 -> dest=:1.1
error_name=fi.w1.wpa_supplicant1.UnknownError reply_serial=83
   string "wpa_supplicant couldn't grab this interface."
method call sender=:1.3 -> dest=net.connman serial=14 path=/;
interface=net.connman.Manager; member=GetTechnologies
method return sender=:1.1 -> dest=:1.3 reply_serial=14
   array [
      struct {
         object path "/net/connman/technology/ethernet"
         array [
            dict entry(
               string "Name"
               variant                   string "Wired"
            )
            dict entry(
               string "Type"
               variant                   string "ethernet"
            )
            dict entry(
               string "Powered"
               variant                   boolean true
            )
            dict entry(
               string "Connected"
               variant                   boolean true
            )
            dict entry(
               string "Tethering"
               variant                   boolean false
            )
         ]
      }
      struct {
         object path "/net/connman/technology/bluetooth"
         array [
            dict entry(
               string "Name"
               variant                   string "Bluetooth"
            )
            dict entry(
               string "Type"
               variant                   string "bluetooth"
            )
            dict entry(
               string "Powered"
               variant                   boolean false
            )
            dict entry(
               string "Connected"
               variant                   boolean false
            )
            dict entry(
               string "Tethering"
               variant                   boolean false
            )
         ]
      }
      struct {
         object path "/net/connman/technology/wifi"
         array [
            dict entry(
               string "Name"
               variant                   string "WiFi"
            )
            dict entry(
               string "Type"
               variant                   string "wifi"
            )
            dict entry(
               string "Powered"
               variant                   boolean true
            )
            dict entry(
               string "Connected"
               variant                   boolean false
            )
            dict entry(
               string "Tethering"
               variant                   boolean false
            )
         ]
      }
   ]
method call sender=:1.3 -> dest=net.connman serial=15
path=/net/connman/technology/wifi;
interface=org.freedesktop.DBus.Introspectable; member=Introspect
method return sender=:1.1 -> dest=:1.3 reply_serial=15
   string "<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object
Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd";>
<node><interface name="org.freedesktop.DBus.Introspectable"><method
name="Introspect"><arg name="xml" type="s" direction="out"/>
</method></interface><interface name="net.connman.Technology"><method
name="GetProperties"><arg name="properties" type="a{sv}" direction="out"/>
<annotation name="org.freedesktop.DBus.Deprecated"
value="true"/></method><method name="SetProperty"><arg name="name" type="s"
direction="in"/>
<arg name="value" type="v" direction="in"/>
</method><method name="Scan"></method><signal name="PropertyChanged"><arg
name="name" type="s"/>
<arg name="value" type="v"/>
</signal>
</interface></node>"
method call sender=:1.3 -> dest=net.connman serial=16
path=/net/connman/technology/wifi; interface=net.connman.Technology;
member=Scan
error sender=:1.1 -> dest=:1.3 error_name=net.connman.Error.NoCarrier
reply_serial=16
   string "No carrier"
_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman

Reply via email to