connman.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* How to create connman_1.40.bbappend to enable and to build connman with iwd?
@ 2021-11-25 23:03 Jupiter
  2021-11-26 16:30 ` Daniel Wagner
  0 siblings, 1 reply; 10+ messages in thread
From: Jupiter @ 2021-11-25 23:03 UTC (permalink / raw)
  To: yocto; +Cc: comman, Daniel Wagner, Armin Kuster

Hi,

Please correct me, but it seems to me the connman is moving to a
direction to ditch out wpa_supplicant and to use iwd, but the Honister
still configure connman with wpa_supplicant by default, appreciate
your advice:

- Is connman with iwd stable enough?

- How can I create a connman_1.40.bbappend  to replace wpa_supplicant
by iwd configure?

- Where are the documents for configuring and building connman with
iwd? Where is the operational guidance to run connman with iwd? Can I
use the same connman dbus APIs or are there any dbus API changes to
run connman with iwd?

My apology for FAQs.

Thank you very much.

Kind regards,

- JH

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: How to create connman_1.40.bbappend to enable and to build connman with iwd?
  2021-11-25 23:03 How to create connman_1.40.bbappend to enable and to build connman with iwd? Jupiter
@ 2021-11-26 16:30 ` Daniel Wagner
  2021-11-26 21:49   ` Jupiter
  0 siblings, 1 reply; 10+ messages in thread
From: Daniel Wagner @ 2021-11-26 16:30 UTC (permalink / raw)
  To: Jupiter; +Cc: yocto, comman, Armin Kuster

Hi,

On Fri, Nov 26, 2021 at 10:03:10AM +1100, Jupiter wrote:
> Please correct me, but it seems to me the connman is moving to a
> direction to ditch out wpa_supplicant and to use iwd, but the Honister
> still configure connman with wpa_supplicant by default, appreciate
> your advice:

Indeed, I recommend to use iwd instead of wpa_supplicant. There is no
active development happening in ConnMan on the wpa_supplicant
plugin. That means the wpa_supplicant plugin might work perfectly fine
for your use case and there is no need to use iwd. But don't expect any
big help if there are problems with wpa_supplicant.

> - Is connman with iwd stable enough?

Hard to answer as there is not definition of 'stable enough'. The best
advice is to test your use cases and figure out if it fits your
requirements.

> - How can I create a connman_1.40.bbappend  to replace wpa_supplicant
> by iwd configure?

This is a question for the Yocto mailing(s) list.

> - Where are the documents for configuring and building connman with
> iwd?

There is none, but there is not much you need to do. During the
configure step you do something like

./configure --disble-wifi --enable-iwd

That's all.

> Where is the operational guidance to run connman with iwd? Can I
> use the same connman dbus APIs or are there any dbus API changes to
> run connman with iwd?

There is no change in ConnMan's D-Bus APIs. Depending on your use cases
you might be able to remove the ConnMan from your design and only use
iwd. This is the case when you are only interested in WiFi networks. I
know some project went this way as it makes their system simpler and
more robust.

> My apology for FAQs.

No worries, I still hope someone with writing skill steps up at one
point and helps out at this front.

Daniel

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: How to create connman_1.40.bbappend to enable and to build connman with iwd?
  2021-11-26 16:30 ` Daniel Wagner
@ 2021-11-26 21:49   ` Jupiter
  2021-11-29  6:52     ` Jupiter
  0 siblings, 1 reply; 10+ messages in thread
From: Jupiter @ 2021-11-26 21:49 UTC (permalink / raw)
  To: Daniel Wagner; +Cc: comman

Hi Daniel,

Greatly appreciate your kind response, please see my comments and
clarifications:

> Indeed, I recommend to use iwd instead of wpa_supplicant. There is no
> active development happening in ConnMan on the wpa_supplicant
> plugin. That means the wpa_supplicant plugin might work perfectly fine
> for your use case and there is no need to use iwd. But don't expect any
> big help if there are problems with wpa_supplicant.

Yes, I indeed have issues with 1.40 after upgrading to OE Honister,
the WiFi connection is broken, the connman 1.40 assigned a
169.154.0.0/16 range IP address, no DHCP message received:

connmand[9988]: DHCP index 3: switch listening mode (0 ==> 1)
connmand[9988]: DHCP index 3: sending DHCP discover request
connmand[9988]: DHCP index 3: sending DHCP discover request
connmand[9988]: DHCP index 3: sending DHCP discover request

No DHCP packet response received.

Please correct me, but I believe dhcp server is managed by connmand as
I found dhcp.c in the connman source, the dhcp issue is not related to
wpa-supplicant, right?

I am running CONNMAN_DHCP_DEBUG=1 connmand -n -d
src/dhcp.c:src/network.c, please let me know if you need more debug
messages.

> Hard to answer as there is not definition of 'stable enough'. The best
> advice is to test your use cases and figure out if it fits your
> requirements.

That is fine, I can see clearly the connman direction, I'll move to
using iwd for testing, I am still learning connman, not in the
position to contribute in development, but at least I can contribute
for testing and debugging :-).

> ./configure --disble-wifi --enable-iwd

I'll try it in Yocto build.

> There is no change in ConnMan's D-Bus APIs. Depending on your use cases
> you might be able to remove the ConnMan from your design and only use
> iwd. This is the case when you are only interested in WiFi networks. I
> know some project went this way as it makes their system simpler and
> more robust.

My IoT device is running both WiFi and 4G LTE network interfaces, I
definitely need connman to manage network switching between 4G LTE and
WiFi .

Thank you very much Daniel.

Kind regards,

