I tried connecting my system to a Wi-Fi network whose passphrase contained a special Unicode character (such as the euro symbol €). Despite typing the correct credentials, the connection request failed immediately.
In NetworkManager, the client repeatedly raised the error Secrets were required, but not provided. Digging into the system logs via journalctl, I found that the underlying backend daemon, iwd, was failing with:
Network.Connect failed: GDBus.Error:net.connman.iwd.InvalidFormat: Argument format is invalid
The iwd backend generates individual network configuration profiles stored inside /var/lib/iwd/<SSID>.psk. The daemon's config parser restricts the Passphrase key to only contain printable ASCII characters (characters between ASCII 32 and 126).
Because multi-byte UTF-8 or Unicode characters fall outside this range, the config validator flags the entry as malformed. When NetworkManager writes the plaintext passphrase directly to the configuration file, iwd refuses to parse it, resulting in the DBus InvalidFormat crash.
To work around this limitation, I bypassed storing the plaintext passphrase and generated the raw 64-character hexadecimal pre-shared key (PSK) representation instead. Hex hashes only consist of standard alphanumeric ASCII characters, making them perfectly valid in iwd configuration profiles.
Generate the Hexadecimal PSK Hash
Using the standard utility wpa_passphrase, I calculated the network hash using my SSID and the Unicode password:
wpa_passphrase "MySSID" "my_password_with_€"
# Output:
# network={
# ssid="MySSID"
# #psk="my_password_with_€"
# psk=aa10d663ebfd16d3d6009ccd6f4f3c74972848afe29672e9f51b313006b7ba04
# }
Inject the Hash into NetworkManager
I replaced the connection profile password in NetworkManager using nmcli. Passing the 64-character hex hash directly forces NetworkManager to write the value as a PreSharedKey entry inside iwd, bypassing the plaintext passphrase validator.
sudo nmcli connection modify "MySSID" wifi-sec.psk "aa10d663ebfd16d3d6009ccd6f4f3c74972848afe29672e9f51b313006b7ba04"
Reload Connections and Activate the Link
I reloaded the profiles and triggered connection activation:
sudo nmcli connection reload
nmcli connection up "MySSID"