Centos7VMware虛擬機最小化安裝后,安裝Tenda U12 USB無線網卡驅動


前幾天買下了Tenda U12 USB 無線網卡 ,想連接上無線玩玩,可惜買下折騰了一周才解決他它驅動問題,前后在VMware上裝了十多次,測試了好幾個內核版本才搞定,好了廢話不多說,分享下我安裝過程的經驗:

  原本是在CentOS7 最小化后安裝驅動的,沒想到遇到這么多問題,只能現在圖形化界面先進行調試,完了再最小化安裝。

安裝環境:

  U12驅動官方下載:http://wifi.tenda.com.cn/

 

  我的CentOS7內核:

3.10.0-327.el7.x86_64(滿足2.6.18~4.4內核)

錯誤:

直接執行安裝目錄下的install時,在執行到make命令時報錯:

  由於字數限制,錯誤的詳細信息:鏈接https://pan.baidu.com/s/1DQsJyRuLPDxlwBLc2S39Aw 密碼:tcrj

關鍵錯誤信息:

/root/U12_linux_v5.1.5_19247.20160830/driver/rtl8812AU_linux_v5.1.5_19247.20160830/os_dep/linux/ioctl_cfg80211.c:87:13: 錯誤:‘IEEE80211_BAND_2GHZ’未聲明(不在函數內)
   .band   = IEEE80211_BAND_2GHZ,  \
             ^
/root/U12_linux_v5.1.5_19247.20160830/driver/rtl8812AU_linux_v5.1.5_19247.20160830/os_dep/linux/ioctl_cfg80211.c:145:2: 附注:in expansion of macro ‘CHAN2G’
  CHAN2G(1, 2412, 0),
  ^
/root/U12_linux_v5.1.5_19247.20160830/driver/rtl8812AU_linux_v5.1.5_19247.20160830/os_dep/linux/ioctl_cfg80211.c:96:13: 錯誤:‘IEEE80211_BAND_5GHZ’未聲明(不在函數內)
   .band   = IEEE80211_BAND_5GHZ,  \
             ^
/root/U12_linux_v5.1.5_19247.20160830/driver/rtl8812AU_linux_v5.1.5_19247.20160830/os_dep/linux/ioctl_cfg80211.c:162:2: 附注:in expansion of macro ‘CHAN5G’
  CHAN5G(34, 0),  CHAN5G(36, 0),
  ^
/root/U12_linux_v5.1.5_19247.20160830/driver/rtl8812AU_linux_v5.1.5_19247.20160830/os_dep/linux/ioctl_cfg80211.c:162:2: 錯誤:初始值設定元素不是常量
View Code

大意就是說:

  編譯時報錯,IEEE80211_BAND_2GHZ未定義,如之前分析,這是由於U12基於linux無線框架,需要內核中包含cfg80211和mac80211模塊,所以需要重新編譯內核。
 
解決辦法:
1.下載驅動和一會要編譯的內核(我這里選擇的是4.1.8):
   驅動下載:http://wifi.tenda.com.cn/  
  內核下載:https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/
  

  1.1確保你的網卡已經插上並識別:

  如果你數最小化安裝,請先注冊lsusb命令

yum install usbutils

  然后使用lsusb命令:

lsusb

  這個就是TendaU12的設備信息:

Bus 001 : 指明設備連接到哪(哪條總線)
Device 002 : 表明這是連接到總線上的第二台設備
ID : 設備的ID
Broadcom Corp. Bluetooth Controller :生產商名字和設備名

 

2.編譯內核:

  在編譯之前,如果你是最小化安裝,你需要先安裝gcc,bc 編譯器

yum install gcc*,bc -y

  2.1 解壓內核到/usr/src/kernels/

tar -zxvf linux-4.1.8.tar.gz -C /usr/src/kernels/

  2.2 進入解壓的/usr/src/kernels/linux-4.1.8下,拷貝原有的配置文件

cp /boot/config-3.10.0-327.el7.x86_64  .config

  2.3 使用make menuconfig時檢查下cfg80211和mac80211是否有編譯到

make menuconfig

  這里可能會報錯:

In file included from scripts/kconfig/lxdialog/checklist.c:24:0:

scripts/kconfig/lxdialog/dialog.h:31:20: fatal error: curses.h: 沒有那個文件或目錄

 #include CURSES_LOC

                    ^

compilation terminated.

make[2]: *** [scripts/kconfig/lxdialog/checklist.o] 錯誤 1

make[1]: *** [menuconfig] 錯誤 2

make: *** [menuconfig] 錯誤 2
View Code

 這是因為CentOS7系統中缺少一個套件 ncurses-devel

yum install ncurses-devel -y

  注冊后,重新執行進入圖形化界面:

  在“networking support”-》“wireless”下。如果沒有按下“M”表示編譯成模塊,然后保存。如果已經有了這兩個模塊也要保存,否則接下來make時,沒法編譯。

  2.4 開始編譯內核 (時間比較長大概30多分鍾左右,看會電影啥的)

make ; make modules_install ; make install ;

  2.5 設置默認啟動內核為4.1.8

查看啟動項 cat /boot/grub2/grub.cfg | grep 3.10.69
設置默認啟動項 grub2-set-default "CentOS Linux (3.10.69) 7 (Core)"
查看默認啟動項 grub2-editenv list
生成配置 grub2-mkconfig -o /boot/grub2/grub.cfg

  2.6 重啟系統,安裝相關模塊,並編譯無線驅動