- jupiter

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: How to create connman_1.40.bbappend to enable and to build connman with iwd?
  2021-11-26 21:49   ` Jupiter
@ 2021-11-29  6:52     ` Jupiter
  2021-11-29  9:04       ` VAUTRIN Emmanuel (Canal Plus Prestataire)
  0 siblings, 1 reply; 10+ messages in thread
From: Jupiter @ 2021-11-29  6:52 UTC (permalink / raw)
  To: Daniel Wagner; +Cc: comman

Hi Daniel,

I finally built and managed to run connman 1.40 with iwd, the
wpa_supplicant is disabled, but there is no WiFi IP address, who is
running DHCP, connman or iwd? Running  CONNMAN_DHCP_DEBUG=1 connmand
-n -d src/dhcp.c:src/network.c, it did not send DHCP discover
requests, something is broken or not configured properly.

Thank you.

- jupiter



On 11/27/21, Jupiter <jupiter.hce@gmail.com> wrote:
> Hi Daniel,
>
> Greatly appreciate your kind response, please see my comments and
> clarifications:
>
>> Indeed, I recommend to use iwd instead of wpa_supplicant. There is no
>> active development happening in ConnMan on the wpa_supplicant
>> plugin. That means the wpa_supplicant plugin might work perfectly fine
>> for your use case and there is no need to use iwd. But don't expect any
>> big help if there are problems with wpa_supplicant.
>
> Yes, I indeed have issues with 1.40 after upgrading to OE Honister,
> the WiFi connection is broken, the connman 1.40 assigned a
> 169.154.0.0/16 range IP address, no DHCP message received:
>
> connmand[9988]: DHCP index 3: switch listening mode (0 ==> 1)
> connmand[9988]: DHCP index 3: sending DHCP discover request
> connmand[9988]: DHCP index 3: sending DHCP discover request
> connmand[9988]: DHCP index 3: sending DHCP discover request
>
> No DHCP packet response received.
>
> Please correct me, but I believe dhcp server is managed by connmand as
> I found dhcp.c in the connman source, the dhcp issue is not related to
> wpa-supplicant, right?
>
> I am running CONNMAN_DHCP_DEBUG=1 connmand -n -d
> src/dhcp.c:src/network.c, please let me know if you need more debug
> messages.
>
>> Hard to answer as there is not definition of 'stable enough'. The best
>> advice is to test your use cases and figure out if it fits your
>> requirements.
>
> That is fine, I can see clearly the connman direction, I'll move to
> using iwd for testing, I am still learning connman, not in the
> position to contribute in development, but at least I can contribute
> for testing and debugging :-).
>
>> ./configure --disble-wifi --enable-iwd
>
> I'll try it in Yocto build.
>
>> There is no change in ConnMan's D-Bus APIs. Depending on your use cases
>> you might be able to remove the ConnMan from your design and only use
>> iwd. This is the case when you are only interested in WiFi networks. I
>> know some project went this way as it makes their system simpler and
>> more robust.
>
> My IoT device is running both WiFi and 4G LTE network interfaces, I
> definitely need connman to manage network switching between 4G LTE and
> WiFi .
>
> Thank you very much Daniel.
>
> Kind regards,
>
> - jupiter
>


--
"A man can fail many times, but he isn't a failure until he begins to
blame somebody else."
-- John Burroughs

^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: How to create connman_1.40.bbappend to enable and to build connman with iwd?
  2021-11-29  6:52     ` Jupiter
@ 2021-11-29  9:04       ` VAUTRIN Emmanuel (Canal Plus Prestataire)
  2021-11-29 21:06         ` Jupiter
  0 siblings, 1 reply; 10+ messages in thread
From: VAUTRIN Emmanuel (Canal Plus Prestataire) @ 2021-11-29  9:04 UTC (permalink / raw)
  To: comman

Hi Jupiter,

Pretty strange that you are facing such problems on dhcp,
which is a basic major feature.
By my side, I have been using wpa_supplicant, via yocto, for years,
on set-top-boxes deployed projects and it works perfectly, after few patches,
maybe you can try the HEAD.

Have you checked that your IP configuration method is hdcp?
Maybe checking the services list will give a clue:
dbus-send --system --print-reply --dest=net.connman / net.connman.Manager.GetServices

I have started the migration to iwd, which required some fixes, and I have still
not reached the same behavior as with wpa_supplicant (but I am close).
Unfortunately, I had no more time to spend on this activity, but I hope giving
a new try before Christmas.

To integrate iwd on yocto (hardknott), in connman recipe, we are using this line:
PACKAGECONFIG[iwd] = "--enable-iwd --enable-wifi, --disable-iwd, iwd, iwd"
And to activate it via the local.conf
PACKAGECONFIG_remove_pn-connman = "wifi"
PACKAGECONFIG_append_pn-connman = " iwd"

Best Regards,

Emmanuel

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: How to create connman_1.40.bbappend to enable and to build connman with iwd?
  2021-11-29  9:04       ` VAUTRIN Emmanuel (Canal Plus Prestataire)
@ 2021-11-29 21:06         ` Jupiter
  2021-11-30  9:59           ` VAUTRIN Emmanuel (Canal Plus Prestataire)
  0 siblings, 1 reply; 10+ messages in thread
From: Jupiter @ 2021-11-29 21:06 UTC (permalink / raw)
  To: VAUTRIN Emmanuel (Canal Plus Prestataire); +Cc: comman

Hi Emmanuel,

Thanks for your advice.

> Have you checked that your IP configuration method is hdcp?

When I built connman 1.37 with wpa_supplicant on Zeus, it managed both
WiFi and 4G LTE network interfaces well. I did not configure anything
for DHCP, I did not even find DHCP package and running dhcpd service,
I thought that wpa_supplicant managed DHCP server and connman managed
DHCP client, is it correct? I only had DHCP issues when I upgraded to
Honister connman 1.40.

Could you please elaborate how the DHCP works in connman with iwd and
how to configure DHCP?

> Maybe checking the services list will give a clue:
> dbus-send --system --print-reply --dest=net.connman /
> net.connman.Manager.GetServices

The dbus is indeed broken, any clues how to debug it further?

# dbus-send --system --print-reply --dest=net.connman / net.connman.
Manager.GetServices
method return time=1628090207.390874 sender=:1.3 -> destination=:1.39 serial=522
   array [
   ]

> I have started the migration to iwd, which required some fixes, and I have
> still
> not reached the same behavior as with wpa_supplicant (but I am close).
> Unfortunately, I had no more time to spend on this activity, but I hope
> giving
> a new try before Christmas.
>
> To integrate iwd on yocto (hardknott), in connman recipe, we are using this
> line:
> PACKAGECONFIG[iwd] = "--enable-iwd --enable-wifi, --disable-iwd, iwd, iwd"
> And to activate it via the local.conf
> PACKAGECONFIG_remove_pn-connman = "wifi"
> PACKAGECONFIG_append_pn-connman = " iwd"

Thanks for tips, I added those and rebuilt them, but it does not make
any difference. here are more debug logs:

# systemctl status connman -l
* connman.service - Connection service
     Loaded: loaded
(8;;file://solar/lib/systemd/system/connman.service/lib/systemd/system/connman.service8;;;
enabled; vendor preset: enabled)
     Active: active (running) since Wed 2021-08-04 15:11:21 UTC; 7min ago
   Main PID: 203 (connmand)
     CGroup: /system.slice/connman.service
             `-203 /usr/sbin/connmand -n

