หนึ่งในความท้าทายใหญ่ของผู้ใช้ 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 ได้จากคู่มือของเรา