
Estoy integrando un módulo wifi en una imagen de Yocto. Quiero crear un AP con él y reenviar el tráfico desde dicha interfaz pero la conexión no funciona. Puedo ver la interfaz ejecutándose 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)
Estoy creando un punto de acceso wifi con esta interfaz. Puedo ver la red wifi con mi teléfono celular y conectarme a ella (todo usando IP estática). Para verificar si la interfaz está funcionando estoy haciendo pings desde mi yocto-máquina al celular. Sin embargo no recibo respuesta.
He configurado una tercera máquina también conectada al wifi. Esta máquina está rastreando el tráfico en modo monitor con Wirehark. Sin embargo, no veo que el paquete ARP ni el ICMP salgan de la interfaz wifi.
Las tablas de enrutamiento parecen estar bien:
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
Sin embargo, el enlace parece no funcionar. Puedo ver que con ip link show
la interfaz uap0 tieneNINGUNA COMPAÑÍA
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
Al hacer ifconfig uap0 down
y luego ifconfig uap0 up
aparece este mensaje de error.
root:$~ dmesg -wH
+26.612727] IPv6: ADDRCONF(NETDEV_UP): uap0: link is not ready
¿Tiene alguna idea de por qué es posible que los pings no funcionen o qué otra prueba podría hacer para evaluar qué parte no funciona correctamente?
Información adicional que puede resultar útil:
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
Respuesta1
La razón por la que no funcionaba estaba relacionada con un cambio en la velocidad del reloj SD/MMC.
El controlador del módulo wifi inicialmente descarga el firmware a una velocidad determinada. Después de descargar el firmware, el reloj de la SD/MMC se incrementó a 200MHz. Debido a limitaciones de hardware, esto provocaba una comunicación inconsistente con el módulo.
Cambié la velocidad a 25MHz y ahora está funcionando.