Aug 04 15:11:31 solar connmand[203]: wwan0 {create} index 5 type 1 <ETHER>
Aug 04 15:11:31 solar connmand[203]: wwan0 {update} flags 4098 <DOWN>
Aug 04 15:11:31 solar connmand[203]: wwan0 {newlink} index 5 address
52:20:05:11:99:CB mtu 1500
Aug 04 15:11:31 solar connmand[203]: wwan0 {newlink} index 5 operstate 2 <DOWN>
Aug 04 15:11:31 solar connmand[203]: Adding interface wwan0 [ cellular ]
Aug 04 15:11:33 solar connmand[203]: wwan0 {newlink} index 5 address
5E:9C:83:62:CB:D4 mtu 1500
Aug 04 15:11:33 solar connmand[203]: wwan0 {newlink} index 5 operstate 2 <DOWN>
Aug 04 15:11:37 solar connmand[203]: wwan0 {update} flags 4240 <DOWN>
Aug 04 15:11:37 solar connmand[203]: wwan0 {newlink} index 5 address
00:00:00:00:00:00 mtu 1500
Aug 04 15:11:37 solar connmand[203]: wwan0 {newlink} index 5 operstate 2 <DOWN>

# systemctl status iwd -l
* iwd.service - Wireless service
     Loaded: loaded
