Skip to content

Commit 3e7e0cb

Browse files
committed
Add code to workaround bug with wifi protocol on RPi3B
- See https://github.com/moodlebox/moodlebox/issues/319.
1 parent 095811b commit 3e7e0cb

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

bin/changewifisettings.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ def is_regex_in_file(file_name, search_pattern):
4242
def is_networkmanager():
4343
return subprocess.run(['systemctl', '-q', 'is-active', 'NetworkManager']).returncode == 0
4444

45+
def is_pi3():
46+
"""True if this is a Pi 3 B (not Plus!)."""
47+
return "Pi 3 Model B Rev" in open('/proc/device-tree/model').read()
48+
4549
# Default access point settings.
4650

4751
default_channel = '11'
@@ -55,6 +59,13 @@ def is_networkmanager():
5559
default_min_range = 10
5660
default_max_range = 254
5761

62+
# Workaround a bug with WPA2 protocol on RPi3B.
63+
# See https://github.com/moodlebox/moodlebox/issues/319.
64+
if is_pi3():
65+
proto = 'rsn,wpa'
66+
else:
67+
proto = 'rsn'
68+
5869
# Path of various config files.
5970

6071
kernel_cmdline_file = "/boot/firmware/cmdline.txt"
@@ -213,7 +224,7 @@ def do_password_protected():
213224
subprocess.run(['sudo', 'nmcli', 'con', 'mod', 'WifiAP', 'wifi-sec.psk', new_password])
214225
subprocess.run(['sudo', 'nmcli', 'con', 'mod', 'WifiAP', 'wifi-sec.group', 'ccmp'])
215226
subprocess.run(['sudo', 'nmcli', 'con', 'mod', 'WifiAP', 'wifi-sec.pairwise', 'ccmp'])
216-
subprocess.run(['sudo', 'nmcli', 'con', 'mod', 'WifiAP', 'wifi-sec.proto', 'rsn'])
227+
subprocess.run(['sudo', 'nmcli', 'con', 'mod', 'WifiAP', 'wifi-sec.proto', proto])
217228
else:
218229
# Set parameters adequately in hostapd config file.
219230
if not password_protected and is_currently_protected:
@@ -244,7 +255,7 @@ def do_password():
244255
subprocess.run(['sudo', 'nmcli', 'con', 'mod', 'WifiAP', 'wifi-sec.psk', new_password])
245256
subprocess.run(['sudo', 'nmcli', 'con', 'mod', 'WifiAP', 'wifi-sec.group', 'ccmp'])
246257
subprocess.run(['sudo', 'nmcli', 'con', 'mod', 'WifiAP', 'wifi-sec.pairwise', 'ccmp'])
247-
subprocess.run(['sudo', 'nmcli', 'con', 'mod', 'WifiAP', 'wifi-sec.proto', 'rsn'])
258+
subprocess.run(['sudo', 'nmcli', 'con', 'mod', 'WifiAP', 'wifi-sec.proto', proto])
248259
else:
249260
# Set password in hostapd config file.
250261
file_replace_line(hostapd_conf_file, '^wpa_passphrase=.*$', 'wpa_passphrase=' + new_password)

0 commit comments

Comments
 (0)