為4412全能版V_4.0 ubuntu 在A(yíng)ndroid4.4.4的內核下移植wifi背景:由于廠(chǎng)家迅為的全能版的V4.0底板和V3.5底板的wifi部分有改動(dòng),所以需要重新移植wifi 軟件基礎 :基于迅為提供的全能版V_4.0的Android4.4.4源碼編譯出來(lái)的ubuntu內核之上移植ubuntu文件系統硬件基礎:全能版V4.0底板,4412的scp大內存,或者pop大內存都行一. 預備知識: 1.WPA Supplicant,這里我使用的是wpa_supplicant-2.5.tar.gz 簡(jiǎn)介:WPA Supplicant is a Wi-Fi Protected Access (WPA) client and IEEE 802.1X supplicant. It implements WPA key negotiation with a WPA Authenticator and Extensible Authentication Protocol (EAP) authentication with an Authentication Server. In addition, it controls the roaming and IEEE 802.11 authentication/association of the wireless LAN driver. This is useful for connecting to a password protected wireless access point.大概意思是: WPA Supplicant 是一個(gè)受保護的wifi接入點(diǎn)的客戶(hù)端,這個(gè)客戶(hù)端兼有鏈接和認證802.1x協(xié)議的功能。它具體實(shí)現了WPA 密碼在WPA 認證器上的認證功能,并且控制著(zhù)漫游(訪(fǎng)問(wèn)外網(wǎng))和無(wú)線(xiàn)局域網(wǎng)驅動(dòng)的IEEE 802.11的認證和鏈接。 在連接有密碼保護的無(wú)線(xiàn)接入點(diǎn)時(shí)是很有用的。 2.libnl,這里我使用的是libnl-1.1.4.tar.gz簡(jiǎn)介:The libnl-suite is a collection of libraries providing APIs to netlink protocol based Linux kernel interfaces.大概意思是:這個(gè)libnl套件是是一些庫的集合,這些庫為基于Linux內核接口的網(wǎng)絡(luò )連接協(xié)議提供了一些API。
因為WPA Supplicant是基于linux內核的,并且需要連接網(wǎng)絡(luò ),所以需要libnl來(lái)提供API。
3.openssl 這里我使用是openssl-0.9.8za.tar.gz簡(jiǎn)介:The OpenSSL package contains management tools and libraries relating to cryptography.These are useful for providing cryptographic functions to other packages, such as OpenSSH, email applications and web browsers (for accessing HTTPS sites).大概的意思是:OpenSSL包含了一些管理工具和一些涉及到密碼學(xué)的庫。他對需要加密的傳輸包是有用的,比如OpenSSH電子郵件或者是網(wǎng)頁(yè)瀏覽。很明顯openssl在用WPA Supplicant來(lái)上網(wǎng)是時(shí)是起到加密作用的。二. 一些必要的資料1. 6620_launcher 2. firmware文件夾下的東西 3. mt6620文件夾下的東西 4.genetlink.h前三個(gè)都是MT6620這個(gè)wifi芯片廠(chǎng)家提供的源碼驅動(dòng)編譯出來(lái)的驅動(dòng)和固件,以及加載固件所有的工具。這些東西都跟Android4.4.4共用,可以在編譯好的Android源碼中的out目錄下找到。另外第四個(gè)是在調試過(guò)程中發(fā)現libnl的一個(gè)bug,為了解決這個(gè)問(wèn)題需要用這個(gè)文件和libnl中的替換,下面有介紹。三. 具體操作步驟:以下操作是在開(kāi)發(fā)板上進(jìn)行,需要提前把以上提到的資料復制到TF卡上,然后進(jìn)行下面的步驟。另外需要首先安裝vim ,開(kāi)機后連接網(wǎng)線(xiàn)輸入apt-get install vim ①. 將廠(chǎng)家提供的東西替換之前版本ubuntu系統上同樣的東西1. 備份6620_launcher,將新的6620_launcher復制過(guò)去,并且設置權限為777cp /system/bin/6620_launcher /system/bin/6620_launcher_backcp /media/disk/wifi/6620_launcher /system/bin/6620_launcherchmod 777 /system/bin/6620_launcher2. 備份modules文件夾,將mt6620復制過(guò)去,命名為modules,并且設置權限777cp -r /system/lib/modules /system/lib/modules_backrm -r /system/lib/modulescp -r /media/disk/wifi/mt6620 /system/lib/moduleschmod 777 /system/lib/modules/*3. 備份firmware,將新的firmware復制過(guò)去,并且設置權限為777cp -r /system/etc/firmware /system/etc/firmware_backrm -r /system/etc/firmwarecp -r /media/disk/wifi/firmware /system/etc/firmwarechmod -R 777 /system/etc/firmware/*cp -r /etc/firmware /etc/firmware_backrm -r /etc/firmwarecp -r /media/disk/wifi/firmware /etc/firmwarechmod -R 777 /etc/firmware/*②.修改wifi名字和密碼文件將/etc/wpa_supplicant.conf文件中除了第一行全部刪掉最后結果應該是只剩下這句話(huà):ctrl_interface=/var/run/wpa_supplicant③.修改腳本文件/etc/init.d/itop-set將腳本中 “support MT6620 WIFI Module” 部分修改成這樣 mknod /dev/stpwmt c 190 0 mknod /dev/stpgps c 191 0 mknod /dev/fm c 193 0 mknod /dev/wmtWifi c 194 0 insmod /system/lib/modules/mtk_hif_sdio.ko insmod /system/lib/modules/mtk_stp_wmt.ko insmod /system/lib/modules/mtk_stp_uart.ko insmod /system/lib/modules/mtk_stp_gps.ko# #insmod /system/lib/modules/hci_stp.ko# insmod /system/lib/modules/mt6620_fm_drv.ko# insmod /system/lib/modules/mtk_fm_priv.ko insmod /system/lib/modules/mtk_wmt_wifi.ko WIFI_major=194 insmod /system/lib/modules/wlan_mt6620.ko chmod 0666 /dev/stpwmt chmod 0666 /dev/stpgps chmod 0666 /dev/fm chmod 0666 /dev/wmtWifi chmod 0660 /dev/ttySAC0 chmod 0666 /dev/gps /system/bin/6620_launcher -m 1 -b 115200 -n /system/etc/firmware/mt6620_patch_hdr.bin -d /dev/ttySAC0 & sleep 5 echo 1 > /dev/wmtWifi# wpa_supplicant_topeet -d -Dwext -iwlan0 -c /etc/wpa_supplicant.conf & /usr/bin/wpa_supplicant -Dnl80211 -iwlan0 -c /etc/wpa_supplicant.conf & sleep 3 dhclient wlan0 & 特別注意:insmod /system/lib/modules/wlan_mt6620.ko 和 /usr/bin/wpa_supplicant -Dnl80211 -iwlan0 -c /etc/wpa_supplicant.conf &還有/system/bin/6620_launcher -m 1 -b 115200 -n /system/etc/firmware/mt6620_patch_hdr.bin -d /dev/ttySAC0 &一定要一致④.移植預備知識中提到的三個(gè)資料1. 在根目錄下建立wpa文件夾,并且將libnl-1.1.4.tar.gz、openssl-0.9.8za.tar.gz、wpa_supplicant-2.5.tar.gz拷貝到里面解壓。2.把wpa_supplicant-2.5里面的patches文件夾下的openssl-0.9.8za-tls-extensions.patch文件拷貝到openssl-0.9.8za目錄下,運行:patch -p1 < openssl-0.9.8za-tls-extensions.patch若果提示錯誤patch: command not found,那么執行apt-get install patch,然后在運行。3.進(jìn)入openssl-0.9.8za目錄新建install文件夾,用于裝opessl,修改Makefile,修改如下:CC=gccRANLIB=ranlibINSTALLTOP=/wpa/openssl-0.9.8za/installOPENSSLDIR=/wpa/openssl-0.9.8za/install然后編譯 make安裝 make install完成后會(huì )在/wpa/openssl-0.9.8za/install下生成一些文件然后執行:cp -r /wpa/openssl-0.9.8za/install/lib/* /usr/lib4.進(jìn)入libnl-1.1.4配置安裝目錄:./configure --prefix=/usr然后:make編譯完之后需要執行以下步驟,把提供的genetlink.h替換libnl-1.1.4中的genetlink.hcp -r /wpa/libnl-1.1.4/lib/* /usr/lib/rm /wpa/libnl-1.1.4/include/linux/genetlink.hcp /media/disk/wifi/genetlink.h /wpa/libnl-1.1.4/include/linux/cp -r /wpa/libnl-1.1.4/include/* /usr/include/5.進(jìn)入/wpa/wpa_supplicant-2.5/wpa_supplicant下,編譯wpa_supplicant首先建立配置文件:cp defconfig .config然后修改.config,增加以下內容:CC=gcc -L/wpa/openssl-0.9.8za/install/lib CFLAGS+=-I/wpa/openssl-0.9.8za/install/includeLIBS+=-L/wpa/openssl-0.9.8za/install/lib然后:make把編譯出來(lái)的wpa_supplicant和wpa_passphrase復制到/usr/bin中。這里注意/usr/bin已經(jīng)有wpa_passphrase,可以先將這個(gè)文件刪除,然后再復制過(guò)來(lái)另外為了排除干擾可以把之前wifi的東西刪除:rm /sbin/wpa_supplicantrm -r /etc/wpa_supplicantrm /system/bin/wpa_supplicant四.連接wifi經(jīng)過(guò)以上步驟wifi的移植就結束了,下面是怎么連接wifi。1. 開(kāi)機之后輸入wifi名字和密碼,類(lèi)似于這樣:wpa_passphrase XXX "YYY " >> /etc/wpa_supplicant.conf比如我們的wifi名字是Xm 密碼是aaaaaaaa那么就這樣輸入:wpa_passphrase Xm "aaaaaaaa" >> /etc/wpa_supplicant.conf 2. 再次開(kāi)機就可以自動(dòng)連接上了,測試是否可以聯(lián)網(wǎng)可以ping一下百度ping www.baidu.com至此,在公司同事的幫助下,Ubuntu移植WiFi的工作就完成了。在檢驗wifi能夠成功連接的情況下,可以把那些備份文件刪掉,這樣可以減小系統的大小。另外強調一點(diǎn)就是,上面的所有操作都是在迅為的V4.0全能板上燒寫(xiě)迅為的Ubuntu系統做的。