(8;;file://solar/lib/systemd/system/iwd.service/lib/systemd/system/iwd.service8;;;
enabled; vendor preset: enabled)
     Active: active (running) since Wed 2021-08-04 15:11:22 UTC; 7min ago
   Main PID: 206 (iwd)
     CGroup: /system.slice/iwd.service
             `-206 /usr/libexec/iwd

Aug 04 15:11:24 solar iwd[206]:                         48.0 Mbps
Aug 04 15:11:24 solar iwd[206]:                         54.0 Mbps
Aug 04 15:11:24 solar iwd[206]:                 HT Capabilities:
Aug 04 15:11:24 solar iwd[206]:                         HT20
Aug 04 15:11:24 solar iwd[206]:                         Short GI for 20Mhz
Aug 04 15:11:24 solar iwd[206]:                 HT RX MCS indexes:
Aug 04 15:11:24 solar iwd[206]:                         0-7
Aug 04 15:11:24 solar iwd[206]:                         32
Aug 04 15:11:24 solar iwd[206]:         Ciphers: CCMP TKIP BIP
Aug 04 15:11:24 solar iwd[206]:         Supported iftypes: station ap
p2p-client p2p-go

#  CONNMAN_DHCP_DEBUG=1 connmand -n -d src/dhcp.c:src/network.c
connmand[3865]: Connection Manager version 1.40
connmand[3865]: Adding configuration wifi
connmand[3865]: Adding configuration cellular
connmand[3865]: Ignore group named 'global' because prefix is not 'service_'
connmand[3865]: Adding service configuration cellular
connmand[3865]: Checking loopback interface settings
connmand[3865]: System hostname is solar
connmand[3865]: lo {newlink} index 1 address 00:00:00:00:00:00 mtu 65536
connmand[3865]: lo {newlink} index 1 operstate 0 <UNKNOWN>
connmand[3865]: sit0 {newlink} index 2 address 00:00:00:00:08:00 mtu 1480
connmand[3865]: sit0 {newlink} index 2 operstate 2 <DOWN>
connmand[3865]: wlan0 {create} index 4 type 1 <ETHER>
connmand[3865]: wlan0 {update} flags 4099 <UP>
connmand[3865]: wlan0 {newlink} index 4 address D4:CA:6E:A4:E8:B4 mtu 1500
connmand[3865]: wlan0 {newlink} index 4 operstate 2 <DOWN>
connmand[3865]: Adding interface wlan0 [ wifi ]
connmand[3865]: wwan0 {create} index 5 type 65534 <NONE>
connmand[3865]: wwan0 {update} flags 4240 <DOWN>
connmand[3865]: wwan0 {newlink} index 5 address 00:00:00:00:00:00 mtu 1500
connmand[3865]: wwan0 {newlink} index 5 operstate 2 <DOWN>

# journalctl -xeu connman.service
-- Journal begins at Wed 2021-08-04 15:10:56 UTC, ends at Wed
2021-08-04 15:30:41 UTC. --
Aug 04 15:11:18 solar systemd[1]: Starting Connection service...
Aug 04 15:11:21 solar systemd[1]: Started Connection service.
Aug 04 15:11:21 solar connmand[203]: Connection Manager version 1.40
Aug 04 15:11:22 solar connmand[203]: Adding configuration wifi
Aug 04 15:11:22 solar connmand[203]: Adding configuration cellular
Aug 04 15:11:22 solar connmand[203]: Ignore group named 'global'
because prefix is not 'service_'
Aug 04 15:11:22 solar connmand[203]: Adding service configuration cellular
Aug 04 15:11:22 solar connmand[203]: Checking loopback interface settings
Aug 04 15:11:22 solar connmand[203]: System hostname is solar
Aug 04 15:11:23 solar connmand[203]: lo {newlink} index 1 address
00:00:00:00:00:00 mtu 65536
Aug 04 15:11:23 solar connmand[203]: lo {newlink} index 1 operstate 0 <UNKNOWN>
Aug 04 15:11:23 solar connmand[203]: sit0 {newlink} index 2 address
00:00:00:00:08:00 mtu 1480
Aug 04 15:11:23 solar connmand[203]: sit0 {newlink} index 2 operstate 2 <DOWN>
Aug 04 15:11:23 solar connmand[203]: mlan0 {create} index 3 type 1 <ETHER>
Aug 04 15:11:23 solar connmand[203]: mlan0 {update} flags 4098 <DOWN>
Aug 04 15:11:23 solar connmand[203]: mlan0 {newlink} index 3 address
D4:CA:6E:A4:E8:B4 mtu 1500
Aug 04 15:11:23 solar connmand[203]: mlan0 {newlink} index 3 operstate 2 <DOWN>
Aug 04 15:11:23 solar connmand[203]: Adding interface mlan0 [ wifi ]
Aug 04 15:11:24 solar connmand[203]: mlan0 {dellink} index 3 operstate 2 <DOWN>
Aug 04 15:11:24 solar connmand[203]: (null) {remove} index 3
Aug 04 15:11:24 solar connmand[203]: Remove interface (null) [ wifi ]
Aug 04 15:11:25 solar connmand[203]: wlan0 {create} index 4 type 1 <ETHER>
Aug 04 15:11:25 solar connmand[203]: wlan0 {update} flags 4098 <DOWN>
Aug 04 15:11:25 solar connmand[203]: wlan0 {newlink} index 4 address
D4:CA:6E:A4:E8:B4 mtu 1500
Aug 04 15:11:25 solar connmand[203]: wlan0 {newlink} index 4 operstate 2 <DOWN>
Aug 04 15:11:25 solar connmand[203]: Adding interface wlan0 [ wifi ]
Aug 04 15:11:25 solar connmand[203]: wlan0 {update} flags 4163 <UP,RUNNING>
Aug 04 15:11:25 solar connmand[203]: wlan0 {newlink} index 4 address
D4:CA:6E:A4:E8:B4 mtu 1500
Aug 04 15:11:25 solar connmand[203]: wlan0 {newlink} index 4 operstate
0 <UNKNOWN>
Aug 04 15:11:26 solar connmand[203]: wlan0 {newlink} index 4 address
D4:CA:6E:A4:E8:B4 mtu 1500
Aug 04 15:11:26 solar connmand[203]: wlan0 {newlink} index 4 operstate
0 <UNKNOWN>
Aug 04 15:11:26 solar connmand[203]: wlan0 {update} flags 4099 <UP>
Aug 04 15:11:26 solar connmand[203]: wlan0 {newlink} index 4 address
D4:CA:6E:A4:E8:B4 mtu 1500
Aug 04 15:11:26 solar connmand[203]: wlan0 {newlink} index 4 operstate 2 <DOWN>
Aug 04 15:11:31 solar connmand[203]: wwan0 {create} index 5 type 1 <ETHER>
Aug 04 15:11:31 solar connmand[203]: wwan0 {update} flags 4098 <DOWN>
Aug 04 15:11:31 solar connmand[203]: wwan0 {newlink} index 5 address
52:20:05:11:99:CB mtu 1500
Aug 04 15:11:31 solar connmand[203]: wwan0 {newlink} index 5 operstate 2 <DOWN>
Aug 04 15:11:31 solar connmand[203]: Adding interface wwan0 [ cellular ]
Aug 04 15:11:33 solar connmand[203]: wwan0 {newlink} index 5 address
5E:9C:83:62:CB:D4 mtu 1500
Aug 04 15:11:33 solar connmand[203]: wwan0 {newlink} index 5 operstate 2 <DOWN>
Aug 04 15:11:37 solar connmand[203]: wwan0 {update} flags 4240 <DOWN>
Aug 04 15:11:37 solar connmand[203]: wwan0 {newlink} index 5 address
00:00:00:00:00:00 mtu 1500
Aug 04 15:11:37 solar connmand[203]: wwan0 {newlink} index 5 operstate 2 <DOWN>
Aug 04 15:24:07 solar connmand[203]: Terminating
Aug 04 15:24:07 solar systemd[1]: Stopping Connection service...
Aug 04 15:24:07 solar connmand[203]: Remove interface wlan0 [ wifi ]
Aug 04 15:24:07 solar connmand[203]: Remove interface wwan0 [ cellular ]
Aug 04 15:24:07 solar connmand[203]: Removing configuration wifi
Aug 04 15:24:07 solar connmand[203]: Removing configuration cellular
Aug 04 15:24:07 solar connmand[203]: wlan0 {remove} index 4
Aug 04 15:24:07 solar connmand[203]: wwan0 {remove} index 5
Aug 04 15:24:07 solar connmand[203]: Exit
Aug 04 15:24:07 solar systemd[1]: connman.service: Deactivated successfully.
Aug 04 15:24:07 solar systemd[1]: Stopped Connection service.
Aug 04 15:30:39 solar systemd[1]: Starting Connection service...
Aug 04 15:30:39 solar systemd[1]: Started Connection service.
Aug 04 15:30:39 solar connmand[4713]: Connection Manager version 1.40
Aug 04 15:30:39 solar connmand[4713]: Adding configuration wifi
Aug 04 15:30:39 solar connmand[4713]: Adding configuration cellular
Aug 04 15:30:39 solar connmand[4713]: Ignore group named 'global'
because prefix is not 'service_'
Aug 04 15:30:39 solar connmand[4713]: Adding service configuration cellular
Aug 04 15:30:39 solar connmand[4713]: Checking loopback interface settings
Aug 04 15:30:39 solar connmand[4713]: System hostname is solar
Aug 04 15:30:39 solar connmand[4713]: lo {newlink} index 1 address
00:00:00:00:00:00 mtu 65536
Aug 04 15:30:40 solar connmand[4713]: lo {newlink} index 1 operstate 0 <UNKNOWN>
Aug 04 15:30:40 solar connmand[4713]: sit0 {newlink} index 2 address
00:00:00:00:08:00 mtu 1480
Aug 04 15:30:40 solar connmand[4713]: sit0 {newlink} index 2 operstate 2 <DOWN>
Aug 04 15:30:40 solar connmand[4713]: wlan0 {create} index 4 type 1 <ETHER>
Aug 04 15:30:40 solar connmand[4713]: wlan0 {update} flags 4099 <UP>
Aug 04 15:30:40 solar connmand[4713]: wlan0 {newlink} index 4 address
D4:CA:6E:A4:E8:B4 mtu 1500
Aug 04 15:30:40 solar connmand[4713]: wlan0 {newlink} index 4 operstate 2 <DOWN>
Aug 04 15:30:40 solar connmand[4713]: Adding interface wlan0 [ wifi ]
Aug 04 15:30:40 solar connmand[4713]: wwan0 {create} index 5 type 65534 <NONE>
Aug 04 15:30:40 solar connmand[4713]: wwan0 {update} flags 4240 <DOWN>
Aug 04 15:30:40 solar connmand[4713]: wwan0 {newlink} index 5 address
00:00:00:00:00:00 mtu 1500
Aug 04 15:30:40 solar connmand[4713]: wwan0 {newlink} index 5 operstate 2 <DOWN>


connman should send dhcp requests repeatedly, that seems another issue.

~# ip route show

# ifconfig
wlan0     Link encap:Ethernet  HWaddr D4:CA:6E:A4:E8:B4
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)


Thank you very much Emmanuel.

Kind regards,

- jupiter

^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: How to create connman_1.40.bbappend to enable and to build connman with iwd?
  2021-11-29 21:06         ` Jupiter