insmod /lib/modules/4.1.8/kernel/net/rfkill/rfkill.ko
insmod /lib/modules/4.1.8/kernel/net/wireless/cfg80211.ko 
insmod
/lib/modules/4.1.8/kernel/net/mac80211/mac80211.ko
insmod 8812au.ko

  先注冊前3個模塊,之后的8812au.ko 模塊如果沒有,在執行驅動下的install.sh文件時會自動注冊。

3.安裝驅動

這時候如果你直接執行install.sh文件,會沒有上面的錯誤,但是結尾還會有2個errors .這是它在驅動中沒有添加網卡的ID值。

  3.1 添加網卡ID

  選用任意編輯器,打開os_dep/linux/usb_intf.c,在其中加入上面lsusb結果:

  找到CONFIG_8812A, 在下面加入如圖所示字段。如果你們的lsusb結果與此不同,請加入自己lsusb看到的vendor id 和 device id。

  例如,我這里lsusb會發現插上usb網卡后出現 ID 2604:0012,這就是對應的vendor id 和device id. 把這個id插入usb_intf.c

    3.2執行網卡驅動 install.sh或者直接在驅動目錄下執行make ;make install;

  如果你要是執行./install.sh 那么,你需要將原始的驅動包刪除,然后將修改后的文件重新打包,但是文件名要相同。因為在install.sh 中會對這個驅動壓縮包解壓,解壓后會將你就修改的文件又替換為原文件。

  刪除后重行打包:

  打包:

./install.sh

 

 

  如果你直接在驅動目錄下執行

make ;make install;

  則沒有上述重行打包要求

 

  3.3 如果在執行install.sh后還有報錯的信息,那么不用管,它之后又重行注冊了8812au.ko。

  此時,如果你是圖形化界面,那么在網絡管理中就會有wifi的標識,執行ifconfig可以看到自己網卡的名字;

  如果你是最小化安裝時,則建議先安裝第5步,之后使用iwconfig查看:

 

4.wpa_supplicant配置

  在執行完上述的步驟后,你如果點擊你要的熱點后,並輸入正確的密碼的密碼顯示無法連接,那么你就需要進行wpa_supplicant配置

新建文件(如果沒有) /etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
network={ ssid="T你要連接的wifi名" psk="密碼" }

我這里是

 

5.安裝wireless_tools

之后我們會使用iwconfig,wpa* 等命令 ,所以先注冊一下:

進入驅動目錄下的wireless_tools解壓后:

執行:

make;make install;

 6.無線掃描

  6.1先安裝工具iw:

yum install iw -y

  6.2、iw dev(非必要步驟)

查看無線網口,interface后面即為無線網口號

phy#0
   Interface wls35u1
       ifindex 3
       wdev 0x1
       addr a4:db:30:84:4b:1c
       type managed

如果連接成功會多出下面的兩行,顯示 SSID 和信道

ssid CMCC
channel 11 (2462 MHz), width: 40 MHz, center1: 2452 MHz

  6.3、ip link set wls35u1 up(必要)

激活無線網絡接口

  6.4、ip link show wls35u1(非必要步驟)

檢驗接口是否激活成功

wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000
    link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff 

<BROADCAST,MULTICAST,UP,LOWER_UP> 中的UP 表明該接口激活成功,后面的 state DOWN 無關緊要。

  6.5、iw wls35u1 link(非必要步驟)

查看無線網絡連接情況(剛開始是沒有連接的,不用管)

  6.6、iwlist wls35u1 scan | grep SSID(如果知道 Wifi 名字,就不需要)

掃描可連接的wifi(這里有個坑,網上好多是iw ,其實這里應該使用 iwlist,不然沒結果)

 

7. 連接wls35ul到網絡,並以daemon方式運行

  方法一:編寫配置文件

wpa_supplicant -B -i wls35u1 -c /etc/wpa_supplicant/wpa_supplicant.conf

-B Background 在后台以daemon 運行
-i interface 
-c 配置文件

  注意:此時如果重新執行此命令,則需要使用kill命令殺死對應的wpa*進程后。然后再執行

 執行以上命令后,執行ifconfig就可以看到無線網卡,這在之前是看不到的,而且此時,U12的指示燈開始亮起,表示開始工作。

   方法二:不編寫配置文件

wpa_supplicant -B -i wls35u1 -c <(wpa_passphrase "ssid" "psk")

連接指定的SSID,將ssid 替換為實際的網絡名稱,psk 替換為無線密碼,請保留引號。

 

8.ip獲取

  8.1 用dhcp 獲得 IP 分配:
  # dhclient wls35ul

  測試是否成功地從路由器獲取了ip(重要)

  #ip addr  show wls35ul

  如果分配有ip,即可上網,也可以有ping直接測試

  8.2如果你要使用靜態的IP配置,使用nmcli命令來配置(參考我的:Linux 最小化安裝后IP的配置(手動獲取靜態IP地址)

  

9. 相關命令

  關閉連接
  wpa_cli terminate
  連接狀態
  wpa_cli status

18.上網試試(有圖形化界面的試試):

 

  

 

參考網址:

  在Linux下安裝Tenda U12驅動 https://jingyan.baidu.com/article/2fb0ba40884e1500f2ec5fd3.html

  Centos7 Virtualbox虛擬機安裝Tenda U12 11AC USB無線網卡驅動  https://blog.csdn.net/heyuqian_csdn/article/details/78805029

  make menuconfig時出現 #include CURSES_LOC錯誤  https://blog.csdn.net/lvkunfeng07/article/details/51191938

  Linux 手動無線網卡 WiFi 配置 https://www.jiangmiao.org/blog/1781.html

  在 Linux 中安裝使用 lsusb 查看 USB 設備  http://www.wilf.cn/post/lsusb.html

   CentOS 7 命令行版初次安裝網絡配置  https://www.jianshu.com/p/f9e14e50a28a

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM