
Ich integriere ein WLAN-Modul in ein Yocto-Image. Ich möchte damit einen AP erstellen und den Datenverkehr von dieser Schnittstelle weiterleiten, aber die Verbindung funktioniert nicht. Ich kann sehen, dass die Schnittstelle läuft 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)
Ich erstelle mit dieser Schnittstelle einen WLAN-Hotspot. Ich kann das WLAN-Netzwerk mit meinem Mobiltelefon sehen und mich damit verbinden (alles mit statischer IP). Um zu überprüfen, ob die Schnittstelle funktioniert, sende ich von meiner Yocto-Maschine Pings an das Mobiltelefon. Ich erhalte jedoch keine Antwort.
Ich habe eine dritte Maschine eingerichtet, die ebenfalls mit dem WLAN verbunden ist. Diese Maschine überwacht den Datenverkehr im Monitormodus mit Wireshark. Ich sehe jedoch weder das ARP- noch das ICMP-Paket, das die WLAN-Schnittstelle verlässt.
Routing-Tabellen scheinen in Ordnung zu sein:
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
Allerdings scheint der Link nicht zu funktionieren. Ich kann sehen, dass mit ip link show
der uap0-SchnittstelleKEIN TRÄGER
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
Wenn Sie dies tun ifconfig uap0 up
, wird diese Fehlermeldung angezeigt.
root:$~ dmesg -wH
+26.612727] IPv6: ADDRCONF(NETDEV_UP): uap0: link is not ready
Haben Sie eine Idee, warum die Pings möglicherweise nicht funktionieren, oder welchen anderen Test ich durchführen könnte, um festzustellen, welcher Teil nicht richtig funktioniert?
Zusätzliche Informationen, die hilfreich sein können:
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
Antwort1
Der Grund dafür, dass es nicht funktionierte, lag in einer Geschwindigkeitsänderung des SD/MMC-Takts.
Der Treiber des WLAN-Moduls lädt die Firmware zunächst mit einer bestimmten Geschwindigkeit herunter. Nachdem die Firmware heruntergeladen wurde, wurde der Takt der SD/MMC auf 200 MHz erhöht. Aufgrund von Hardwarebeschränkungen führte dies zu einer inkonsistenten Kommunikation mit dem Modul.
Ich habe die Geschwindigkeit auf 25 MHz geändert und jetzt funktioniert es.