Малиновая сеть Pi ad-hoc
Я хочу попробовать некоторые сетевые проекты с Raspberry Pis, и мне нужно просто отправить пакеты между парой pis. Я был бы счастлив, как первый шаг, просто имея возможность пинговать между малиной Pis в режиме ad-hoc. Я не успел это сделать, несмотря на то, что смотрел несколько учебных руководств и примеров в Интернете.
У меня есть 2x Raspberry Pis с установленной Debian Wheezy OS. Я использую следующий USB-адаптер, на котором я установил прошивку для обоих pis и протестировал их работу, подключив их в управляемом режиме к маршрутизатору:
Bus 001 Устройство 004: ID 050d: 945a Компоненты Belkin F7D1101 v1 Базовый беспроводной адаптер [Realtek RTL8188SU]
Вот несколько распечаток о сетевой информации:
/etc/network/interfaces на каждом pi:
[email protected] ~ $ 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
[email protected] ~ $ 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 на каждом pi:
[email protected] ~ $ 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)
[email protected] ~ $ 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 в каждом pi:
[email protected] ~ $ 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
[email protected] ~ $ 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
маршрут на один пи (идентичный на другом pi):
[email protected] ~ $ 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:
[email protected] ~ $ 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
[email protected] ~ $ 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 вы можете видеть, что каждый из них имеет другой "сотовый" адрес (не тот же Cell, что и в сканировании iwlist), который является псевдо-базовым идентификатором станции, который используется для определения сети ad-hoc (мое лучшее понимание из что я читал). Кроме того, из iwlist каждый pi может видеть свою собственную, а также другую сеть ad-hoc. Я предполагаю, что им нужно выбрать один и тот же идентификатор ячейки для связи, и я не уверен, как заставить их делать это автоматически. Я попытался статически заставить их быть одинаковыми со следующей командой на каждом pi, который не менял идентификатор ячейки и, следовательно, не работал:
sudo iwconfig wlan0 ap (some address)
Я также попробовал решение, которое использует ap_scan = 2 в конфигурации wpa_supplicant, которая, похоже, не помогла.
Кто-нибудь знает, что я сделал неправильно?
Спасибо,
Энди.
Ответы
Ответ 1
После некоторых поисков я обнаружил, что адаптер USB Belkin, который я использовал, по-видимому, не поддерживал ad-hoc-режим с драйверами linux. Я купил некоторые другие адаптеры USB для USB, которые отлично поработали с USB-адаптером Nano Size с интерфейсом NI размером 1000 Мбит/с для Edimax EW-7811Un. Они дешевле, меньше, и они работали в режиме ad-hoc, даже не беспокоясь о драйверах. Детали, которые я поставил для устранения неполадок, могут быть использованы в качестве руководства, если вы также хотите делать специальные проекты PI малины.
Ответ 2
Это работает для меня в /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
Эстик, канал и ап могут быть любым допустимым значением (одинаковым для всех ваших Pi). Не забудьте назначить разные адреса в той же подсети для вашего другого Pi, и все должно быть в порядке. Ap определяет идентификатор ячейки, который был указан выше. FWIW Я использую TP-link WN725N. Он имеет набор микросхем RTL8188CUS и отлично работает из коробки, хотя dmesg указывает, что Pi рассматривает его как RTL8192.
Ответ 3
Я был неудачен с любым адаптером, используя чипсет RTL8188CUS
. К счастью, у меня было несколько ключей Ralink RT5370
(от этот комплект), которые поддерживают интерфейс nl80211
и режим ad-hoc.
Мое решение включает в себя использование wpa_supplicant
и настроено на 2 файла. Убедитесь, что установлен драйвер nl80211
:
sudo apt-get install libnl1
Затем создайте следующий wpa_supplicant
файл конфигурации /etc/wpa_supplicant-adhoc.conf
на каждом Pi:
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"
}
где вы можете выбрать ssid
, frequency
(посмотрите здесь для допустимых значений) и psk
. Убедитесь, что вы являетесь частью группы пользователей net-dev
, используя команду
getent group netdev
а если нет, вы можете добавить себя, используя
sudo usermod -a -G netdev userName
Затем добавьте следующий блок в файл /etc/network/interfaces
на каждом Pi:
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
(например, wlan1
, wlan2
и т.д.), Обязательно используйте это имя интерфейса.
В этот момент Pis должен автоматически присоединиться к сети после перезагрузки. Проверьте соединение с помощью ping или с помощью ssh, например, выполните следующие действия с агентом с IP-адресом 10.10.2.1
:
ssh 10.10.2.2
для доступа к агенту с IP-адресом 10.10.2.2
.
Шаги, перечисленные здесь, адаптированы из этой статьи в вики Arch Linux и это обсуждение форума малины Pi.