diff --git a/python_payload/apps/w1f1/__init__.py b/python_payload/apps/w1f1/__init__.py
index f0ed92b1fc73aaf1f316fe50cf5ea02505f16c96..1865aec4f990a63fea43d925cc061af8e86dee6a 100644
--- a/python_payload/apps/w1f1/__init__.py
+++ b/python_payload/apps/w1f1/__init__.py
@@ -9,7 +9,12 @@ import os
 import json
 import math
 from .k3yboard import TextInputModel, KeyboardView
-from .helpers import sd_card_plugged, set_direction_leds, copy_across_devices
+from .helpers import (
+    sd_card_plugged,
+    set_direction_leds,
+    copy_across_devices,
+    mark_unknown_characters,
+)
 
 
 class WifiApp(Application):
@@ -30,21 +35,13 @@ class WifiApp(Application):
         self._waiting_for_password = False
         self._password_model = TextInputModel("")
 
-        # Use config on SD card whenever possible
-        if sd_card_plugged():
-            # Move config to SD card from flash if we don't have one on SD card
-            if not os.path.exists(self.WIFI_CONFIG_FILE_SD) and os.path.exists(
-                self.WIFI_CONFIG_FILE
-            ):
-                copy_across_devices(self.WIFI_CONFIG_FILE, self.WIFI_CONFIG_FILE_SD)
-
-            # if we have both sd and flash config, remove flash config
-            if os.path.exists(self.WIFI_CONFIG_FILE_SD) and os.path.exists(
-                self.WIFI_CONFIG_FILE
-            ):
-                os.remove(self.WIFI_CONFIG_FILE)
-
-            self.WIFI_CONFIG_FILE = self.WIFI_CONFIG_FILE_SD
+        # Copy config to flash from SD card if we don't have one on flash
+        if (
+            sd_card_plugged()
+            and os.path.exists(self.WIFI_CONFIG_FILE_SD)
+            and not os.path.exists(self.WIFI_CONFIG_FILE)
+        ):
+            copy_across_devices(self.WIFI_CONFIG_FILE_SD, self.WIFI_CONFIG_FILE)
 
         if os.path.exists(self.WIFI_CONFIG_FILE):
             with open(self.WIFI_CONFIG_FILE) as f:
@@ -57,8 +54,7 @@ class WifiApp(Application):
                     "Camp2023-open": {"psk": None},
                 },
             }
-            with open(self.WIFI_CONFIG_FILE, "w") as f:
-                json.dump(self._wifi_config, f)
+            self.save_config_json()
 
     def on_enter(self, vm: Optional[ViewManager]) -> None:
         super().on_enter(vm)
@@ -72,7 +68,6 @@ class WifiApp(Application):
     def draw(self, ctx: Context) -> None:
         ctx.text_align = ctx.CENTER
         ctx.text_baseline = ctx.MIDDLE
-        ctx.font = ctx.get_font_name(8)
 
         ctx.rgb(0, 0, 0).rectangle(-120, -90, 240, 180).fill()
         ctx.rgb(0.2, 0.2, 0.2).rectangle(-120, -120, 240, 30).fill()
@@ -83,11 +78,12 @@ class WifiApp(Application):
 
         ctx.save()
         ctx.rgb(1, 1, 1)
+        ctx.font = "Arimo Bold"
         if self._iface.active():
             ctx.rgb(0, 1, 0)
         else:
             ctx.rgb(1, 0, 0)
-        ctx.move_to(0, -105)
+        ctx.move_to(0, -110)
         ctx.text("^")
         ctx.move_to(0, -100)
         ctx.text("toggle wlan")
@@ -100,16 +96,17 @@ class WifiApp(Application):
         wlan_draw_offset = self._wlan_offset * -20
 
         for wlan in self._nearby_wlans:
-            ssid = wlan[0].decode()
+            base_ssid = wlan[0].decode()
+            ssid = wlan[-1]
             if (
-                ssid == current_ssid
+                base_ssid == current_ssid
                 and self._iface.active()
                 and self._iface.isconnected()
             ):
                 ctx.rgb(0, 1, 0)
-            elif ssid == self._is_connecting:
+            elif base_ssid == self._is_connecting:
                 ctx.rgb(0, 0, 1)
-            elif ssid in self._wifi_config["networks"]:
+            elif base_ssid in self._wifi_config["networks"]:
                 ctx.rgb(1, 1, 0)
             else:
                 ctx.rgb(1, 1, 1)
@@ -120,6 +117,7 @@ class WifiApp(Application):
             selected = self._nearby_wlans[self._wlan_offset] == wlan
             open_network = wlan[4] == 0
 
+            ctx.font = "Arimo Bold" if selected else "Arimo Regular"
             ctx.font_size = 25 if selected else 15
             ssid_width = ctx.text_width(ssid)
 
