pi3 类似设备上的 WLan0 连接[yocto]
WLan0 connection on pi3 similar device[yocto]
我有一个基于此 tutorial 的 Yocto-Box。一切都很好,除了 Wifi。我无法获得 wlan0
界面 运行。我不明白为什么它有问题!
这是我所做的:
root@MYONE:~# ifconfig
eth0 Link encap:Ethernet HWaddr 74:FE:48:3A:55:AB
inet addr:192.168.178.88 Bcast:192.168.178.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)
eth1 Link encap:Ethernet HWaddr 74:FE:48:3A:55:AC
inet addr:192.168.178.89 Bcast:192.168.178.255 Mask:255.255.255.0
inet6 addr: fe80::76fe:48ff:fe3a:55ac%4804152/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4965 errors:0 dropped:0 overruns:0 frame:0
TX packets:8457 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:279140 (272.5 KiB) TX bytes:3066125 (2.9 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1%4804152/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:169 errors:0 dropped:0 overruns:0 frame:0
TX packets:169 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:12859 (12.5 KiB) TX bytes:12859 (12.5 KiB)
wlan0 Link encap:Ethernet HWaddr 02:00:EA:FF:D2:06
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)
这是 wpa_supplicant.conf 文件:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
update_config=1
network={
ssid="FRITZ!Box 7630 MO"
psk="42483903143454867118"
key_mgmt=WPA-PSK
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
auth_alg=OPEN
}
数据与另一个通过 Wifi 连接的 pi3 相似!
当我查看日志文件时,我得到的是:
ifconfig: SIOCGIFFLAGS: No such device
Successfully initialized wpa_supplicant
Line 1: unknown global field 'Passphrase must be 8..63 characters'.
Line 1: Invalid configuration line 'Passphrase must be 8..63 characters'.
Failed to read or parse configuration '/usr/customized/infrastructure/rootfs/config/wpa.conf'.
udhcpc (v1.24.1) started
Sending discover...
Sending discover...
Sending discover...
No lease, forking to background
有没有人知道如何解决这个问题!
更新
感谢@dagelf 的回答,这是 iwconfig
的输出
root@MYONE:~# iwconfig
sit0 no wireless extensions.
lo no wireless extensions.
wlan0 IEEE 802.11abgn ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
eth1 no wireless extensions.
eth0 no wireless extensions.
root@MYONE:~# lsmod
Module Size Used by
bnep 19037 2
wcn36xx 71132 0
venus 66686 0
videobuf2_dma_sg 13896 1 venus
v4l2_mem2mem 16221 1 venus
tpm_spi_tis 4055 0
tpm 50326 1 tpm_spi_tis
smsc75xx 38940 0
root@MYONE:~#
如您所见,已检测到接口!
提前致谢!
wpa_supplicant.conf 文件中唯一需要的是要连接的网络的详细信息。您可以创建一个新文件:
wpa_passphrase Mywifinetwork > /usr/customized/infrastructure/rootfs/config/wpa.conf
*type in passphrase for Mywifinetwork and then enter*
您收到的错误消息说您的密码不够长。事实上,这可能是唯一错误的地方......
进一步提到上面的 wpa.conf 文件 - 所以我认为它没有使用您拥有的 wpa_supplicant.conf 文件。您可以省略 > 中的所有内容,它只会将其回显到控制台,然后您可以将其复制并粘贴到 wpa.conf 文件中。另外,我看到你有两次 KEY_MGMT 子句,开头有一些空格 - 它可能不喜欢 - 如果它实际上正在使用该文件。当你设置它时,我怀疑某处有错字。
您可以测试 wpa_supplicant.conf 文件 - 并手动连接:
ifconfig wlan0 up
wpa_supplicant -Dnl80211 -iwlan0 -c/usr/customized/infrastructure/rootfs/config/wpa.conf
这应该可以将您连接到无线网络。然后,在另一个终端window,你需要从网络获取一个IP地址:
dhclient -d -i wlan0
那么您应该已连接。但也有一些程序,如 NetworkManager,试图在后台自动执行此操作,并且会干扰此过程,因此最好使用系统的首选配置方法。
只有在加载无线驱动程序时才会显示无线界面。越来越难找到没有无线驱动程序的设备...但通常您可以为这些设备使用 USB 无线适配器。
无线设备也可以称为"eth0"或"eth1"。一个简单的判断方法是 运行 命令:
iwconfig
它只显示无线设备。
你也可以试试
iw dev
如果这些命令都不存在,您可以查看引导日志以获取线索,例如:
dmesg | grep -i wireless
或
grep -i wireless /var/log/messages
或
grep -i wireless /var/log/syslog
或
lsmod
您可以在哪里查看是否可以找到为您的无线设备加载的模块。
要查看系统上所有可用的模块,您可以查看 /usr/src/linux*/drivers/net/wireless,例如
find /usr/src/linux*/drivers/net/wireless
或
echo `for a in /usr/src/linux*; do (cd $a/drivers/net/wireless; for b in */*; do echo $b; done); done|egrep -v '(Makefile|Kconfig)'|cut -d\/ -f2|sort|uniq`
在极少数情况下,您需要通过加载驱动程序来手动启用您的设备,例如:
modprobe -v ath10k
(-v 只是为了显示更多细节,但你也可以在后面 "dmesg"。如果没有 "dmesg" 命令,你也可以:)
cat /dev/kmsg
有时无线驱动程序或设备会崩溃,在这种情况下,您无需重启即可修复它们:
rmmod iwlmvm
modprobe iwlmvm
(这是一些经常让我崩溃的英特尔设备的驱动程序。)
我希望您已经了解 Linux 的重要基石之一!
许多更大的系统,如 Ubuntu 和 Fedora,将接口重命名为 "wlp2s0" 或 "enp5s1n2" 或 "enx908723081" 之类的东西 - 以可重复的方式 - 因为取决于内核和引导过程,如果您有 2 个相似的卡,它们有时会颠倒顺序 - 例如 eth0 曾经是 eth1,反之亦然 - 导致您的设备将错误的接口连接到错误的网络。
我有一个基于此 tutorial 的 Yocto-Box。一切都很好,除了 Wifi。我无法获得 wlan0
界面 运行。我不明白为什么它有问题!
这是我所做的:
root@MYONE:~# ifconfig
eth0 Link encap:Ethernet HWaddr 74:FE:48:3A:55:AB
inet addr:192.168.178.88 Bcast:192.168.178.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)
eth1 Link encap:Ethernet HWaddr 74:FE:48:3A:55:AC
inet addr:192.168.178.89 Bcast:192.168.178.255 Mask:255.255.255.0
inet6 addr: fe80::76fe:48ff:fe3a:55ac%4804152/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4965 errors:0 dropped:0 overruns:0 frame:0
TX packets:8457 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:279140 (272.5 KiB) TX bytes:3066125 (2.9 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1%4804152/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:169 errors:0 dropped:0 overruns:0 frame:0
TX packets:169 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:12859 (12.5 KiB) TX bytes:12859 (12.5 KiB)
wlan0 Link encap:Ethernet HWaddr 02:00:EA:FF:D2:06
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)
这是 wpa_supplicant.conf 文件:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
update_config=1
network={
ssid="FRITZ!Box 7630 MO"
psk="42483903143454867118"
key_mgmt=WPA-PSK
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
auth_alg=OPEN
}
数据与另一个通过 Wifi 连接的 pi3 相似!
当我查看日志文件时,我得到的是:
ifconfig: SIOCGIFFLAGS: No such device
Successfully initialized wpa_supplicant
Line 1: unknown global field 'Passphrase must be 8..63 characters'.
Line 1: Invalid configuration line 'Passphrase must be 8..63 characters'.
Failed to read or parse configuration '/usr/customized/infrastructure/rootfs/config/wpa.conf'.
udhcpc (v1.24.1) started
Sending discover...
Sending discover...
Sending discover...
No lease, forking to background
有没有人知道如何解决这个问题!
更新
感谢@dagelf 的回答,这是 iwconfig
root@MYONE:~# iwconfig
sit0 no wireless extensions.
lo no wireless extensions.
wlan0 IEEE 802.11abgn ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
eth1 no wireless extensions.
eth0 no wireless extensions.
root@MYONE:~# lsmod
Module Size Used by
bnep 19037 2
wcn36xx 71132 0
venus 66686 0
videobuf2_dma_sg 13896 1 venus
v4l2_mem2mem 16221 1 venus
tpm_spi_tis 4055 0
tpm 50326 1 tpm_spi_tis
smsc75xx 38940 0
root@MYONE:~#
如您所见,已检测到接口!
提前致谢!
wpa_supplicant.conf 文件中唯一需要的是要连接的网络的详细信息。您可以创建一个新文件:
wpa_passphrase Mywifinetwork > /usr/customized/infrastructure/rootfs/config/wpa.conf
*type in passphrase for Mywifinetwork and then enter*
您收到的错误消息说您的密码不够长。事实上,这可能是唯一错误的地方......
进一步提到上面的 wpa.conf 文件 - 所以我认为它没有使用您拥有的 wpa_supplicant.conf 文件。您可以省略 > 中的所有内容,它只会将其回显到控制台,然后您可以将其复制并粘贴到 wpa.conf 文件中。另外,我看到你有两次 KEY_MGMT 子句,开头有一些空格 - 它可能不喜欢 - 如果它实际上正在使用该文件。当你设置它时,我怀疑某处有错字。
您可以测试 wpa_supplicant.conf 文件 - 并手动连接:
ifconfig wlan0 up
wpa_supplicant -Dnl80211 -iwlan0 -c/usr/customized/infrastructure/rootfs/config/wpa.conf
这应该可以将您连接到无线网络。然后,在另一个终端window,你需要从网络获取一个IP地址:
dhclient -d -i wlan0
那么您应该已连接。但也有一些程序,如 NetworkManager,试图在后台自动执行此操作,并且会干扰此过程,因此最好使用系统的首选配置方法。
只有在加载无线驱动程序时才会显示无线界面。越来越难找到没有无线驱动程序的设备...但通常您可以为这些设备使用 USB 无线适配器。
无线设备也可以称为"eth0"或"eth1"。一个简单的判断方法是 运行 命令:
iwconfig
它只显示无线设备。
你也可以试试
iw dev
如果这些命令都不存在,您可以查看引导日志以获取线索,例如:
dmesg | grep -i wireless
或
grep -i wireless /var/log/messages
或
grep -i wireless /var/log/syslog
或
lsmod
您可以在哪里查看是否可以找到为您的无线设备加载的模块。
要查看系统上所有可用的模块,您可以查看 /usr/src/linux*/drivers/net/wireless,例如
find /usr/src/linux*/drivers/net/wireless
或
echo `for a in /usr/src/linux*; do (cd $a/drivers/net/wireless; for b in */*; do echo $b; done); done|egrep -v '(Makefile|Kconfig)'|cut -d\/ -f2|sort|uniq`
在极少数情况下,您需要通过加载驱动程序来手动启用您的设备,例如:
modprobe -v ath10k
(-v 只是为了显示更多细节,但你也可以在后面 "dmesg"。如果没有 "dmesg" 命令,你也可以:)
cat /dev/kmsg
有时无线驱动程序或设备会崩溃,在这种情况下,您无需重启即可修复它们:
rmmod iwlmvm
modprobe iwlmvm
(这是一些经常让我崩溃的英特尔设备的驱动程序。)
我希望您已经了解 Linux 的重要基石之一!
许多更大的系统,如 Ubuntu 和 Fedora,将接口重命名为 "wlp2s0" 或 "enp5s1n2" 或 "enx908723081" 之类的东西 - 以可重复的方式 - 因为取决于内核和引导过程,如果您有 2 个相似的卡,它们有时会颠倒顺序 - 例如 eth0 曾经是 eth1,反之亦然 - 导致您的设备将错误的接口连接到错误的网络。