@ 2021-11-30  9:59           ` VAUTRIN Emmanuel (Canal Plus Prestataire)
  2021-11-30 10:59             ` Jupiter
  0 siblings, 1 reply; 10+ messages in thread
From: VAUTRIN Emmanuel (Canal Plus Prestataire) @ 2021-11-30  9:59 UTC (permalink / raw)
  To: comman

Jupiter,

> When I built connman 1.37 with wpa_supplicant on Zeus, it managed both
> WiFi and 4G LTE network interfaces well. I did not configure anything
> for DHCP, I did not even find DHCP package and running dhcpd service,
> I thought that wpa_supplicant managed DHCP server and connman managed
> DHCP client, is it correct? I only had DHCP issues when I upgraded to
> Honister connman 1.40.
I have no idea about the integration of ConnMan 1.40 on Honister, I have updated
it by myself on Hardknott with additional patches, integrated after the 1.40.

> Could you please elaborate how the DHCP works in connman with iwd and
> how to configure DHCP?
I think normally it shall work directly, no need to configure something special to
activate it by default. My meaning was to (re)activate it dynamically to check
if it worked in that case, for example by calling:
gdbus call --system -d net.connman -o ${SERVICE_PATH} -m net.connman.Service.SetProperty IPv4.Configuration "<{'Method': <'dhcp'>}>"
after a
gdbus call --system -d net.connman -o ${SERVICE_PATH} -m net.connman.Service.SetProperty IPv4.Configuration "<{'Method': <'manual'>}>"
> The dbus is indeed broken, any clues how to debug it further?
> # dbus-send --system --print-reply --dest=net.connman / net.connman.
> Manager.GetServices
> method return time=1628090207.390874 sender=:1.3 -> destination=:1.39 serial=522
> array [
 >  ]
Pretty strange... Can you confirm it worked with your former configuration on 1.37?

To keep moving, I propose you to test the following configurations,
and check if you get back a coherent service list:
1. PreferredTechnologies=wifi in main.conf, 
2. ConnMan HEAD on Honister
SRCREV = "0ef47336dc92b101c6d87ed3a9fff4db36096007"
3. ConnMan 1.37 (from Zeus ?) on Honister
4. ConnMan 1.39 on Hardknott 

By our side we will migrate to Honister next weeks / months, but I hardly
doubt your problem is related to Yocto integration.


Best Regards,

