4 Copyright (C) 2007-2012 Intel Corporation. All rights reserved.
7 Functionality and features
8 ==========================
10 The following features are built-in into Connection Manager:
11 - Generic plugin infrastructure
12 - Device and network abstraction (with basic storage support)
13 - IPv4, IPv4-LL (link-local) and DHCP
14 - IPv4 address conflict detection (ACD) according to RFC 5227
15 - IPv6, DHCPv6 and 6to4 tunnels
16 - Advanced routing and DNS configuration
17 - Built-in DNS proxy and intelligent caching
18 - Built-in WISPr hotspot logins and portal detection
19 - Time and timezone configuration (manual and automatic with NTP)
20 - Proxy handling (manual and automatic with WPAD)
21 - Tethering support (USB, Bluetooth and WiFi AP mode)
22 - Detailed statistics handling (home and roaming)
24 Various plugins can be enabled for networking support:
26 - WiFi plugin with WEP40/WEP128 and WPA/WPA2 (personal and enterprise)
27 - Bluetooth plugin (using BlueZ)
28 - 2G/3G/4G plugin (using oFono)
30 Also plugins with additional features are available:
31 - Loopback interface setup
32 - PACrunner proxy handling
33 - PolicyKit authorization support
35 Note that when ConnMan starts, it clears all network interfaces that are
36 going to be used. If this is not desired, network interfaces can be ignored
37 either by setting NetworkInterfaceBlacklist in the main.conf config file or
38 by using the -I command line option.
41 Compilation and installation
42 ============================
44 In order to compile Connection Manager you need following software packages:
48 - IP-Tables library (for tethering support)
49 - GnuTLS library (optional)
50 - PolicyKit (optional)
51 - readline (command line client)
54 ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
56 Configure automatically searches for all required components and packages.
58 To compile and install run:
62 Configuration and options
63 =========================
65 For a working system, certain configuration options need to be enabled:
69 Disable support for Ethernet network cards
71 By default Ethernet technology support is built-in and
72 enabled. This option can be used to build a small daemon
73 for a specific system if Ethernet support is not required.
77 Disable support for USB Ethernet Gadget devices
79 By default USB Ethernet Gadget technology support is built-in and
80 enabled. This option can be used to build a small daemon
81 for a specific system if USB Ethernet Gadget support is not required.
85 Disable support for WiFi devices
87 By default WiFi technology support is built-in and
88 enabled. This option can be used to build a small daemon
89 for a specific system if WiFi support is not required.
91 It is safe to build a daemon with WiFi support and no
92 running wpa_supplicant. The start of wpa_supplicant is
93 automatically detected and only a runtime dependency. It
94 is not needed to build ConnMan.
98 Disable support for Bluetooth devices
100 By default Bluetooth technology support is built-in and
101 enabled. This option can be used to build a small daemon
102 for a specific system if Bluetooth support is not required.
104 It is safe to build a daemon with Bluetooth support and no
105 running bluetoothd. The start of bluetoothd is automatically
106 detected and only a runtime dependency. It is not needed to
111 Disable support for cellular 2G/3G/4G devices
113 By default oFono technology support is built-in and
114 enabled. This option can be used to build a small daemon
115 for a specific system where oFono is not used.
117 It is safe to build a daemon with oFono support and no
118 running ofonod. That start of ofonod is automatically
119 detected and only a runtime dependency. It is not needed to
124 Disable support for Bluetooth DUN devices
126 By default Bluetooth DUN technology (dundee) support is
127 built-in and enabled. This option can be used to build a
128 small daemon for a specific system where dundee is not used.
130 It is safe to build a daemon with dundee support and no
131 running dundee. That start of dundee is automatically
132 detected and only a runtime dependency. It is not needed to
137 Enable support for Wireless daemon for Linux
139 The IWD project does not have initial release so far,
140 therefore by default IWD support is not enabled.
142 It is safe to enable this option along WiFi support.
146 Disable support for PACrunner proxy handling
148 By default PACrunner support is built-in and enabled. This
149 option can be used to build a small daemon for a specific
150 system where PACrunner is not used.
152 It is safe to build a daemon with PACrunner support and no
153 pacrunner daemon. It will detect and start a PACrunner
154 process if needed at runtime. The presence is not needed
159 Disable setup of loopback device
161 For distributions with a really minimal init system and no
162 networking scripts this can take care of setting up the
163 loopback device and enabling it.
165 It is safe to leave this selected even if networking
166 scripts are in place. It detects an already configured
167 loopback device and leaves it as it is.
171 Disable support for WISPr hotspot logins
173 For systems with really minimal memory requirements, this
174 will disable the support for WISPr hotspot logins. The code
175 for WISPr will be still compiled into the daemon, but its
176 requirement on GnuTLS for secure connections will be lifted.
178 The missing GnuTLS support shrinks the memory requirements
179 by about 30% and for systems that are more stationary and do
180 not log into hotspots this might be a better trade off.
182 Disabling WISPr support is not disabling the portal detection
183 support. A portal will still be detected, but instead of being
184 asked for login credentials, the request for a browser session
185 will be made through the agent.
189 Enable support for PolicyKit authorization
191 This allows to check every D-Bus access against a security
192 policy and so restrict access to certain functionality.
196 Enable support for NetworkManager compatibility interfaces
198 This allows to expose a minimal set of NetworkManager
199 interfaces. It is useful for systems with applications
200 written to use NetworkManager to detect online/offline
201 status and have not yet been converted to use ConnMan.
205 Disable support for the command line client
207 By default the command line client is enabled and uses the
208 readline library. For specific systems where ConnMan is
209 configured by other means, the command line client can be
210 disabled and the dependency on readline is removed.
214 Enable support for compiling SElinux type enforcement rules
216 The TE rules are needed if host environment is in enforcing
217 mode. Without this option, the VPN client process cannot
218 send notification to connman-vpnd via net.connman.Task
219 interface. The compiled connman-task.pp module needs to
220 also installed using this command
221 # semodule -i connman-task.pp
222 in order to enable the dbus access.
224 --with-dns-backend=TYPE
226 Enable support for a DNS resolving backend
228 Select a DNS backend to use. Supported values are "internal"
229 and "systemd-resolved". If "internal" is selected, ConnMan
230 will be build with a caching DNS proxy. If "systemd-resolved"
231 is selected, ConnMan configures systemd-resolved to do DNS
232 resolving. The default value is "internal".
238 One can activate debugging prints in ConnMan using -d command line option.
239 If the -d option has no parameters, then debugging is activated for all
240 source code files. If the -d option has parameters, they tell which source
241 code files have debugging activated. One can use wild cards in file names.
243 -d Activate all normal debug prints
244 -d src/service.c This prints debugging info from src/service.c
246 -d src/network.c:src/ipconfig.c
247 This activates debug prints in src/network.c
248 and src/ipconfig.c files.
249 -d 'src/n*.c' This would activate debug print from all the C source
250 files starting with letter 'n' in src directory.
251 Note the quotation marks around option, that is to
252 prevent shell expansion.
253 -d '*/n*.c:*/i*.c' Activate debug prints for all C source files starting
254 with letters 'n' or 'i' in any sub-directory.
256 Some components of ConnMan have environment variable activated debug prints.
257 If the environment variable is set, then corresponding component will print
258 some extra debugging information.
259 Following environment variables can be used:
260 CONNMAN_DHCP_DEBUG DHCPv4 related debug information
261 CONNMAN_DHCPV6_DEBUG DHCPv6 related debug information
262 CONNMAN_IPTABLES_DEBUG Extra information when iptables is used
263 CONNMAN_RESOLV_DEBUG Name resolver debug prints. These debug prints
264 are used when ConnMan resolves host names for
266 Note that the DNS proxy debug prints do not
267 use this environment variable. For that, one
268 can use "-d src/dnsproxy.c" command line option.
269 CONNMAN_SUPPLICANT_DEBUG Debugging prints for communication between
270 connmand and wpa_supplicant processes.
271 CONNMAN_WEB_DEBUG Debug information when ConnMan does Internet
272 connectivity check in Wispr and 6to4 components.
275 CONNMAN_WEB_DEBUG=1 src/connmand -n
277 If timing conditions are relevant then it is recommended command to
278 get log traces as follows:
279 connmand -d 2>&1 | ts '[%H:%M:%.S]' | tee connman.log
281 The 'ts' program is normally available in the moreutils package.
287 In order to support tethering, the following kernel configuration options
288 need to be enabled either as modules (m) or builtin (y):
291 CONFIG_IP_NF_TARGET_MASQUERADE
293 In order to enable CONFIG_IP_NF_TARGET_MASQUERADE, the following options need
294 to be enabled also as modules (m) or builtin (y):
297 CONFIG_NF_CONNTRACK_IPV4
300 For routing and statistic support in Sessions, the following options
301 need to be enabled as modules (m) or builtin (y):
303 CONFIG_IP_NF_IPTABLES
304 CONFIG_IP_MULTIPLE_TABLES
305 CONFIG_NETFILTER_NETLINK_ACCT
306 CONFIG_NETFILTER_XT_MATCH_NFACCT
307 CONFIG_NETFILTER_XT_CONNMARK
308 CONFIG_NETFILTER_XT_TARGET_CONNMARK
309 CONFIG_NETFILTER_XT_MATCH_CONNMARK
311 In order to support USB gadget tethering, the following kernel configuration
312 options need to be enabled:
318 wpa_supplicant configuration
319 ============================
321 In order to get wpa_supplicant and Connection Manager working properly
322 together you should edit wpa_supplicant .config file and set:
326 CONFIG_CTRL_IFACE_DBUS_NEW=y
330 CONFIG_BGSCAN_SIMPLE=y
332 This last option will enable the support of background scanning while being
333 connected, which is necessary when roaming on wifi.
335 It is recommended to use wpa_supplicant 2.x or later.
337 If wpa_supplicant is configured to D-Bus autostart, then ConnMan will
338 trigger the autostart of wpa_supplicant. However please keep in mind
339 that this trigger only happens once. If wpa_supplicant stops or crashes,
340 ConnMan does not periodically try to autostart it. It is up to systemd or
341 similar service management tool to autostart it. In case wpa_supplicant
342 is not started by ConnMan then make sure option "-u" is used in order
343 to enable its D-Bus control interface and ensure ConnMan can communicate
350 In order to compile pptp and l2tp VPN plugins, you need ppp development
353 To run l2tp you will need
354 - xl2tpd, http://www.xelerance.com/services/software/xl2tpd
356 To run pptp you will need
357 - pptp client, http://pptpclient.sourceforge.net
359 Both l2tp and pptp also need pppd.
365 Up to version 2.2 of OpenVPN, pushing additional routes from the
366 server will not always work. Some of the symptons are that additional
367 routes will not be set by ConnMan if the uplink is a cellular
368 network. While the same setup works well for a WiFi or ethernet
371 Up to (at least) version 2.4.5 of OpenVPN getting information about
372 private key decryption failures via management channel is missing. This
373 will result in attempting with the invalid key over and over as the
374 information about failed decryprion is not delivered to OpenVPN plugin.
375 The following patch to OpenVPN is required for the private key
376 decryption failures to be sent:
377 https://git.sailfishos.org/mer-core/openvpn/blob/
378 4f4b4af116292a207416c8a990392e35a6fc41af/rpm/privatekey-passphrase-
384 When using GnuTLS be aware that depending on the configuration of
385 GnuTLS does either an lazy or eager initialization of an internal
386 entropy pool using /dev/urandom. On eager initialization the loading
387 of ConnMan will be delayed by the link loader until the entropy pool
388 is filled. On smaller system this can easily delay the startup of
389 ConnMan by several seconds (we had reports of 25 seconds and more
392 GnuTLS allows to switch back to lazy evaluation when the environment
393 variable GNUTLS_NO_EXPLICIT_INIT. For more details please read
394 the man page to gnutls_global_init(3).
400 ConnMan tries to detect if it has Internet connection or not when
401 a service is connected. If the online check succeeds the service
402 enters Online state, if not it stays in Ready state. The online
403 check is also used to detect whether ConnMan is behind a captive
404 portal like when you are in hotel and need to pay for connectivity.
406 The online check is done by trying to fetch status.html document
407 from ipv4.connman.net (for IPv4 connectivity) and ipv6.connman.net
408 (for IPv6 connectivity). The used URL looks like this
409 http://ipv{4|6}.connman.net/online/status.html
411 See connman.conf(5) for the EnableOnlineCheck option, if you need to
414 During the online check procedure, ConnMan will temporarily install
415 a host route to both the ipv4.connman.net and ipv6.connman.net so that
416 the online check query can be directed via the correct network
417 interface which the connected service is using. This host route is
418 automatically removed when the online check is done. Note that the server
419 expressly does not log any connection information, including IPv4/6
420 addresses of connecting clients. The server runtime logs cycle in RAM
421 memory depending on amount of connections processed.
423 ConnMan sends this very minimal information in http header when doing
424 the online check request (example):
425 Host: ipv4.connman.net
426 User-Agent: ConnMan/1.23 wispr
429 Currently following information is returned from connman.net if
430 the connection is successful (200 OK http response code is returned):
432 Date: Mon, 09 Jun 2014 09:25:42 GMT
433 Content-Type: text/html
435 X-ConnMan-Status: online
437 The X-ConnMan-Status field is used in portal detection, if it is missing
438 ConnMan will call RequestBrowser method in net.connman.Agent dbus
439 interface to handle the portal login if the portal does not support WISPr.
440 See doc/agent-api.txt for more details.
449 For additional information about the project visit ConnMan web site:
450 https://01.org/connman
451 http://www.connman.net
453 You can report bugs at https://01.org/jira/browse/CM