@@ -129,7 +127,7 @@ class WifiApp(Application):
                 if ssid_width > max_width:
                     xpos = math.sin(self._scroll_pos) * (ssid_width - max_width) / 2
                     if not open_network:
-                        xpos -= 10
+                        xpos -= 7
 
             ctx.move_to(xpos, wlan_draw_offset)
             ctx.text(ssid)
@@ -142,7 +140,7 @@ class WifiApp(Application):
                 ctx.save()
                 ctx.font = "Material Icons"
                 ctx.text_align = ctx.LEFT
-                ctx.move_to(xpos + (ssid_width / 2) + 5, wlan_draw_offset + 2)
+                ctx.move_to(xpos + (ssid_width / 2) + 2, wlan_draw_offset + 2)
                 ctx.text("\ue897")
                 ctx.restore()
 
@@ -168,10 +166,15 @@ class WifiApp(Application):
             if wlan[5] or not wlan[0].strip():
                 continue
 
-            if wlan[0].decode() in self._wifi_config["networks"]:
-                known_wlans.append(wlan)
+            wlan_list = list(wlan)
+            base_ssid = wlan[0].decode()
+            clean_ssid = mark_unknown_characters(base_ssid).strip()
+            wlan_list.append(clean_ssid)
+
+            if base_ssid in self._wifi_config["networks"]:
+                known_wlans.append(wlan_list)
             else:
-                unknown_wlans.append(wlan)
+                unknown_wlans.append(wlan_list)
 
         # sort by signal strength
         known_wlans.sort(key=lambda wlan: wlan[3], reverse=True)
@@ -203,12 +206,23 @@ class WifiApp(Application):
         with open(self.SETTINGS_JSON_FILE, "w") as f:
             json.dump(settings_json, f)
 
-    def add_to_config_json(self, ssid: str, psk: str) -> None:
+    def add_wlan_to_config_json(self, ssid: str, psk: str) -> None:
         self._wifi_config["networks"][ssid] = {"psk": psk}
+        self.save_config_json()
 
+    def save_config_json(self) -> None:
         with open(self.WIFI_CONFIG_FILE, "w") as f:
             json.dump(self._wifi_config, f)
 
+        if sd_card_plugged():
+            try:
+                if os.path.exists(self.WIFI_CONFIG_FILE_SD):
+                    os.remove(self.WIFI_CONFIG_FILE_SD)
+
+                copy_across_devices(self.WIFI_CONFIG_FILE, self.WIFI_CONFIG_FILE_SD)
+            except OSError as e:
+                print("SD issue:", str(e), ":(")
+
     def connect_wifi(self, ssid: str, psk: str = None) -> None:
         if ssid in self._wifi_config["networks"]:
             psk = self._wifi_config["networks"][ssid]["psk"]
@@ -307,7 +321,9 @@ class WifiApp(Application):
                 if self._current_ssid:
                     self.update_settings_json(self._current_ssid, self._current_psk)
                     if self._current_ssid not in self._wifi_config["networks"]:
-                        self.add_to_config_json(self._current_ssid, self._current_psk)
+                        self.add_wlan_to_config_json(
+                            self._current_ssid, self._current_psk
+                        )
             elif self._connection_timer <= 0:
                 self._iface.disconnect()
                 self._status_text = "conn timed out"
diff --git a/python_payload/apps/w1f1/flow3r.toml b/python_payload/apps/w1f1/flow3r.toml
index c02744b5d40a5648ffc5d3c56c995b82c6dd8948..4855325ed5ac570d8595dccb8311608dfa6313c9 100644
--- a/python_payload/apps/w1f1/flow3r.toml
+++ b/python_payload/apps/w1f1/flow3r.toml
@@ -10,4 +10,4 @@ author = "ave"
 license = "LGPL-3.0-only"
 url = "https://git.flow3r.garden/flow3r/flow3r-firmware"
 description = "Lets you use multiple wireless networks."
-version = 6
+version = 7
diff --git a/python_payload/apps/w1f1/helpers.py b/python_payload/apps/w1f1/helpers.py
index 39f1fe8c441c2a674edfed0c3701b949f84ee137..1884dd1954acf7032d2162c36fca1f4700f254d2 100644
--- a/python_payload/apps/w1f1/helpers.py
+++ b/python_payload/apps/w1f1/helpers.py
@@ -28,3 +28,11 @@ def set_direction_leds(direction, r, g, b):
         leds.set_rgb((direction * 4) - 1, r, g, b)
     leds.set_rgb(direction * 4, r, g, b)
     leds.set_rgb((direction * 4) + 1, r, g, b)
+
+
+def mark_unknown_characters(text: str) -> str:
+    glyph_index = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿŁπ“”•…€™←↑→↓−≈▼♠♣♥♦fiflffiffl"
+    result_text = ""
+    for char in text:
+        result_text += char if char in glyph_index else "?"
+    return result_text