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
