Os iPhones mais novos transmitirão um SSID no modo de hotspot, como:
My Name\342\\\200\\\231\\s iPhone
Eu observei esse SSID na GUI.
Quando eu pego o SSID através da linha de comando:
$ sudo iwlist wlan0 scan | grep ESSID
> My Name\xE52\x80\x99s iPhone
No iPhone, ele aparece como:
My Name's iPhone
Se, em wpa_supplicant.conf, eu inserir:
network={
ssid="My Name's iPhone"
psk="my_passcode"
}
O Raspberry Pi não se conecta ao ponto de acesso do iPhone.
No entanto, se, em wpa_supplicant.conf
, eu inserir:
network={
ssid="My Name\342\\\200\\\231\s iPhone"
psk="my_passcode"
}
Eu recebo um erro na linha de comando.
$ 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
Via GUI, recebo o erro "Argumento inválido".
Se wpa_supplicant.conf
eu entrar:
network={
ssid="My Name\xE52\x80\x99s iPhone"
psk="my_passcode"
}
O raspbian não se conectará a ele e se conectará a uma rede de prioridade mais baixa (suponha que eu tenha as prioridades definidas corretamente e que testei).
SSID
o iPhone? Não quero que todos vejam o "Joe Bloggs iPhone" de qualquer maneira e definam um sentidoSSID
.SSID
? O '\' é um caractere de escape normal do NIX. Eu acho que este derivado de Unicode (talvez U + 2019)\xE52\x80\x99
.Respostas:
O prompt do iPhone inclui o caractere Unicode U + 2019 "aspas simples à direita". Isso é válido (se for muito inconveniente).
É fácil incluir caracteres Unicode em seqüências de caracteres. O seguinte ecoaria isso no
bash
prompt de comando.A documentação (muito superficial) de
man wpa_supplicant.conf
não parece especificar como ossid
parâmetro é interpretado. Você pode tentar o formulário acima$'My Name\u2019s iPhone'
e ver se isso ajuda.NOTA A string
"My Name\xE52\x80\x99s iPhone"
da sua pergunta não é Unicode válida (existe um caractere em excesso5
), mas PODE funcionar se você a corrigir.fonte
Eu observei como o wpa_supplicant analisa o arquivo de configuração e parece que ele extrai os bytes exatos entre
ssid="
o último e o último"
. Unicode com escape (\ u) e caracteres não-ascii com escape (\ x) não funcionarão.No seu caso, você teria que especificar seu SSID assim:
O que ficaria assim em um editor hexadecimal:
Se você estiver usando a saída de
iw
(que escapa caracteres não-ascii), poderá usar o Python para interpretar e gravar os bytes exatos em um arquivo:Note que se você quiser se conectar a um ponto de acesso com o SSID
A so called "SSID"
ele vai trabalhar para inseri-lo como este:ssid="A so called "SSID""
. Isso ocorre porque o wpa_supplicant procurará os bytes entre a primeira e a última cotação em uma linha.Uma limitação que encontrei é que o wpa_supplicant.conf não aceita caracteres de nova linha (0x0A) no SSID, mesmo que tecnicamente seja possível.
fonte
ssid="\U0001F4A9"
e depois o escrevi comfile.write(ssid.encode("UTF-8"))
. Leia ossid
arquivoxxd
e copie os bytes sem espaços. A linha na minha configuração agora lêssid=f09f92a9
.Você pode pegar o ssid, neste caso "iPhone do meu nome" (sem as aspas), e converter em hexadecimal usando https://www.browserling.com/tools/text-to-hex .
Tome o resultado, neste caso, 4d 79 20 4e 61 6d 65 e2 80 99 73 20 69 50 68 6f 6e 65 e remova os espaços.
Ou na festança
Atualize o /etc/wpa_supplicant/wpa_supplicant.conf:
Então saia do editor e no terminal:
Se você não tiver erros, tente conectar-se. Deveria trabalhar. Apenas verifique se o valor hexadecimal do ssid NÃO está entre aspas e não contém espaços.
Felicidades!
fonte
Você precisa renomear o iPhone para remover qualquer espaço ... isso pode ser feito em Configurações> Geral> Sobre.
Depois de escolher um nome sem espaços, você poderá se conectar a um hot spot, sem problemas.
fonte