Emmanuel

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: How to create connman_1.40.bbappend to enable and to build connman with iwd?
  2021-11-30  9:59           ` VAUTRIN Emmanuel (Canal Plus Prestataire)
@ 2021-11-30 10:59             ` Jupiter
  2021-11-30 14:44               ` VAUTRIN Emmanuel (Canal Plus Prestataire)
  0 siblings, 1 reply; 10+ messages in thread
From: Jupiter @ 2021-11-30 10:59 UTC (permalink / raw)
  To: VAUTRIN Emmanuel (Canal Plus Prestataire); +Cc: comman

Hi Emmanuel,

> Pretty strange... Can you confirm it worked with your former configuration
> on 1.37?

Yes it worked on 1.37 with wpa_supplicant built by Zeus if you would
like to see the result, sorry very lengthy :-):

root@solar:~#  dbus-send --system --print-reply --dest=net.connman /
net.connman.Manager.GetServices
method return time=1638267429.462818 sender=:1.4 -> destination=:1.22
serial=128 reply_serial=2
   array [
      struct {
         object path "/net/connman/service/cellular_505016005871803_context1"
         array [
            dict entry(
               string "Type"
               variant                   string "cellular"
            )
            dict entry(
               string "Security"
               variant                   array [
                  ]
            )
            dict entry(
               string "State"
               variant                   string "ready"
            )
            dict entry(
               string "Strength"
               variant                   byte 80
            )
            dict entry(
               string "Favorite"
               variant                   boolean true
            )
            dict entry(
               string "Immutable"
               variant                   boolean false
            )
            dict entry(
               string "AutoConnect"
               variant                   boolean true
            )
            dict entry(
               string "Name"
               variant                   string "Telstra"
            )
            dict entry(
               string "Roaming"
               variant                   boolean false
            )
            dict entry(
               string "Ethernet"
               variant                   array [
                     dict entry(
                        string "Method"
                        variant                            string "auto"
                     )
                     dict entry(
                        string "Interface"
                        variant                            string "wwan0"
                     )
                     dict entry(
                        string "Address"
                        variant                            string
"72:DD:6D:D2:FD:91"
                     )
                     dict entry(
                        string "MTU"
                        variant                            uint16 1500
                     )
                  ]
            )
            dict entry(
               string "IPv4"
               variant                   array [
                     dict entry(
                        string "Method"
                        variant                            string "fixed"
                     )
                     dict entry(
                        string "Address"
                        variant                            string
"10.114.35.221"
                     )
                     dict entry(
                        string "Netmask"
                        variant                            string
"255.255.255.252"
                     )
                     dict entry(
                        string "Gateway"
                        variant                            string
"10.114.35.222"
                     )
                  ]
            )
            dict entry(
               string "IPv4.Configuration"
               variant                   array [
                     dict entry(
                        string "Method"
                        variant                            string "fixed"
                     )
                     dict entry(
                        string "Address"
                        variant                            string
"10.114.35.221"
                     )
                     dict entry(
                        string "Netmask"
                        variant                            string
"255.255.255.252"
                     )
                     dict entry(
                        string "Gateway"
                        variant                            string
"10.114.35.222"
                     )
                  ]
            )
            dict entry(
               string "IPv6"
               variant                   array [
                  ]
            )
            dict entry(
               string "IPv6.Configuration"
               variant                   array [
                     dict entry(
                        string "Method"
                        variant                            string "off"
                     )
                  ]
            )
            dict entry(
               string "Nameservers"
               variant                   array [
                     string "10.4.130.164"
                     string "10.4.58.204"
                  ]
            )
            dict entry(
               string "Nameservers.Configuration"
               variant                   array [
                  ]
            )
            dict entry(
               string "Timeservers"
               variant                   array [
                  ]
            )
            dict entry(
               string "Timeservers.Configuration"
               variant                   array [
                  ]
            )
            dict entry(
               string "Domains"
               variant                   array [
                  ]
            )
            dict entry(
               string "Domains.Configuration"
               variant                   array [
                  ]
            )
            dict entry(
               string "Proxy"
               variant                   array [
                     dict entry(
                        string "Method"
                        variant                            string "direct"
                     )
                  ]
            )
            dict entry(
               string "Proxy.Configuration"
               variant                   array [
                  ]
            )
            dict entry(
               string "mDNS"
               variant                   boolean false
            )
            dict entry(
               string "mDNS.Configuration"
               variant                   boolean false
            )
            dict entry(
               string "Provider"
               variant                   array [
                  ]
            )
         ]
      }
      struct {
         object path
"/net/connman/service/wifi_d4ca6ea4e988_4a757069746572496f54_managed_psk"
         array [
            dict entry(
               string "Type"
               variant                   string "wifi"
            )
            dict entry(
               string "Security"
               variant                   array [
                     string "psk"
                  ]
            )
            dict entry(
               string "State"
               variant                   string "idle"
            )
            dict entry(
               string "Strength"
               variant                   byte 73
            )
            dict entry(
               string "Favorite"
               variant                   boolean false
            )
            dict entry(
               string "Immutable"
               variant                   boolean false
            )
            dict entry(
               string "AutoConnect"
               variant                   boolean false
            )
            dict entry(
               string "Name"
               variant                   string "JupiterIoT"
            )
            dict entry(
               string "Ethernet"
               variant                   array [
                     dict entry(
                        string "Method"
                        variant                            string "auto"
                     )
                     dict entry(
                        string "Interface"
                        variant                            string "mlan0"
                     )
                     dict entry(
                        string "Address"
                        variant                            string
"D4:CA:6E:A4:E9:88"
                     )
                     dict entry(
                        string "MTU"
                        variant                            uint16 1500
                     )
                  ]
            )
            dict entry(
               string "IPv4"
               variant                   array [
                  ]
            )
            dict entry(
               string "IPv4.Configuration"
               variant                   array [
                     dict entry(
                        string "Method"
                        variant                            string "dhcp"
                     )
                  ]
            )
            dict entry(
               string "IPv6"
               variant                   array [
                  ]
            )
            dict entry(
               string "IPv6.Configuration"
               variant                   array [
                     dict entry(
                        string "Method"
                        variant                            string "auto"
                     )
                     dict entry(
                        string "Privacy"
                        variant                            string "disabled"
                     )
                  ]
            )
            dict entry(
               string "Nameservers"
               variant                   array [
                  ]
            )
            dict entry(
               string "Nameservers.Configuration"
               variant                   array [
                  ]
            )
            dict entry(
               string "Timeservers"
               variant                   array [
                  ]
            )
            dict entry(
               string "Timeservers.Configuration"
               variant                   array [
                  ]
            )
            dict entry(
               string "Domains"
               variant                   array [
                  ]
            )
            dict entry(
               string "Domains.Configuration"
               variant                   array [
                  ]
            )
            dict entry(
               string "Proxy"
               variant                   array [
                  ]
            )
            dict entry(
               string "Proxy.Configuration"
               variant                   array [
                  ]
            )
            dict entry(
               string "mDNS"
               variant                   boolean false
            )
            dict entry(
               string "mDNS.Configuration"
               variant                   boolean false
            )
            dict entry(
               string "Provider"
               variant                   array [
                  ]
            )
         ]
      }
      struct {
         object path
"/net/connman/service/wifi_d4ca6ea4e988_43656e74617572323447526f757465723230_managed_psk"
         array [
            dict entry(
               string "Type"
               variant                   string "wifi"
            )
            dict entry(
               string "Security"
               variant                   array [
                     string "psk"
                     string "wps"
                  ]
            )
            dict entry(
               string "State"
               variant                   string "idle"
            )
            dict entry(
               string "Strength"
               variant                   byte 47
            )
            dict entry(
               string "Favorite"
               variant                   boolean false
            )
            dict entry(
               string "Immutable"
               variant                   boolean false
            )
            dict entry(
               string "AutoConnect"
               variant                   boolean false
            )
            dict entry(
               string "Name"
               variant                   string "Centaur24GRouter20"
            )
            dict entry(
               string "Ethernet"
               variant                   array [
                     dict entry(
                        string "Method"
                        variant                            string "auto"
                     )
                     dict entry(
                        string "Interface"
                        variant                            string "mlan0"
                     )
                     dict entry(
                        string "Address"
                        variant                            string
"D4:CA:6E:A4:E9:88"
                     )
                     dict entry(
                        string "MTU"
                        variant                            uint16 1500
                     )
                  ]
            )
            dict entry(
               string "IPv4"
               variant                   array [
                  ]
            )
            dict entry(
               string "IPv4.Configuration"
               variant                   array [
                     dict entry(
                        string "Method"
                        variant                            string "dhcp"
                     )
                  ]
            )
            dict entry(
               string "IPv6"
               variant                   array [
                  ]
            )
            dict entry(
               string "IPv6.Configuration"
               variant                   array [
                     dict entry(
                        string "Method"
                        variant                            string "auto"
                     )
                     dict entry(
                        string "Privacy"
                        variant                            string "disabled"
                     )
                  ]
            )
            dict entry(
               string "Nameservers"
               variant                   array [
                  ]
            )
            dict entry(
               string "Nameservers.Configuration"
               variant                   array [
                  ]
            )
            dict entry(
               string "Timeservers"
               variant                   array [
                  ]
            )
            dict entry(
               string "Timeservers.Configuration"
               variant                   array [
                  ]
            )
            dict entry(
               string "Domains"
               variant                   array [
                  ]
            )
            dict entry(
               string "Domains.Configuration"
               variant                   array [
                  ]
            )
            dict entry(
               string "Proxy"
               variant                   array [
                  ]
            )
            dict entry(
               string "Proxy.Configuration"
               variant                   array [
                  ]
            )
            dict entry(
               string "mDNS"
               variant                   boolean false
            )
            dict entry(
               string "mDNS.Configuration"
               variant                   boolean false
            )
            dict entry(
               string "Provider"
               variant                   array [
                  ]
            )
         ]
      }
      struct {
         object path
"/net/connman/service/wifi_d4ca6ea4e988_576946692d463236335f4578742032_managed_psk"
         array [
            dict entry(
               string "Type"
               variant                   string "wifi"
            )
            dict entry(
               string "Security"
               variant                   array [
                     string "psk"
                     string "wps"
                  ]
            )
            dict entry(
               string "State"
               variant                   string "idle"
            )
            dict entry(
               string "Strength"
               variant                   byte 40
            )
            dict entry(
               string "Favorite"
               variant                   boolean false
            )
            dict entry(
               string "Immutable"
               variant                   boolean false
            )
            dict entry(
               string "AutoConnect"
               variant                   boolean false
            )
            dict entry(
               string "Name"
               variant                   string "WiFi-F263_Ext 2"
            )
            dict entry(
               string "Ethernet"
               variant                   array [
                     dict entry(
                        string "Method"
                        variant                            string "auto"
                     )
                     dict entry(
                        string "Interface"
                        variant                            string "mlan0"
                     )
                     dict entry(
                        string "Address"
                        variant                            string
"D4:CA:6E:A4:E9:88"
                     )
                     dict entry(
                        string "MTU"
                        variant                            uint16 1500
                     )
                  ]
            )
            dict entry(
               string "IPv4"
               variant                   array [
                  ]
            )
            dict entry(
               string "IPv4.Configuration"
               variant                   array [
                     dict entry(
                        string "Method"
                        variant                            string "dhcp"
                     )
                  ]
            )
            dict entry(
               string "IPv6"
               variant                   array [
                  ]
            )
            dict entry(
               string "IPv6.Configuration"
               variant                   array [
                     dict entry(
                        string "Method"
                        variant                            string "auto"
                     )
                     dict entry(
                        string "Privacy"
                        variant                            string "disabled"
                     )
                  ]
            )
            dict entry(
               string "Nameservers"
               variant                   array [
                  ]
            )
            dict entry(
               string "Nameservers.Configuration"
               variant                   array [
                  ]
            )
            dict entry(
               string "Timeservers"
               variant                   array [
                  ]
            )
            dict entry(
               string "Timeservers.Configuration"
               variant                   array [
                  ]
            )
            dict entry(
               string "Domains"
               variant                   array [
                  ]
            )
            dict entry(
               string "Domains.Configuration"
               variant                   array [
                  ]
            )
            dict entry(
               string "Proxy"
               variant                   array [
                  ]
            )
            dict entry(
               string "Proxy.Configuration"
               variant                   array [
                  ]
            )
            dict entry(
               string "mDNS"
               variant                   boolean false
            )
            dict entry(
               string "mDNS.Configuration"
               variant                   boolean false
            )
            dict entry(
               string "Provider"
               variant                   array [
                  ]
            )
         ]
      }
      struct {
         object path
"/net/connman/service/wifi_d4ca6ea4e988_4a757069746572496f74546563686e6f6c6f6779323447_managed_psk"
         array [
            dict entry(
               string "Type"
               variant                   string "wifi"
            )
            dict entry(
               string "Security"
               variant                   array [
                     string "psk"
                  ]
            )
            dict entry(
               string "State"
               variant                   string "idle"
            )
            dict entry(
               string "Strength"
               variant                   byte 33
            )
            dict entry(
               string "Favorite"
               variant                   boolean false
            )
            dict entry(
               string "Immutable"
               variant                   boolean false
            )
            dict entry(
               string "AutoConnect"
               variant                   boolean false
            )
            dict entry(
               string "Name"
               variant                   string "JupiterIotTechnology24G"
            )
            dict entry(
               string "Ethernet"
               variant                   array [
                     dict entry(
                        string "Method"
                        variant                            string "auto"
                     )
                     dict entry(
                        string "Interface"
                        variant                            string "mlan0"
                     )
                     dict entry(
                        string "Address"
                        variant                            string
"D4:CA:6E:A4:E9:88"
                     )
                     dict entry(
                        string "MTU"
                        variant                            uint16 1500
                     )
                  ]
            )
            dict entry(
               string "IPv4"
               variant                   array [
                  ]
            )
            dict entry(
               string "IPv4.Configuration"
               variant                   array [
                     dict entry(
                        string "Method"
                        variant                            string "dhcp"
                     )
                  ]
            )
            dict entry(
               string "IPv6"
               variant                   array [
                  ]
            )
            dict entry(
               string "IPv6.Configuration"
               variant                   array [
                     dict entry(
                        string "Method"
                        variant                            string "auto"
                     )
                     dict entry(
                        string "Privacy"
                        variant                            string "disabled"
                     )
                  ]
            )
            dict entry(
               string "Nameservers"
               variant                   array [
                  ]
            )
            dict entry(
               string "Nameservers.Configuration"
               variant                   array [
                  ]
            )
            dict entry(
               string "Timeservers"
               variant                   array [
                  ]
            )
            dict entry(
               string "Timeservers.Configuration"
               variant                   array [
                  ]
            )
            dict entry(
               string "Domains"
               variant                   array [
                  ]
            )
            dict entry(
               string "Domains.Configuration"
               variant                   array [
                  ]
            )
            dict entry(
               string "Proxy"
               variant                   array [
                  ]
            )
            dict entry(
               string "Proxy.Configuration"
               variant                   array [
                  ]
            )
            dict entry(
               string "mDNS"
               variant                   boolean false
            )
            dict entry(
               string "mDNS.Configuration"
               variant                   boolean false
            )
            dict entry(
               string "Provider"
               variant                   array [
                  ]
            )
         ]
      }
   ]

> To keep moving, I propose you to test the following configurations,
> and check if you get back a coherent service list:
> 1. PreferredTechnologies=wifi in main.conf,
> 2. ConnMan HEAD on Honister
> SRCREV = "0ef47336dc92b101c6d87ed3a9fff4db36096007"
> 3. ConnMan 1.37 (from Zeus ?) on Honister
> 4. ConnMan 1.39 on Hardknott

I don't think it is a connman issue, it seems to me my Yocto build
problem, something wrong with the libraries, dbus, wpa_supplicant, and
other network things, as per Daniel's advice, it is better to move to
use iwd, but I have the same problem for both connman with
wpa_supplicant and connman with iwd, both broken dbus and could not
get WiFi IP address, I think that dbus failure could be related to the
failure of IP address, I'll keep digging.

> By our side we will migrate to Honister next weeks / months, but I hardly
> doubt your problem is related to Yocto integration.

Are you using connman with wpa_supplicant or iwd when you built
Hardknott? If your connman works on Hardknott, it should also work on
Honister, just be careful the syntax has been changed to use : not _,
for example do_install::append, FILES:${PN}, it took me a while to
lean the new syntax.

Thank you.

- jupiter

^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: How to create connman_1.40.bbappend to enable and to build connman with iwd?
  2021-11-30 10:59             ` Jupiter
