這裡介紹如何在樹莓派的終端機中以指令的方式,調整無線網路的組態設定,讓樹莓派可以連上網路。

樹莓派在有 X Window 桌面環境時,可以很方便使用圖形界面的網路工具設定無線網路,使用方式很直覺,直接從選單中選擇要連線的無線網路即可。


在 Raspbian Linux 系統安裝完成後,預設的網路設定工具就會顯示在右上角的系統圖示列中。

raspberry-pi-wireless-configuration-command-tutorial-1

樹莓派設定無線網路

但如果是沒有啟用 X Window 桌面環境的樹莓派,要設定無線網路的話,就要在命令列中以指令的方式操作,以下是設定 Linux 無線網路相關的指令教學。

首先檢查一下所有的網路卡狀態:

ifconfig
eth0      Link encap:Ethernet  HWaddr b8:27:eb:e4:3f:da  
          inet6 addr: fe80::b7b3:9f32:8071:b682/64 Scope:Link
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 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)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:328 errors:0 dropped:0 overruns:0 frame:0
          TX packets:328 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:26616 (25.9 KiB)  TX bytes:26616 (25.9 KiB)

wlan0     Link encap:Ethernet  HWaddr e8:4e:06:1f:ff:4e  
          inet addr:192.168.50.1  Bcast:192.168.50.255  Mask:255.255.255.0
          inet6 addr: fe80::ea4e:6ff:fe1f:ff4e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1363 errors:0 dropped:476 overruns:0 frame:0
          TX packets:656 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:103353 (100.9 KiB)  TX bytes:143070 (139.7 KiB)

wlan1     Link encap:Ethernet  HWaddr f8:1a:67:18:3a:ab  
          inet6 addr: fe80::7cb0:b6af:2951:cbb2/64 Scope:Link
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 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)

以我的狀況來說,我在第一代的樹莓派上插上兩張 USB 的無線網路卡,第一張 wlan0 用於對內的區域網路,而第二張 wlan1 則準備用於對外的網際網路連線,所以接下來我要在命令列設定 wlan1 的網路組態,讓它可以對外連線。

sudo iwlist wlan1 scan
wlan1     Scan completed :
[略]
          Cell 04 - Address: C4:6E:1F:C1:8E:EE
                    Channel:6
                    Frequency:2.437 GHz (Channel 6)
                    Quality=42/70  Signal level=-68 dBm  
                    Encryption key:on
                    ESSID:"SEAL" 1
                    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
                    Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s
                    Mode:Master
                    Extra:tsf=000003a7f3f68cb7
                    Extra: Last beacon: 700ms ago
                    IE: Unknown: 00045345414C
                    IE: Unknown: 010882848B960C121824
                    IE: Unknown: 030106
                    IE: Unknown: 0706545720010B1B
                    IE: Unknown: 2A0100
                    IE: IEEE 802.11i/WPA2 Version 1 2
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : CCMP TKIP
                        Authentication Suites (1) : PSK
                    IE: Unknown: 32043048606C
                    IE: Unknown: 2D1A6E1103FF00000000000000000000000000000000000000000000
                    IE: Unknown: 3D1606071500000000000000000000000000000000000000
                    IE: WPA Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : CCMP TKIP
                        Authentication Suites (1) : PSK
                    IE: Unknown: DD180050F2020101030003A4000027A4000042435E0062322F00
                    IE: Unknown: DD1E00904C336E1103FF00000000000000000000000000000000000000000000
                    IE: Unknown: DD1A00904C3406071500000000000000000000000000000000000000
                    IE: Unknown: DD0900037F01010000FF7F
                    IE: Unknown: DD990050F204104A0001101044000102103B0001031047001000000000000010000000C46E1FC18E101021000754502D4C494E4B10230009544C2D57523734304E10240003342E3010420003312E301054000800060050F204000110110019576972656C65737320526F7574657220544C2D57523734304E100800020086103C000101104900140024E26002000101600000020001600100020001
[略]

1 ESSID 就是無線網路的名稱。

2 IE: IEEE 802.11i/WPA2 代表這個 WiFi 無線網路支援目前比較新的 WPA2 加密。

依據 ESSID 名稱找到要連線的 WiFi 無線網路之後,編輯 /etc/wpa_supplicant/wpa_supplicant.conf 設定檔,加入這個無線網路的設定:

network={
  ssid="SEAL"
  psk="your_password"
}

其中的 psk 就是無線網路的密碼。若要查詢其他更詳細的設定方式,請參考 wpa_supplicant.conf 的 man page:

man wpa_supplicant.conf

一般來說,wpa_supplicant 會自動偵測到設定檔的變更並且載入新的設定,若沒有自動生效的話,就使用手動的方式重新啟動無限網路卡:

sudo ifdown wlan1
sudo ifup wlan1

查看 wlan1 的網路狀態:

ifconfig wlan1
wlan1     Link encap:Ethernet  HWaddr f8:1a:67:18:3a:ab  
          inet addr:192.168.0.104  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::7cb0:b6af:2951:cbb2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:69 errors:0 dropped:0 overruns:0 frame:0
          TX packets:78 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:14363 (14.0 KiB)  TX bytes:13491 (13.1 KiB)

確認一下 inet addr 欄位的 IP 位址,通常只要有拿到 IP 位址就表示設定沒問題,這樣就完成無線網路的設定了。

如果在終端機之下,要設定網路又不想輸入那麼多指令,可以改用 wicd-curses 這個小工具,請參考 raspyFi 的教學

參考資料:Raspberry Pi葉難