วิธีเชื่อมต่อ 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
ฉันยังสังเกตเห็นสิ่งนี้ น่าผิดหวังมาก!
Quintin Balsdon

คำตอบ:


20

ฉันก็เห็นปัญหานี้กับฉันRaspberryPi ศูนย์ W2017-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

ฉันพบว่าการใช้daemon-reloadและรีสตาร์ท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ดังนั้นฉันไม่คิดว่ามันสำคัญ แต่อาจเป็นการฝึกฝนที่ดี


ใช้งานได้และเป็นทางออกที่ถูกต้อง แต่สำหรับทุกคนที่ต้องการทำ wifi สองโหมด (เช่น Raspberry pi ที่เป็นฮอตสปอตและทำหน้าที่เป็นสถานีฐาน) โปรดทราบว่าสิ่งนี้จะไม่ทำงาน หากคุณมีการตั้งค่า WiFi โหมดคู่ทำตามคำแนะนำนี้ที่นี่: 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 ด้วยการยืดแบบ raspian - ขอบคุณ!
smörkex

3

หลังจากเพิ่มเครือข่ายใน wpa_supplicant.conf:

เรียกใช้ cli
(ใช้ 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
เป็นการดีที่ไม่ได้อยู่ใน jessie เช่นกันเพราะมันยังเป็น systemd (ไม่ใช่ SysV) คำสั่งนั้นเป็นแบบสมัยและสนับสนุนอย่างดีที่สุดสำหรับความเข้ากันได้แบบย้อนหลัง
goldilocks

ไม่มันไม่ทำงาน คุณต้องกำหนดค่า wpa supplicant ใหม่และรีสตาร์ท dhcpcd
Hola Soy Edu Feliz Navidad

0

คุณสามารถใช้เครื่องมือ NetworkManager ซึ่งใช้nmcliคำสั่งเพื่อตั้งค่าโปรไฟล์การเชื่อมต่อ

ติดตั้งโดยใช้ฉลาด:

sudo apt-get install network-manager

แสดงความคิดเห็นออกมาwlanและอินเตอร์เฟซในEthernet/etc/network/interfaces

รีบูตอุปกรณ์

จากนั้นใช้:

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

เพื่อเชื่อมต่อกับเครือข่าย Wi-Fi


โปรดอย่าแนะนำให้รวมเครื่องมือเครือข่ายอื่นเข้าด้วยกันกับเครื่องมือสามตัวที่มีอยู่แล้ว (dhcpcd, เครือข่าย Debian ifupdown, systemd-networkd) ตัวจัดการเครือข่ายไม่รองรับโดย Raspbian ดังนั้นคุณต้องกำหนดค่าด้วยตัวเองทั้งหมด ครั้งแรกมันขัดแย้งกับและdhcpcd ifupdownคุณไม่เคารพในคำตอบของคุณ จากนั้นใน Raspbian Stretch ไม่มีรายการใน/etc/network/interfacesดังนั้นจึงไม่มีอะไรที่จะแสดงความคิดเห็น
Ingo

ใช่คุณเป็นเพื่อนที่ถูกต้องพวกเขาขัดแย้งกับเครือข่ายกับ dhcpcd อื่น ๆ และ ifupdown แต่ NetworkManager เป็นวิธีเดียวที่จะทำสิ่งนี้หลังจากทำตามคำแนะนำด้านบน ราสเบอรี่ไลต์รุ่นของราสเบอรี่ไม่มีทางเลือกอื่นนอกจาก nmcli ฉันยังไม่ได้ลองใช้การยืด แต่ในระหว่างการติดตั้งตัวจัดการเครือข่ายจะแจ้งเตือนถึงข้อขัดแย้ง หากคุณมีทางออกฉันพร้อมเสมอที่จะเรียนรู้วิธีการนั้น
Rituraj Rautela

เพียงแค่มีsudo systemctl stop wpa_supplicant@wlan0.serviceและsudo systemctl start wpa_supplicant@wlan0.serviceคุณสามารถหยุดและเริ่มการเชื่อมต่อ WiFi ได้ตามต้องการ วิธีทำคุณสามารถดูการตั้งค่า Raspberry Pi เป็นจุดเชื่อมต่อ - วิธีที่ง่ายหรือจุดเข้าใช้งานเป็น repeater WiFi ตัวเลือกที่มีสะพานหรือสลับระหว่างไคลเอนต์ไร้สายและจุดเชื่อมต่อโดยไม่ต้องรีบูทหรือโซลูชั่นอื่น ๆ ที่คล้ายกัน
Ingo

1
จุดที่ถูกต้องมากโดย @Ingo เพียงเพิ่ม - ถ้าคุณใช้ Node.js และต้องการทำสิ่งต่าง ๆ โดยใช้แพ็คเกจ npm ให้ตรวจสอบเอกสารอย่างละเอียด แพ็คเกจ npm ส่วนใหญ่ใช้ nmcli ในพื้นหลังซึ่งไม่สามารถใช้กับ Raspberry pi มันไม่ได้ติดตั้ง ดังนั้นโปรดดำเนินการด้วยความระมัดระวัง
thewebjackal

เป็นไปได้ที่จะใช้network-manager(หรือwicdเครื่องมือเครือข่ายอื่น ๆ สำหรับเรื่องนั้น) ใน Raspbian มันจะมีประโยชน์อย่างไรก็ตามถ้าคุณอธิบายวิธีการตั้งค่า
Dmitry Grigoryev

0

ฉันมีปัญหาคล้ายกันกับ Raspbian GNU / Linux 10 (บัสเตอร์) ฉันทำการเปลี่ยนแปลงใน 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

แก้ไข 1:

ฉันได้คำตอบนี้กับ Raspberry pi Zero W ที่กำหนดค่าเป็น dual mode wifi และฉันต้องการเปลี่ยนข้อมูลรับรอง wifi (เราเตอร์ wifi ที่ wlan0 ต้องเชื่อมต่อ) โดยแชร์ผ่านอินเทอร์เฟซ ap0 (ซึ่งมี REST API โฮสต์อยู่ มัน) ด้วยแอพมือถือ

สิ่งที่ฉันคิดว่าคำตอบที่ยอมรับหรือคำตอบอื่น ๆ จะทำงานในกรณีของฉัน แต่นั่นไม่ใช่กรณี

ดังนั้นสำหรับคนที่มีที่ดินที่นี่เช่นเดียวกับฉันโปรดปฏิบัติตามขั้นตอนการติดตั้งดังกล่าวที่นี่

จากนั้นสำหรับการเปลี่ยนแปลงในการเชื่อมต่อ wifi โดยไม่ต้องรีบูตฉันกำลังทดสอบด้วย 2 วิธี:

  1. wpa_cli -i wlan0 กำหนดค่าใหม่
  2. sudo systemctl รีสตาร์ท wpa_supplicant@wlan0.service

เมื่อการทดสอบเสร็จสิ้นฉันจะอัปเดตที่นี่


ขณะนี้ฉันกำลังทดสอบสิ่งต่าง ๆ จะอัปเดตสิ่งนี้ต่อไป
thewebjackal
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.