Як підключитися до WiFi без перезавантаження?


17

Я щойно помістив свіже прошиту карту (з 2017-09-07-raspbian-stretch-lite) у Raspberry Pi Zero W.

Потім я додав ці рядки:

network={
    ssid="myWifiSsid"
    psk="myWifiPassword"
}

до /etc/wpa_supplicant/wpa_supplicant.conf.

Введені дані були 100% правильними. Я зачекав 10 хвилин і перевірив: не підключився автоматично.

Потім я повернувся до офіційних інструкцій і побіг, sudo wpa_cli reconfigureяк запропонували. Той самий результат: він не з'єднався.

Потім я спробував вручну перезапустити wlan0:

sudo ifconfig wlan0 down
sudo ifconfig wlan0 up

Ще те саме: Не підключається.

Потім я перезавантажився і він миттєво автоматично підключився.

Це суто засмучує. Схоже, офіційні інструкції взагалі не перевіряються.

Отже, чого тут бракує, як це можна зробити без перезавантаження?


1
Я також це помітив. Дуже засмучує!
Квінтін Бальсдон

Відповіді:


20

Я теж бачив це питання з моїм RaspberryPi Нульовий W використовуючи 2017-09-07-raspbian-stretch-lite.

Оновлення wpa_supplicant.confфайлу, sudo wpa_cli reconfigureі sudo systemctl restart wpa_supplicantне вийшло. Мій Пі не ввімкне IP wlan0.

Я помітив, що wpa_supplicantпороджений як дитина dhcpcdслужби.

$ sudo systemctl status

└─dhcpcd.service
  ├─890 wpa_supplicant -B -c/etc/wpa_supplicant/wpa_supplicant.conf -iwlan0
  └─912 /sbin/dhcpcd -q -w

Я виявив, що використання демон-перезавантаження та перезавантаження dhcpcd.serviceблоку працювало на мене.

sudo systemctl daemon-reload
sudo systemctl restart dhcpcd

Це здається , що ви повинні спочатку запустити sudo systemcl daemon-reloadперед перезапуском dhcpcd. Я не зовсім впевнений, чому, але здається, що daemon-reloadсповістять сервісні підрозділи про налаштування змін файлів.

Якщо я перезапустив dhcpcdбез запуску daemon-reload, отримав це попередження. Warning: dhcpcd.service changed on disk. Run 'systemctl daemon-reload' to reload units., але він перезапустився просто чудово з або без daemon-reload. Тож я не вважаю це життєво важливим, але, мабуть, хорошою практикою.


Це працює і є правильним рішенням. Але для всіх, хто хоче зробити Wi-Fi з подвійним режимом (наприклад, Raspberry pi, який розміщує точку доступу, а також виступає в якості базової станції), зауважте, що це не буде працювати. Якщо ви налаштовуєте подвійний режим Wi - Fi, слідувати цьому керівництву тут: raspberrypi.stackexchange.com/questions/89803 / ... . Якщо припустити, що ви виконали конфігурацію відповідно до цього посібника, і хочете, щоб вони працювали без перезавантаження; просто запустіть sudo systemctl, перезавантажте wpa_supplicant@wlan0.service, а потім - sudo systemctl daemon-reload
thewebjackal


4

Я використовую Raspberry Pi 3 з, 2018-03-13-raspbian-stretchі моя проблема незначно відрізняється, але я знайшов рішення, тому, думаю, це теж може допомогти вам.

Я завантажую RPi з /etc/wpa_supplicant/wpa_supplicant.confналаштуванням, щоб у мене був один встановлений SSID і пароль, і RPi автоматично підключався до налаштованого SSID під час завантаження. Крім того, я хотів змінити /etc/wpa_supplicant/wpa_supplicant.conf за допомогою сценарію автоматичної обробки тексту, а потім перезавантажити налаштування wifi .

Трохи розібравшись, я знайшов цю посаду на офіційних форумах Raspberry Pi і знайшов цей набір команд всередині, який працював для мене щонайменше:

sudo dhclient -r wlan0
sudo ifdown wlan0
sudo ifup wlan0
sudo dhclient -v wlan0

Я не знаю, як і чому вони працюють, тому жодних гарантій ...


Це єдина відповідь, яка працювала на мене, також на Pi3 з розпійною натяжкою - дякую!
smörkex

3

Після додавання мережі в wpa_supplicant.conf:

Запустіть кліп
(тут використовуються 3 команди: інтерфейс, переналаштування та вихід)

root@raspberrypi:~# wpa_cli
wpa_cli v2.4
Copyright (c) 2004-2015, Jouni Malinen <j@w1.fi> and contributors

This software may be distributed under the terms of the BSD license.
See README for more details.


Selected interface 'p2p-dev-wlan0'

Interactive mode

<3>CTRL-EVENT-SCAN-RESULTS
> interface wlan0
Connected to interface 'wlan0.
> reconfigure
OK
<3>CTRL-EVENT-SCAN-STARTED
<3>CTRL-EVENT-SCAN-RESULTS
<3>WPS-AP-AVAILABLE
<3>Trying to associate with XX:Xa:aX:Xa:XX:Xa (SSID='wifissid' freq=2437 MHz)
<3>Associated with XX:Xa:aX:Xa:XX:Xa
<3>WPA: Key negotiation completed with XX:Xa:aX:Xa:XX:Xa [PTK=CCMP GTK=CCMP]
<3>CTRL-EVENT-CONNECTED - Connection to XX:Xa:aX:Xa:XX:Xa completed [id=0 id_str=]
> quit

