linux - Raspberry Pi 临时网络

标签 linux networking wireless raspberry-pi adhoc

我想用树莓派尝试一些网络项目,我只需要在一对树莓派之间发送数据包。作为第一步,我很高兴能够以临时模式在 Raspberry Pis 之间执行 ping 操作。尽管在线查看了多个教程和示例,但我仍未成功完成此操作。

我有 2 个安装了 Debian Wheezy 操作系统的 Raspberry Pi。我正在使用以下 USB 适配器,我在两个 pis 上都安装了固件,并通过以托管模式将它们连接到路由器来测试它们是否工作: 总线 001 设备 004:ID 050d:945a Belkin Components F7D1101 v1 基本无线适配器 [Realtek RTL8188SU]

以下是有关网络信息的一些打印输出:

每个 pi 的/etc/network/interfaces:


pi1@raspberrypi ~ $ cat /etc/network/interfaces 
auto lo
iface lo inet loopback
iface eth0 inet dhcp
auto wlan0
iface wlan0 inet manual
    address 192.168.2.1
    netmask 255.255.255.0
    wireless-channel 4
    wireless-essid pi-ad-hoc
    wireless-mode ad-hoc
pi2@raspberrypi ~ $ cat /etc/network/interfaces 
auto lo
iface lo inet loopback
iface eth0 inet dhcp
auto wlan0
iface wlan0 inet manual
    address 192.168.2.2
    netmask 255.255.255.0
    wireless-channel 4
    wireless-essid pi-ad-hoc
    wireless-mode ad-hoc

每个 pi 的 ifconfig:


pi1@raspberrypi ~ $ ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr ec:1a:59:46:8e:5a  
          inet addr:192.168.2.1  Bcast:192.168.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:26 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)
pi2@raspberrypi ~ $ ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr ec:1a:59:46:59:0a  
          inet addr:192.168.2.2  Bcast:192.168.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:6 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)

每个 pi 的 iwconfig:


pi1@raspberrypi ~ $ iwconfig wlan0
wlan0     IEEE 802.11bg  ESSID:"pi-ad-hoc"  Nickname:"rtl_wifi"
          Mode:Ad-Hoc  Cell: 02:11:87:FA:4A:02   Bit Rate:54 Mb/s<br/>
          Sensitivity:0/0<br/>
          Retry:off   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
pi2@raspberrypi ~ $ iwconfig wlan0
wlan0     IEEE 802.11bg  ESSID:"pi-ad-hoc"  Nickname:"rtl_wifi"
          Mode:Ad-Hoc  Cell: 02:11:87:C4:F2:01   Bit Rate:54 Mb/s<br/>
          Sensitivity:0/0<br/>
          Retry:off   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

在一个圆周率上的路线(在其他圆周率上相同):


pi1@raspberrypi ~ $ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
192.168.2.0     *               255.255.255.0   U     0      0        0 wlan0

iwlist 在每个 pi 扫描:


pi1@raspberrypi ~ $ sudo iwlist wlan0 scan
wlan0     Scan completed :
          Cell 01 - Address: 02:11:87:FA:4A:02
                    ESSID:"pi-ad-hoc"
                    Protocol:IEEE 802.11bg
                    Mode:Ad-Hoc
                    Frequency:2.427 GHz (Channel 4)
                    Encryption key:off
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality:0  Signal level:0  Noise level:0
          Cell 04 - Address: 02:11:87:C4:F2:01
                    ESSID:"pi-ad-hoc"
                    Protocol:IEEE 802.11bg
                    Mode:Ad-Hoc
                    Frequency:2.427 GHz (Channel 4)
                    Encryption key:off
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Signal level=100/100<br/>
pi2@raspberrypi ~ $ sudo iwlist wlan0 scan
wlan0     Scan completed :
          Cell 01 - Address: 02:11:87:C4:F2:01
                    ESSID:"pi-ad-hoc"
                    Protocol:IEEE 802.11bg
                    Mode:Ad-Hoc
                    Frequency:2.427 GHz (Channel 4)
                    Encryption key:off
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality:0  Signal level:0  Noise level:0
          Cell 02 - Address: 02:11:87:FA:4A:02
                    ESSID:"pi-ad-hoc"
                    Protocol:IEEE 802.11bg
                    Mode:Ad-Hoc
                    Frequency:2.427 GHz (Channel 4)
                    Encryption key:off
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Signal level=100/100<br/>

Ping 不起作用,并且它们之间似乎无法联网。从 iwconfig 中,您可以看到它们每个都有不同的“Cell”地址(与 iwlist 扫描中的 Cell 不同),这是用于定义 ad-hoc 网络的伪基站 ID(我最好的理解来 self 读过的)。此外,从 iwlist 中,每个 pi 都可以看到自己以及另一个 pi 的 ad-hoc 网络。我假设他们需要选择相同的 Cell id 进行通信,但我不确定如何让他们自动执行此操作。我尝试静态地强制这些与每个 pi 上的以下命令相同,但没有更改单元 ID,因此不起作用:

sudo iwconfig wlan0 ap (some address)

我还尝试了一种在 wpa_supplicant 配置中使用 ap_scan=2 的解决方案,但似乎没有帮助。

有人知道我做错了什么吗?

谢谢, 安迪。

最佳答案

经过一些搜索后,我发现我使用的 Belkin USB 适配器显然没有 linux 驱动程序的 ad-hoc 模式支持。我购买了其他一些效果很好的无线 USB 适配器“Edimax EW-7811Un 150 Mbps 无线 11n 纳米尺寸 USB 适配器”。它们更便宜、更小,而且它们在临时模式下工作,甚至不需要司机担心。如果您还想做临时的 raspberry PI 项目,我为故障排除提供的详细信息可以用作指南。

关于linux - Raspberry Pi 临时网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15423325/

相关文章:

c# - 查找本地服务器的 IP 地址

c++ - Windows Mobile应用程序的无线调试

linux - Git 错误 : fatal: protocol error: bad line length character: git@

linux - 为 tomcat/JKS Keystore 转换 PKCS12 格式的证书

linux - 如何检查 bash 中的有效字符串输入?

networking - 适用于 Windows 7 的无线 Ad-Hoc 网状网络实现

c - 如何将数组拆分为特定大小

linux - Bash 输入重定向为命令提供标准输入而不是参数/文件名?

networking - 对于GBN协议(protocol),单个定时器如何跟踪发送未确认数据包的时间?

c++ - 读句柄错误