3 <title>Wifi without network manager
</title>
4 <meta http-equiv=
"Content-Type" content=
"text/html; charset=UTF-8" />
5 <meta name=
"viewport" content=
"width=device-width, initial-scale=1" />
10 With this setup,
<tt>wpa_supplicant
</tt> automatically changes network when needed.
11 Moreover, the network can be changed in userspace and new networks can be added.
12 All withouth the bloat of
<tt>NetworkManager
</tt> and
<tt>ModemManager
</tt>.
15 <h2>Requirements:
</h2>
17 <li><tt>wpa_supplicant
</tt></li>
18 <li><tt>wpa_gui
</tt></li>
21 <h2><tt>wpa_supplicant
</tt></h2>
23 <tt>/etc/network/interfaces
</tt> needs for direct use with a
<tt>wpa_supplicant
</tt> daemon.
24 This is done by setting the wireless network as follows.
29 iface wlp2s0 inet manual
30 wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
34 This basically means that a
<tt>wpa_supplicant
</tt> will be watching the networks specified in the config and switch when in range.
35 Note that the
<tt>iface
</tt> is set to
<tt>manual
</tt> and not
<tt>dhcp
</tt>.
36 This means that below those lines you can configure your networks from the config manually.
37 So say that you have a network in the
<tt>wpa_supplicant.conf
</tt> with
<tt>id_str=
"work"</tt>" that needs to be configured with dhcp, you add the following lines:
45 Setting <tt>id_str</tt>s for all networks is tedious so to create a default setting you can use the <tt>default</tt> network name to for example set all wifi networks to dhcp.
49 iface default inet dhcp
52 <h2><tt>wpa_supplicant.conf</tt></h2>
54 The config file for <tt>wpa_supplicant</tt> should at least contain the following lines.
55 The <tt>interface</tt> line defines the control socket and states that all users in the <tt>netdev</tt> group may control <tt>wpa_supplicant</tt>.
56 The <tt>update_config</tt> line states that the config file may be updated, thus having persistent changes.
57 Users you allow changing the config therefore have to be added to <tt>netdev</tt>.
61 interface=DIR=/run/wpa_supplicant GROUP=netdev
66 Followed are all the network configurations.
67 For these configuration consult the manpage for <tt>wpa_supplicant</tt>.
68 E.g. for <tt>WPA2</tt> networks you can use the <tt>wpa_passphrase</tt> tool.
69 For eduroam, don't handcraft configs either, use the configuration assistant available <a href="https://cat.eduroam.org/
">here</a>.
70 This tool will generate a <tt>wpa_supplicant.conf</tt> if it fails to talk to networkmanager.
73 <h2><tt>wpa_gui</tt></h2>
75 Editing the config file is tedious and error prone.
76 Moreover, it requires a restart of <tt>wpa_supplicant</tt> to reinistate the config.
77 Luckily there are two tools that allow you to do this in-place using either the command line (<tt>wpa_cli</tt> is not discussed here) and via a GUI(<tt>wpa_gui</tt>).
78 If your user is a member of the <tt>netdev</tt> group you can just start it up.
79 Note that it resides by default in <tt>/usr/sbin</tt>.
80 <tt>wpa_gui</tt> is a graphical frontend where you can add, remove, diagnose and change wireless networks with <em>almost</em> as much functionality as <tt>wpa_cli</tt>.
83 <h2><tt>eduroam</tt></h2>
85 Eduroam gives a nice configuration assistant tools nowadays that will generate a <tt>wpa_supplicant.conf</tt> entry for you.
86 Previously you could hash your password using md4 but I haven't tested whether this still works.
89 <h3>update: cat broken</h3>
90 The tool worked before™ but not anymore on my debian testing version.
91 Therefore I've pasted my config here for later reference.
92 You get the <tt>ca_cert</tt> from the assistant tool.
93 I might upload that here as well.
102 identity="YOURUSERNAME@ru.nl
"
103 anonymous_identity="anonymous@ru.nl
"
104 password="YOURPASSWORD
"
105 # ca_cert="/home/frobnicator/.cat_installer/ca.pem
"
106 domain_suffix_match="authenticatie.ru.nl
"
107 phase2="auth=MSCHAPV2
"
112 <h2><tt>openssl update</tt></h2>
114 The new version of openssl disables everything lower than TLSv1.2.
115 If you see errors in <tt>/var/log/syslog</tt> about <tt>TLS</tt> you have to allow lower version TLS versions by changing the last two lines in <tt>/etc/ssl/openssl.cnf</tt> to:
117 MinProtocol = TLSv1.0
118 CipherString = DEFAULT@SECLEVEL=1