Потім переконайтеся, що у вас IP-адреса.

root@raspberrypi:~# ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.10.XX.XXX  netmask 255.255.255.0  broadcast 10.10.XX.XXX
        inet6 fe80::aab2:d96e:d3ef:836d  prefixlen 64  scopeid 0x20<link>
        ether bX:XX:Xb:XX:Xe:aX  txqueuelen 1000  (Ethernet)
        RX packets 162  bytes 31128 (30.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 75  bytes 11385 (11.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

1

Вам слід запустити цей командний рядок, щоб перезапустити мережу

/etc/init.d/networking перезапуск


3
Не в розтягуванні!
MatsK

6
В ідеалі також не в джессі, оскільки це також системно (а не SysV); ця команда є анахронічною і в кращому випадку підтримується для зворотної сумісності.
goldilocks

Ні, це не працює. Ви повинні перенастроїти
Hola Soy Edu Feliz Navidad

0

Ви можете використовувати інструмент NetworkManager, який використовує nmcliкоманди для налаштування профілю з'єднання.

Встановіть його за допомогою apt:

sudo apt-get install network-manager

Коментуйте wlanі Ethernetінтерфейси в /etc/network/interfaces.

Перезавантажте пристрій.

Потім використовуйте:

sudo nmcli device wifi con "SSID" password "PSK" 

підключитися до мережі Wi-Fi.


Будь ласка, не радимо змішувати інший інструмент мереж із уже трьома існуючими (dhcpcd, Debian networking ifupdown, systemd-networkd). Менеджер мережі не підтримується Raspbian, тому вам доведеться все це налаштувати вручну. По-перше, це конфлікт з dhcpcdі ifupdown. Ви не поважаєте це у своїй відповіді. Тоді в Raspbian Stretch немає записів, /etc/network/interfacesтому не можна нічого коментувати.
Інго

Так, ти прав, приятель, вони конфліктують з мережею з іншими dhcpcd та ifupdown. Але NetworkManager, здається, є єдиним способом зробити це, дотримуючись вищезазначених порад. У Raspberry pi-версіях розпред-літ не є інший варіант, ніж nmcli. Я не пробував цього на Stretch, але під час установки сам Менеджер мережі видасть попередження про конфлікт. Якщо у вас є рішення, я завжди готовий вивчити цей метод.
Rituraj Rautela

Просто з, sudo systemctl stop wpa_supplicant@wlan0.serviceі sudo systemctl start wpa_supplicant@wlan0.serviceви можете зупинити і запустити Wi-Fi з'єднання так, як вам подобається. Як це зробити, ви можете подивитися на налаштуваннях Raspberry Pi як точки доступу - простий спосіб або точку доступу як ретранслятор WiFi, необов'язково з мостом або перемиканням між клієнтом wifi та точкою доступу без перезавантаження чи інших подібних рішень.
Інго

1
Дуже вірний пункт від @Ingo. Просто додати - якщо ви використовуєте Node.js і хочете робити речі за допомогою npm-пакетів, ретельно перевірте документацію. Більшість пакетів npm використовують nmcli у фоновому режимі, який не працює на Raspberry pi. Він навіть не встановлений. Тож будь ласка, будьте обережні.
thewebjackal

Дійсно можна використовувати network-manager(або wicdбудь-який інший мережевий інструмент з цього приводу) на Raspbian. Однак було б корисно, якби ви описали, як їх налаштувати.
Дмитро Григор’єв

0

У мене були подібні проблеми з Raspbian GNU / Linux 10 (buster). Я вніс зміни в wpa_supplicant.conf і запустив

# wpa_cli -i wlan0 reconfigure

Але це все не спрацювало.

# dhclient -v

змусив це працювати.

Я знайшов інформацію на https://kb.isc.org/docs/isc-dhcp-44-manual-pages-dhclient

Вихід від

$ sudo dhclient -v
Internet Systems Consortium DHCP Client 4.4.1
Copyright 2004-2018 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/wlan0/a0:f3:c1:26:04:9c
Sending on   LPF/wlan0/a0:f3:c1:26:04:9c
Listening on LPF/eth0/b8:27:eb:1f:ab:6e
Sending on   LPF/eth0/b8:27:eb:1f:ab:6e
Sending on   Socket/fallback
DHCPREQUEST for 192.168.7.28 on wlan0 to 255.255.255.255 port 67
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
DHCPACK of 192.168.7.28 from 192.168.7.1
RTNETLINK answers: File exists
bound to 192.168.7.28 -- renewal in 1717 seconds.

0

EDIT 1:

Я приземлився на цю відповідь разом із моїм Raspberry pi Zero W, налаштованим на Wi-Fi з подвійним режимом, і я хотів змінити облікові дані Wi-Fi (маршрутизатор Wi-Fi, до якого повинен підключитися wlan0), поділившись ним через інтерфейс ap0 (на якому розміщено API REST, на якому розміщено це) з мобільним додатком.

Річ у тому, що я припускаю, що прийнята відповідь чи будь-які інші відповіді спрацюють у моєму випадку. Але це було не так.

Отже, для тих, хто приземлився тут, як я, будь ласка, виконайте вказані тут кроки налаштування .

Тоді, для зміни з'єднання Wi-Fi без перезавантаження, я зараз тестую двома способами:

  1. wpa_cli -i wlan0 переналаштування
  2. sudo systemctl перезапустити wpa_supplicant@wlan0.service

Після того, як тести будуть виконані, я буду його оновлювати тут.


Зараз я перебуваю в процесі тестування речей. Буде тримати це оновлення.
thewebjackal
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.