@@ -42,6 +42,10 @@ def is_regex_in_file(file_name, search_pattern):
4242def 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
4751default_channel = '11'
@@ -55,6 +59,13 @@ def is_networkmanager():
5559default_min_range = 10
5660default_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
6071kernel_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