@ 2021-11-30 14:44               ` VAUTRIN Emmanuel (Canal Plus Prestataire)
  0 siblings, 0 replies; 10+ messages in thread
From: VAUTRIN Emmanuel (Canal Plus Prestataire) @ 2021-11-30 14:44 UTC (permalink / raw)
  To: comman

> Yes it worked on 1.37 with wpa_supplicant built by Zeus if you would
> like to see the result, sorry very lengthy :-):
Allright great, much better.

> Are you using connman with wpa_supplicant or iwd when you built
> Hardknott?
We have been using Yocto with ConnMan and wpa_supplicant  for many years
(since Jethro I think), and it worked pretty well each time (except few 
regressions, sometimes).
I have started the integration of iwd, and started to contribute some fixes.
Unfortunately, as it is not my priority, I have stopped working on it, and 
I have still not reached the same behavior as with wpa_supplicant, for now.

> If your connman works on Hardknott, it should also work on
> Honister, just be careful the syntax has been changed to use : not _,
> for example do_install::append, FILES:${PN}, it took me a while to
> lean the new syntax.
There where some major changes with Honister, maybe you should 
update to Hardknott, as first step, and add the 1.40 recipe on it
as second step.

B.R.

Emmanuel

^ permalink raw reply	[flat|nested] 10+ messages in thread

* How to create connman_1.40.bbappend to enable and to build connman with iwd?
       [not found] <16BAEC7B11896AEA.23256@lists.yoctoproject.org>
@ 2021-11-26  6:26 ` Jupiter
  0 siblings, 0 replies; 10+ messages in thread
