1

My MacBook Pro is booted into Internet Recovery Ventura. However no WiFi access points in the area appear in the WiFi list. I also cannot manually enter my WiFi SSID because my WiFi SSID consists of two emoji, and the recovery environment doesn’t offer a way to input emoji.

How can I instead connect to the WiFi using the BSSID in the terminal?

3
  • 1
    Why does the SSIS contain emojis? According to Cisco naming conventions - The SSID can be any alphanumeric, case-sensitive entry from 2 to 32 characters. The printable characters plus the space (ASCII 0x20) are allowed, but these six characters are not: ?, ", $, [, \, ], and +. If you can, rename the SSID to follow the accepted naming conventions.
    – IconDaemon
    Commented Mar 11, 2023 at 14:38
  • Why not create a guest SSID temporarily and connect to that? This seems an awfully complex configuration for what I assume to be an attempt at WiFi security
    – Allan
    Commented Mar 11, 2023 at 14:45
  • Thank you! According to §9.4.2.2 (SSID element) of the IEEE Std 802.11‐2020, a valid SSID is any binary sequence of 32 octets. An optional flag can indicate the binary sequence is UTF-8 encoded. Emoji in the SSID would have no material impact on the security of the network.
    – deed02392
    Commented Mar 11, 2023 at 15:43

1 Answer 1

1

It turned out the missing list of Wi-Fi networks in macOS recovery mode (recoveryOS) was a temporary bug in recoveryOS, that has since been fixed. However, the other part of my question was still a challenge due to Emoji and the potential for there to be clashing Emoji network names with neighbours, and I found a solution to this part that I wanted to share.

If your wireless network SSID has Emoji in it, they will not be rendered in recoveryOS, because the necessary fonts are missing. However, it is still possible to join these networks by using the command-line.

As I mentioned in my comment above, SSIDs can be any binary sequence and are typically treated (or declared) as UTF-8 encoded. Therefore, you need to provide the UTF-8 encoding of your Emoji-containing network name to the command-line utility airportd, available on recoveryOS. If you don't already know this, it can be tricky to determine, so an easy way is to first attempt to scan for it (this won't work if your network name is hidden, in which case you will need to ):

# /usr/libexec/airportd scan | less -S

The output will be all the local wireless networks, one per line. If there are multiple Emoji network results of the same length as yours, you might be able to identify your own by the BSSID, which should be printed on your wireless access point.

�� - ssid=f09f949df09fa587, shortSSID=4230860103, bssid=2c:... security=wpa2-personal

Note the security property and match it to one of open,wep,wpa,wpa2,wpa3.

Then, take the SSID value (not the shortSSID value) of your access point and create a command in the following format:

/usr/libexec/airportd assoc --ssid $(echo -n 'f09f949df09fa587' | perl -e 'print pack "H*", <STDIN>') --security wpa2 --password '4tj89tAJ32of9D1pF'

Note that the value in the single quotes following echo -n is the value of our SSID (i.e. the UTF-8 encoded form of our Emoji SSID), the security profile is a shortened form of wpa2-personal and the password is your wireless network's password. After a few seconds, the command will output:

Successfully associated to network

And you should now be able to use your network in recoveryOS.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .