树莓派自组网络

12

我想用树莓派尝试一些网络项目,只需要在两个树莓派之间发送数据包。作为第一步,如果能够在自组网模式下在两个树莓派之间进行ping测试,我就很满意了。我查看了几个在线教程和示例,但并没有成功。

我有两个安装了Debian Wheezy操作系统的树莓派,使用以下USB适配器,在两个pi上都安装了固件并测试通过,以管理模式连接到路由器: Bus 001 Device 004: ID 050d:945a Belkin Components F7D1101 v1 Basic Wireless Adapter [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

每个树莓派上的 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)

在每个树莓派上的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
Sensitivity:0/0
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
Sensitivity:0/0
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扫描:


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
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

1
你解决了这个问题吗? - devin
1
值得将此作为答案添加吗? - Fixee
我删除了那条评论,并像你建议的那样将其变成了回答,Fixee。 - Andy
3个回答

7

经过一番搜索,我发现我使用的 Belkin USB 适配器似乎没有支持 Linux 驱动程序的 Ad-hoc 模式。 我购买了一些其他无线 USB 适配器,它们表现很好,“Edimax EW-7811Un 150 Mbps 无线 11n 纳米尺寸 USB 适配器”。 它们更便宜、更小巧,而且它们可以在 Ad-hoc 模式下工作,甚至无需担心驱动程序。 如果您也想做树莓派的 Ad-hoc 项目,则可以使用我提供的故障排除细节作为指南。


参与讨论。我选择了EW-7811Un适配器,因为我在谷歌上搜索到有几个人在adhoc模式下使用它。我按照batman-adv wiki上的说明进行配置,该说明使用命令行上的iwconfig。用那种方式做,单元格从未变成相同的,盒子也无法看到彼此。使用安迪在/ etc / network / interfaces中的方法非常成功。谢谢。 - bill davis
1
你能否发布一下与EW-7811Un兼容的/etc/network/interfaces文件? - MattG
此外,您说您不需要担心驱动程序,但是dmesg报告EW-7911Un使用的是哪个驱动程序?我有一个,dmesg报告正在使用rtl8192cu,并且我似乎无法ping另一个pi。 - MattG

3

在我的/etc/network/interfaces文件中,下面这段代码可以实现我的需求:

auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
wireless-essid "MYPINET"
wireless-channel 3
wireless-mode ad-hoc
wireless-ap 11:5F:02:38:5C:45
address 192.168.10.1
netmask 255.255.255.0

essid、channel和ap可以是任何有效值(在所有树莓派上相同)。确保为不同的树莓派分配同一子网上的不同地址,您应该没问题。ap定义了上面提到的小区ID。顺便说一下,我正在使用TP-link WN725N。它具有RTL8188CUS芯片组,即使dmesg指示Pi将其视为RTL8192,但直接使用时也能正常工作。


dmesg 是否指示使用 rtl8192cu 作为驱动程序? - MattG

0

我尝试了多个采用 RTL8188CUS 芯片组的适配器,但均未成功。幸运的是,我有多个支持 nl80211 接口和自组网模式的 Ralink RT5370 无线网卡(来自this kit)。

我的解决方案涉及使用 wpa_supplicant 并配置了两个文件。请确保安装了 nl80211 驱动程序:

sudo apt-get install libnl1

接下来,在每个树莓派上创建以下名为/etc/wpa_supplicant-adhoc.confwpa_supplicant配置文件:
ctrl_interface=DIR=/run/wpa_supplicant GROUP=netdev
update_config=1
ap_scan=2

network={
  ssid="pihoc_wpa"
  mode=1
  frequency=2462
  proto=WPA
  key_mgmt=WPA-NONE
  pairwise=NONE
  group=TKIP
  psk="password"
} 

在这里,您可以选择ssidfrequency(有效值请参见此处)和psk。请确保您是使用以下命令的用户组net-dev的一部分

getent group netdev

如果没有,您可以使用以下内容自行添加

sudo usermod -a -G netdev userName

接下来,在每个树莓派的/etc/network/interfaces文件中添加以下代码块:
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
   address 10.10.2.1
   netmask 255.255.255.0
pre-up wpa_supplicant -B -D nl80211 -i wlan0 -c /etc/wpa_supplicant-adhoc.conf

每个 Pi 都有一个不同的 address 字段,以 10.10.2. 开头。此外,如果您的 RT5370 适配器使用的是除 wlan0 之外的接口(例如 wlan1wlan2 等),请确保使用该接口名称。

此时,重新启动后,Pis 应自动加入网络。通过 ping 或使用 ssh 测试连接,例如从 IP 地址为 10.10.2.1 的代理运行以下命令:

ssh 10.10.2.2

访问IP地址为10.10.2.2的代理。

这里列出的步骤改编自此Arch Linux维基文章此Raspberry Pi论坛讨论


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接