
Я интегрирую модуль Wi-Fi в образ Yocto. Я хочу создать с ним точку доступа и пересылать трафик с такого интерфейса, но соединение не работает. Я вижу, что интерфейс работает 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)
Я создаю точку доступа Wi-Fi с этим интерфейсом. Я могу видеть сеть Wi-Fi с моего мобильного телефона и подключаться к ней (все с использованием статического IP). Чтобы проверить, работает ли интерфейс, я отправляю пинги с моего yocto-machine на мобильный телефон. Однако я не получаю ответа.
Я настроил 3-ю машину, также подключенную к Wi-Fi. Эта машина прослушивает трафик в режиме монитора с помощью Wireshark. Однако я не вижу ни ARP, ни ICMP-пакетов, покидающих интерфейс Wi-Fi.
Таблицы маршрутизации кажутся хорошими:
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
Однако, ссылка, похоже, не работает. Я вижу, что с ip link show
интерфейсом uap0 естьНЕТ-НОСИТЕЛЯ
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
Выполнение ifconfig uap0 down
и затем ifconfig uap0 up
приводит к появлению этого сообщения об ошибке.
root:$~ dmesg -wH
+26.612727] IPv6: ADDRCONF(NETDEV_UP): uap0: link is not ready
Есть ли у вас какие-либо соображения о том, почему пинги могут не работать или какой еще тест я могу провести, чтобы оценить, какая часть работает неправильно?
Дополнительная информация, которая может быть полезна:
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
решение1
Причина, по которой это не работало, была связана с изменением скорости тактовой частоты SD/MMC.
Драйвер модуля Wi-Fi изначально загружает прошивку на определенной скорости. После загрузки прошивки частота SD/MMC была увеличена до 200 МГц. Из-за аппаратных ограничений это вызывало нестабильную связь с модулем.
Я изменил скорость на 25 МГц, и теперь все работает.