IPhone yang lebih baru akan menyiarkan SSID dalam mode hotspot seperti itu:
My Name\342\\\200\\\231\\s iPhone
Saya mengamati SSID ini di GUI.
Ketika saya mengambil SSID melalui baris perintah:
$ sudo iwlist wlan0 scan | grep ESSID
> My Name\xE52\x80\x99s iPhone
Di iPhone itu muncul sebagai:
My Name's iPhone
Jika, di wpa_supplicant.conf, saya masukkan:
network={
ssid="My Name's iPhone"
psk="my_passcode"
}
Raspberry Pi tidak akan terhubung ke hotspot iPhone.
Namun, jika, dalam wpa_supplicant.conf
, saya masukkan:
network={
ssid="My Name\342\\\200\\\231\s iPhone"
psk="my_passcode"
}
Saya mendapatkan kesalahan di baris perintah.
$ sudo ifdown wlan0
$ sudo ifup wlan0
> wpa_supplicant: /sbin/wpa_supplicant daemon failed to start
> run-parts: /etc/network/if-pre-up/wpasupplicant exited with return code 1
> Failed to bring up wlan0
Melalui GUI, saya mendapatkan kesalahan "Argumen tidak valid".
Jika, di wpa_supplicant.conf
saya masukkan:
network={
ssid="My Name\xE52\x80\x99s iPhone"
psk="my_passcode"
}
Maka raspbian tidak akan terhubung ke sana, dan akan terhubung ke jaringan dengan prioritas lebih rendah (anggap saya memiliki prioritas yang ditetapkan dengan benar, yang telah saya uji).
SSID
di iPhone? Saya tidak ingin semua orang melihat "Joe Bloggs iPhone" dan mengatur yang masuk akalSSID
.SSID
? '\' Adalah karakter pelarian NIX yang normal. Saya kira ini berasal dari Unicode (mungkin U + 2019)\xE52\x80\x99
.Jawaban:
Prompt iPhone menyertakan karakter Unicode U + 2019 "tanda kutip kanan tunggal". Ini valid (jika sangat merepotkan).
Cukup mudah untuk memasukkan karakter Unicode dalam string. Berikut ini akan mengulangi ini pada
bash
command prompt.Dokumentasi (sangat samar)
man wpa_supplicant.conf
tampaknya tidak menentukan bagaimanassid
parameter ditafsirkan. Anda dapat mencoba formulir di atas$'My Name\u2019s iPhone'
dan melihat apakah itu membantu.CATATAN String
"My Name\xE52\x80\x99s iPhone"
dalam pertanyaan Anda bukan Unicode yang valid (ada karakter berlebih5
) tetapi MUNGKIN ini berfungsi jika Anda memperbaikinya.sumber
Saya telah melihat bagaimana wpa_supplicant mem-parsing file konfigurasi, dan sepertinya mengekstrak byte yang tepat antara
ssid="
dan yang terakhir"
. Unicode lolos (\ u) dan lolos karakter non-ascii (\ x) tidak akan berfungsi.Dalam kasus Anda, Anda harus menentukan SSID Anda seperti ini:
Yang akan terlihat seperti ini di hex editor:
Jika Anda menggunakan keluaran dari
iw
(yang lolos dari karakter non-ascii), Anda dapat menggunakan Python untuk menafsirkan dan menulis byte yang tepat ke file:Catatan bahwa jika Anda ingin terhubung ke jalur akses dengan SSID
A so called "SSID"
itu akan bekerja untuk memasukkannya seperti ini:ssid="A so called "SSID""
. Ini karena wpa_supplicant akan mencari byte antara kutipan pertama dan terakhir pada sebuah baris.Satu batasan yang saya temukan adalah bahwa wpa_supplicant.conf tidak akan menerima karakter baris baru (0x0A) dalam SSID, meskipun secara teknis dimungkinkan.
sumber
ssid="\U0001F4A9"
dan kemudian saya menulisnya denganfile.write(ssid.encode("UTF-8"))
. Bacassid
file denganxxd
dan menyalin byte tanpa spasi. Baris di konfigurasi saya sekarang terbacassid=f09f92a9
.Anda dapat mengambil ssid, dalam hal ini "My Name's iPhone" (tanpa tanda kutip), dan mengonversi menjadi hex menggunakan https://www.browserling.com/tools/text-to-hex .
Ambil hasilnya, dalam hal ini 4d 79 20 4e 61 6d 65 e2 80 99 73 20 69 50 68 6f 6e 65 dan hapus spasi.
Atau dalam bash
Perbarui /etc/wpa_supplicant/wpa_supplicant.conf:
Kemudian keluar dari editor, dan di terminal:
Jika Anda tidak memiliki kesalahan, cobalah untuk terhubung. Harus bekerja Pastikan nilai hex ssid Anda TIDAK dalam kutipan, dan tidak mengandung spasi.
Bersulang!
sumber
Anda harus mengganti nama iPhone Anda untuk menghapus spasi ... ini dapat dilakukan di Pengaturan> Umum> Tentang.
Setelah Anda memilih nama tanpa spasi, Anda akan dapat terhubung ke hot spot bukan masalah.
sumber