Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

Wi-Fi ไม่ทำงานใน Linux? วิธีแก้ไข

หนึ่งในความท้าทายใหญ่ของผู้ใช้ Linux คือ Wi-Fi ไดรเวอร์ Wi-Fi มักไม่รวมอยู่ในเคอร์เนล ทำให้โมดูล Wi-Fi ที่ไม่ใช่ Intel ทำงานได้ยากใน Linux นี่คือสาเหตุและวิธีแก้ไขเมื่อ Wi-Fi ไม่ทำงานใน Linux

ปัญหา Hardware vs Software ของ Wi-Fi

ปัญหาการเชื่อมต่อ Wi-Fi อาจเป็นปัญหา Hardware หรือ Software ปัญหา Hardware วิเคราะห์ง่าย เปิดเทอร์มินัลและพิมพ์:

ping localhost

วิธีง่ายๆ ตรวจสอบฮาร์ดแวร์ทางกายภาพ localhost ทำงานเป็นที่อยู่ตรวจสอบวงจรของ NIC ถ้าไม่ทำงาน อาจต้องซ่อมฮาร์ดแวร์

ถ้า ping สำเร็จ หรือไม่เห็นการ์ด Wi-Fi เลย อาจเป็นปัญหา Software

ติดตั้งไดรเวอร์จาก Ubuntu ISO

ถ้า distro ไม่ตรวจพบเครือข่าย Wi-Fi หรือมีข้อผิดพลาด ลองติดตั้ง/ติดตั้งใหม่ไดรเวอร์ Wi-Fi จากไฟล์ Ubuntu ISO ดาวน์โหลด Ubuntu ISO ที่ตรงกับเวอร์ชัน (อาจต้องดาวน์โหลดบนอุปกรณ์อื่นหรือใช้ Ethernet บน Ubuntu)

วาง Ubuntu ISO ในไดเรกทอรี Home แล้วในเทอร์มินัล มาว์นต์ ISO ไปที่ virtual drive:

sudo mkdir /media/cdrom
sudo mount -o loop ubuntu-*.iso /media/cdrom

ไปที่ "Software & Updates" จากแดชบอร์ด ติ๊ก "CDrom with [your distro name and version] box" ใส่รหัสผ่าน

คลิกแท็บ "Additional Drivers" เลือก "Wireless Network Adapter" คลิก "Apply Changes"

ปัญหาที่ 1: ไม่ตรวจพบอุปกรณ์

ถ้า Ubuntu (หรือ distro ใดๆ) ไม่ตรวจพบอุปกรณ์ไร้สาย ใช้เทอร์มินัล:

sudo lsusb

สำหรับ USB wireless card/dongle และ

sudo lspci

สำหรับการ์ดไร้สายภายใน

ถ้าผลลัพธ์คล้ายภาพ (มักระบุว่า "Network Controller" หรือ "Ethernet Controller") แสดงว่า Ubuntu หาการ์ดเจอ ในอดีตหลาย distro หาการ์ดไร้สายยาก แต่ตอนนี้รองรับดีขึ้นแล้ว

คำสั่งเพิ่มเติม

ใช้คำสั่งนี้ทดสอบว่าเครื่องมองเห็นอุปกรณ์ไร้สายได้หรือไม่ (อาจต้องติดตั้ง lshw ก่อน):

sudo lshw -C network

ผลลัพธ์ควรคล้าย:

*-network
  description: Wireless interface
  product: PRO/Wireless 3945ABG [Golan] Network Connection
  vendor: Intel Corporation

ถ้าเจอการ์ดไร้สาย ให้ดำเนินการติดตั้งไดรเวอร์/โมดูลต่อไป

ปัญหาที่ 2: ไม่มีโมดูลไดรเวอร์

จาก lsusb และ lspci ที่สำเร็จ หาก distro มองเห็นการ์ด แสดงว่าเฟิร์มแวร์ทำงาน แต่ระบบไม่รู้จักการจัดการกับการ์ด ต้องการไดรเวอร์/โมดูล

กลับไปที่เทอร์มินัลพิมพ์:

sudo lsmod

จะเห็นรายการโมดูลที่ใช้งาน เพื่อเปิดใช้งานโมดูล ใช้คำสั่ง (modulename = ชื่อชิปเซ็ต):