From: Jupiter @ 2021-11-26  6:26 UTC (permalink / raw)
  To: yocto; +Cc: oe-core, comman, Daniel Wagner, Armin Kuster, Alexander Kanavin

Hi,

Given the high profile of iwd and advocating connman with iwd, I
believe someone have already built Yocto connman and iwd,
surprisingly, I could not even find an iwd recipe in
https://github.com/openembedded/openembedded/tree/master/recipes, nor
can I find connman document and instructions to replace wpa_supplicant
by iwd, what could I be missing here?

Appreciate your kind advice.

Thank you.

Kind regards,

- jh


On 11/26/21, JH via lists.yoctoproject.org
<jupiter.hce=gmail.com@lists.yoctoproject.org> wrote:
> Hi,
>
> Please correct me, but it seems to me the connman is moving to a
> direction to ditch out wpa_supplicant and to use iwd, but the Honister
> still configure connman with wpa_supplicant by default, appreciate
> your advice:
>
> - Is connman with iwd stable enough?
>
> - How can I create a connman_1.40.bbappend  to replace wpa_supplicant
> by iwd configure?
>
> - Where are the documents for configuring and building connman with
> iwd? Where is the operational guidance to run connman with iwd? Can I
> use the same connman dbus APIs or are there any dbus API changes to
> run connman with iwd?
>
> My apology for FAQs.
>
> Thank you very much.
>
> Kind regards,
>
> - JH
>


--
"A man can fail many times, but he isn't a failure until he begins to
blame somebody else."
-- John Burroughs

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2021-11-30 14:44 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-25 23:03 How to create connman_1.40.bbappend to enable and to build connman with iwd? Jupiter
2021-11-26 16:30 ` Daniel Wagner
2021-11-26 21:49   ` Jupiter
2021-11-29  6:52     ` Jupiter
2021-11-29  9:04       ` VAUTRIN Emmanuel (Canal Plus Prestataire)
2021-11-29 21:06         ` Jupiter
2021-11-30  9:59           ` VAUTRIN Emmanuel (Canal Plus Prestataire)
2021-11-30 10:59             ` Jupiter
2021-11-30 14:44               ` VAUTRIN Emmanuel (Canal Plus Prestataire)
     [not found] <16BAEC7B11896AEA.23256@lists.yoctoproject.org>
2021-11-26  6:26 ` Jupiter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).