
Estou integrando um módulo wifi em uma imagem Yocto. Quero criar um AP com ele e encaminhar o tráfego dessa interface mas a conexão não está funcionando. Consigo ver a interface em execução ifconfig
.
uap0 Link encap:Ethernet HWaddr cc:f9:57:e0:15:81
inet addr:192.168.33.1 Bcast:192.168.33.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Estou criando um hotspot wifi com esta interface. Consigo ver a rede wifi com meu celular e conectar-me a ela (tudo usando IP estático). Para verificar se a interface está funcionando estou fazendo pings da minha yocto-machine para o celular. No entanto, não estou obtendo resposta.
Eu configurei uma terceira máquina também conectada ao wifi. Esta máquina está farejando o tráfego no modo monitor com o wireshark. Porém não vejo o ARP nem o pacote ICMP saindo da interface wifi.
As tabelas de roteamento parecem boas:
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.13.229.156 0.0.0.0 UG 0 0 0 inm0
192.168.32.0 0.0.0.0 255.255.255.0 U 0 0 0 usb0
192.168.33.0 0.0.0.0 255.255.255.0 U 0 0 0 uap0
192.168.201.0 0.0.0.0 255.255.255.0 U 0 0 0 usb0.1
No entanto, o link parece não estar funcionando. Posso ver que com ip link show
a interface uap0 temSEM PORTADORA
ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default
link/sit 0.0.0.0 brd 0.0.0.0
3: inm0: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 1000
link/ether 00:49:4e:4d:30:00 brd ff:ff:ff:ff:ff:ff
4: inm1: <BROADCAST,MULTICAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
...
...
15: usb0.4@usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
link/ether d4:ca:6e:f2:00:01 brd ff:ff:ff:ff:ff:ff
16: mlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether cc:f9:57:e0:14:81 brd ff:ff:ff:ff:ff:ff
17: uap0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
link/ether cc:f9:57:e0:15:81 brd ff:ff:ff:ff:ff:ff
Fazer ifconfig uap0 down
e então ifconfig uap0 up
gera esta mensagem de erro.
root:$~ dmesg -wH
+26.612727] IPv6: ADDRCONF(NETDEV_UP): uap0: link is not ready
Você tem alguma ideia de por que os pings podem não estar funcionando ou que outro teste eu poderia fazer para avaliar qual parte não está funcionando corretamente?
Informações adicionais que podem ser úteis:
ethtool -i uap0
driver: wlan_sdio
version: 3.14.55-yocto-standard
firmware-version: N/A
bus-info: mmc1:0001:1
supports-statistics: no
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no
Responder1
A razão para não funcionar estava relacionada a uma mudança na velocidade do clock SD/MMC.
O driver do módulo wifi inicialmente baixa o firmware a uma determinada velocidade. Após o download do firmware, o clock do SD/MMC foi aumentado para 200MHz. Devido à limitação de hardware, isso estava causando comunicação inconsistente com o módulo.
Mudei a velocidade para 25MHz e agora está funcionando.