web-dev-qa-db-ja.com

RaspberryPiアドホックネットワーキング

Raspberry Piを使用していくつかのネットワークプロジェクトを試したいのですが、pisのペア間でパケットを送信するだけで済みます。アドホックモードでRaspberryPisにpingを実行できるようになることで、最初のステップとして喜んでいます。オンラインでいくつかのチュートリアルと例を見たにもかかわらず、私はこれをうまくやっていません。

Debian WheezyOSがインストールされた2xRaspberryPiがあります。両方のpisにファームウェアをインストールした次のUSBアダプターを使用しており、マネージドモードでルーターに接続して動作することをテストしました。バス001デバイス004:ID 050d:945aBelkinコンポーネントF7D1101v1ベーシックワイヤレスアダプター[RealtekRTL8188SU]

ネットワーク情報に関するいくつかのプリントアウトは次のとおりです。

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

1つのpiでのルート(他のpiと同じ):

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

各piでの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: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
_

Pingが機能せず、ネットワークが機能していないようです。 iwconfigから、アドホックネットワークを定義するために使用される疑似基地局IDである異なる「セル」アドレス(iwlistスキャンと同じセルではない)をそれぞれが持っていることがわかります(私の最もよく理解しているのは私が読んだもの)。また、iwlistから、各piは自分自身と他のpiのアドホックネットワークを見ることができます。通信するには同じセルIDを選択する必要があると思いますが、これを自動的に行う方法がわかりません。セルIDを変更せず、したがって機能しなかった各piで次のコマンドを使用して、これらを静的に強制的に同じにしようとしました。

Sudo iwconfig wlan0 ap (some address)

また、wpa_supplicant構成でap_scan = 2を使用するソリューションを試しましたが、役に立たなかったようです。

誰かが私が間違ったことを知っていますか?

ありがとう、アンディ。

11
Andy

いくつか検索したところ、使用していたBelkinUSBアダプターがLinuxドライバーでアドホックモードをサポートしていないことがわかりました。 「EdimaxEW-7811Un150Mbpsワイヤレス11nナノサイズUSBアダプター」でうまく機能する他のワイヤレスUSBアダプターをいくつか購入しました。それらはより安く、より小さく、そしてドライバーを心配する必要さえなくアドホックモードで働きました。アドホックなRaspberryPiプロジェクトも実行したい場合は、トラブルシューティングに使用した詳細をガイドとして使用できます。

6
Andy

これは/ 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は、任意の有効な値にすることができます(すべてのPiで同じ)。同じサブネット上の異なるアドレスを異なるPiに割り当てるようにしてください。そうすれば、問題はありません。 apは、上記のセルIDを定義します。 FWIW私はTP-linkWN725Nを使用しています。 RTL8188CUSチップセットを搭載しており、dmesgがPiがRTL8192として処理していることを示していても、箱から出して正常に動作します。

3
HDTV4free.info

RTL8188CUSチップセットを使用しているアダプターで失敗しました。幸いなことに、RT5370インターフェイスとアドホックモードをサポートするRalinknl80211ドングル( このキット から)がいくつかありました。

私のソリューションはwpa_supplicantを使用することを含み、2つのファイルで構成されています。 nl80211ドライバーがインストールされていることを確認します。

Sudo apt-get install libnl1

次に、各Piにwpa_supplicantという名前の次の/etc/wpa_supplicant-adhoc.conf構成ファイルを作成します。

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

次に、各Piの/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には、10.10.2.で始まる異なるaddressフィールドがあります。また、RT5370アダプターがwlan0以外のインターフェース(例:wlan1wlan2など)を使用している場合は、代わりにそのインターフェース名を使用してください。

この時点で、Pisは再起動時に自動的にネットワークに参加する必要があります。 pingまたはsshを使用して接続をテストします。たとえば、IPアドレス10.10.2.1のエージェントから次のコマンドを実行します。

ssh 10.10.2.2

iPアドレス10.10.2.2でエージェントにアクセスします。

ここにリストされているステップは、 このArch Linux wiki記事 および このRaspberry Piフォーラムディスカッション から適応されています。

0
MattG