sudo modprobe modulename

ตัวอย่าง ชิปเซ็ต "RT2870":

sudo modprobe rt2800usb

หลังจากนั้น รัน lsmod อีกครั้งดูว่าโหลดถูกต้องหรือไม่

โหลดโมดูลอัตโนมัติตอนบูท

บางครั้งโมดูลไม่คงอยู่หลังบูท บังคับให้โหลดถาวรได้ โดยแก้ไข:

sudo nano /etc/modules

เพิ่มชื่อโมดูลท้ายไฟล์ เซฟ ไฟล์ รีบูท และตรวจสอบว่าการ์ดไร้สายเห็นเครือข่ายได้หรือไม่

ถ้าติดปัญหา ทำซ้ำอีกครั้ง Ubuntu มีเอกสารช่วยออนไลน์ และ man pages ในเทอร์มินัล:

man lsusb
man lspci

ปัญหาที่ 3: DNS

DNS นานาจะเป็นปัญหา แต่คุ้มค่าตรวจสอบ หากยังมีปัญหาการเชื่อมต่อ จากเทอร์มินัล:

nmcli device show wlan1 | grep IP4.DNS

จะแสดง LAN address ของเราเตอร์ ถ้าไม่ได้ ให้เปลี่ยน "wlan1" เป็นชื่ออินเทอร์เฟซไร้สายจริง คำสั่งนี้ช่วยหาชื่อ:

ip a s

ได้ข้อมูลแล้ว ping LAN address ของเราเตอร์ ถ้าทำงาน ลอง ping DNS ของ Google:

ping 8.8.8.8

จากผลลัพธ์ จะรู้ว่าปัญหา DNS อยู่ที่ไหน ถ้าอุปกรณ์ทุกตัวในบ้าน/ออฟฟิศโหลดหน้าไม่ได้ เปลี่ยน DNS เราเตอร์เป็น Google หรือ OpenDNS (ทำในหน้าแอดมิน 192.168.0.1 หรือคล้ายๆ)

ถ้าปัญหา DNS อยู่แค่ Ubuntu ใช้ Network Manager GUI:

  • คลิกขวา Network Manager
  • Edit Connections
  • เลือกการเชื่อมต่อ Wi-Fi
  • เลือก IPv4 Settings
  • เปลี่ยน Method เป็น "DHCP Addresses Only"
  • เพิ่ม 8.8.8.8, 8.8.4.4 ในช่อง DNS servers (คั่นด้วยคอมม่า ไม่เว้นวรรค)
  • Save, Close

ขั้นตอนสุดท้าย รีสตาร์ทเครื่องหรือ Network Manager:

sudo service network-manager restart

ปัญหาที่ 4: ไม่มี Network Manager

ถ้าลบ/uninstall Network Manager ตกตะลัง ไม่มีอินเทอร์เน็ตและไม่มี Network Manager แต่ยังมีทางออก

ถ้าแพ็กเกจยังอยู่ในแคช ใช้เทอร์มินัล:

# Debian/Ubuntu
sudo apt install network-manager
# Fedora
sudo dnf install network-manager
# Arch Linux
sudo pacman -Syu network-manager

ถ้าลบแคชแล้ว ใช้สาย Ethernet ต่อพอร์ต Ethernet และรันคำสั่งด้านบนอีกครั้ง

ขั้นตอนสุดท้าย ถ้ายังไม่ได้ แก้ไขไฟล์ตั้งค่า (ใช้ gedit หรือ text editor ที่ชอบ):

sudo gedit /etc/network/interfaces

แก้ไขเป็น:

auto lo
iface lo inet loopback
auto wlan0
iface wlan0 inet dhcp
wpa-essid myssid
wpa-psk mypasscode

รีสตาร์ทอินเทอร์เฟซ:

sudo ifdown wlan0 && sudo ifup -v wlan0

อ่านเพิ่มเติมเกี่ยวกับ Linux Wireless subsystem ได้ที่ kernel.org wiki

ตอนนี้ Wi-Fi ทำงานแล้ว ลองดูวิธีเล่นเกม Windows บน Linux หรือวิธีเปลี่ยนชื่อไฟล์ใน Linux ได้จากคู่มือของเรา