Estou tentando criar um wifi ad-hoc feito de 5 computadores (um PC com Windows e 4 raspberry pi carregados com um raspbian). O Raspberry Pi falará através do mqtt, mas esse não é o ponto. O problema que tenho é que sempre preciso fazer o seguinte para ter a wlan0
interface após cada reinicialização:
sudo ifdown wlan0
sudo ifup wlan0
Você sabe por quê? Aqui está minha configuração (a mesma em cada pi, exceto o endereço IP, obviamente!)
~ % ifconfig
eth0 Link encap:Ethernet HWaddr b8:27:eb:ff:88:99
inet addr:192.168.1.41 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:951 errors:0 dropped:0 overruns:0 frame:0
TX packets:266 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:66321 (64.7 KiB) TX bytes:43663 (42.6 KiB)
wlan0 Link encap:Ethernet HWaddr 00:0f:13:51:05:8c
inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:42 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:2520 (2.4 KiB)
~ % iwconfig
wlan0 IEEE 802.11bgn ESSID:"mirroir"
Mode:Ad-Hoc Frequency:2.412 GHz Cell: 42:B1:44:EB:D2:C1
Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:on
lo no wireless extensions.
eth0 no wireless extensions.
~ % more /etc/network/interfaces
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
auto wlan0
iface wlan0 inet static
address 192.168.0.2
netmask 255.255.255.0
wireless-channel 1
wireless-essid mirroir
wireless-mode ad-hoc
wireless-key 967136deac
~ % sudo route add -net 192.168.0.0 netmask 255.255.255.0 wlan0
~ % netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default 192.168.1.254 0.0.0.0 UG 0 0 0 eth0
192.168.0.0 * 255.255.255.0 U 0 0 0 wlan0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
Qualquer ideia?
Parece funcionar, mas nem sempre – tipo 1 inicialização em cada 10, muito estranho?!
Responder1
Você já tentou uma das soluções abaixo? Tenho que adivinhar a resposta aqui porque o problema não é fácil de reproduzir, pode ser um problema com o driver que você adquiriu.
No arquivo de interfaces, tente comentar "auto wlan0" e mantenha "allow-hotplug wlan0"
#auto wlan0 allow-hotplug wlan0 iface wlan0 inet dhcp ... rest of the config ...
Provavelmente não é a solução ideal que você está procurando, mas tente criar um novo script de shell com privilégios de execução em seu diretório de scripts favorito com o seguinte conteúdo.
ifdown wlan0 ifup wlan0
Em seguida, adicione a seguinte linha ao seu arquivo de interfaces.
auto wlan0 iface wlan0 inet dhcp ... rest of the config ... post-up /path-to-your-script/script.sh
Quando o seu computador inicializa sem a conexão sem fio ativa. Tente mexer
iwconfig
com parâmetros diferentes (tente man iwconfig para obter uma lista completa) até que sua interface apareça. Eu acho que pode sertxpower
uma espécie de mudança que pode ajudá-lo aqui. Se funcionar para você, usepre-up <command-that-worked>
em seu arquivo de interfaces como na 2ª resposta e deixe o comando lá.Então, algo assim no final (lembre-se de passar caminhos absolutos para (pre|post)-up
pre-up /sbin/iwconfig wlan0 txpower on
Responder2
Exatamente o mesmo problema aqui. O problema era de tempo: o wlan0 não estava pronto quando o processo de inicialização emitiu o arquivo ifup
.
Resolvi isso adicionando uma instrução de espera pre-up sleep 5
ao wlan0 no arquivo de interfaces:
marcelo@breeze:~$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
pre-up sleep 5
address 10.0.0.42
netmask 255.255.255.0
gateway 10.0.0.2
dns-nameservers 10.0.0.2
wpa-ssid mycoolssid
wpa-psk returnguantanamo
Responder3
Talvez você queira usar redes "locais" diferentes para as interfaces eth0 e wlan0.
Então, para wlan use rede como 10.10.0.1
, máscara 255.255.255.0
E para eth use rede como 192.168.0.1
, máscara255.255.255.0
Não tive esse problema no RPI (provavelmente porque sempre mantenho os IPs das redes wlan0 e eth0 muito diferentes). Mas no meu PC com Windows eu tenho esse problema o tempo todo: quando uso wireless com 192.168.1.x
e depois conecto na porta Ethernet, por exemplo meu rasbperry com 192.168.0.x
endereço (lembre-se do terceiro octeto), sempre perco a conexão de rede.
Responder4
Remova o comentário auto eth0
ou a interface auto eth1
que auto wlan
você deseja exibir quando a unidade inicializar.