詳解USB無線網卡的Linux驅動移植

2021-01-09 電子產品世界

引言

本文引用地址:http://www.eepw.com.cn/article/201808/385301.htm

COMFAST CF150NS USB無線網卡使用IEEE802.11n無線技術,無線傳輸速率最高達150 Mbps。相比傳統的54 Mbps IEEE802.11g產品,擁有更高的無線帶寬,讓區域網內的數據傳輸更加高效,能有效地減少網絡延遲,使語音視頻、網路遊戲、在線點播更流暢。CF150NS還使用了CCA(Clear Channel Assessment)空頻道檢測技術,在檢測到周邊有無線信號幹擾時,可自動調整頻寬模式,避開信道幹擾,使無線信號更加穩定。當幹擾消失時,又可自動捆綁空閒信道,充分利用信道捆綁優勢,提升無線性能。CF150NS主要技術參數:主晶片Realtek 8188SU,接口USB2.0,頻率範圍為2.4~2.48 GHz,支持IEEE802.11n/g/b無線標準;無線速率最高可達150 Mbps(IEEE802.11n);工作模式AdHoc和Infrastructre可選;加密特性為64/128位WEP、WPA/WPA2、WPAPSK/WPA2PSK(TKIP/AES);支持的作業系統為Windows/Linux/Mac[1]。

1 移植要求

移植目標是在原有ARM監測系統的基礎上實現USB無線網卡功能擴展,為系統提供數據遠程無線採集方案。原ARM監測系統是在優龍YLE2440開發板上開發的,其Linux內核版本為2.6.12.7。USB無線網卡是外部無線網絡系統提供的指定產品COMFAST CF150NS,其主晶片Realtek 8188SU的Linux內核版本要求是2.6.18~2.6.33。也就是說,整個移植過程要求USB無線網卡驅動必須是Realtek 8188SU,且工作環境是Linux2.6.12.7。Realtek公司對8188SU主晶片驅動提供的建議是PC機Fedora Linux 2.6.24測試通過。經測試,若直接將驅動使用Linux 2.6.12.7內核編譯,將出現大量錯誤。如何將驅動移植到Linux 2.6.12.7還需要進一步研究。

2 移植過程

2.1 移植環境搭建

移植過程採用VM虛擬機下安裝RedHat9.0來完成。具體配置:PC作業系統為VMware Workstation5.5 RedHat 9.0(Linux 2.4.20);硬體為優龍YLE2440開發板;作業系統為Linux 2.6.12.7,安裝位置為/test/yle2440_2.6.12;交叉編譯器為gcc3.4.1,安裝位置為/usr/local/arm/3.4.1/bin/;Busybox安裝位置為/test/busybox;文件系統為/test/rootfs/;文件系統生成工具為mkcramfs;USB無線網卡驅動源碼為/test/8188su/driver/8188su;無線管理工具wirelesstools為/test/wireless_tools.29.tar.gz。另外,還需要準備Linux 2.6.24內核[2]。

2.2 Linux內核配置[3]

進入內核安裝目錄/test/yle2440_2.6.12,運行內核配置:

[root@localhost test]# make menuconfig

(1) 增加WLAN支持

選擇[Device Driver]→[Networking support]→[Wireless LAN (nonhamradio)]→[Wireless LAN drivers (nonhamradio) Wireless Extensions]。

(2) 增加DHCP支持

選擇[Device Driver]→[Networkingsupport]→[Networking options]。務必選中「Packet socket」和「IP: DHCP support」、「Network packet filtering framework(Netfilter)」選項。

另外,還需要udhcpc的配置文件。拷貝Busybox目錄/examples/udhcp下的simple.script到文件系統/usr/share/udhcpc/下,並重命名為default.script。將default.script中的

RESOLV_CONF=/etc/resolv.conf

OR: rgb(68,68,68); WORD-SPACING: 0px; PADDING-TOP: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px>修改為

RESOLV_CONF=/tmp/resolv.conf

運行「mkcramfs rootfs rootfs.cramfs」生成根文件系統rootfs.cramfs,並重新下載到目標板。

2.3 Linux內核文件修改

首先將Linux2.6.24內核中的netdevice.h、wireless.h、iw_handler.h拷貝至Linux2.6.12內核相應目錄下。然後以Linux2.6.24內核為藍本進行文件建立、修改和替換。需要替換的文本清單為:

① /include/linux/目錄,wireless.h、skbuff.h、textsearch.h、netdevice.h、slab.h、ip.h、icmp.h、socket.h;

② /include/net/目錄,iw_handler.h、sock.h;

③ /include/sound/目錄,core.h;

④ /net/core/目錄,dev.c、skbuff.c、wireless.c、neighbour.h;

⑤ /net/ipv4/目錄,ip_output.c、devinet.c、socket.c;

⑥ /net/netlink目錄,af_netlink.c;

⑦ /mm/目錄,slab.c。

文件替換完畢進行內核編譯:

make zImage

生成內核zImage後下載到目標板。在內核編譯的過程中,還會出現許多錯誤,主要是C90語法錯誤、所調用函數數據類型不匹配、段符號未定義等問題。主要的修改內容:

① 內核編譯時若出現C90語法和C99語法錯誤,只需按照本編譯系統所採用的編譯標準進行語法修改。例如,/net/core/dev.c中函數「net_rx_action」的第1713~1729行提示有語法錯誤。其中,第1713行的錯誤按照C90語法修改即可消除,其他錯誤為所調用函數數據類型不匹配所致,修改所調用函數的數據類型即可。

② 出現提示「.data=no_cong_thresh」未定義之類的錯誤時,在相應源碼中將其注釋即可。

③ Wireless_seq_show函數錯誤直接採用2.6.24版本替換2.6.12版本即可。

④ net_sysctl_strdup類錯誤和警告一定要消除,消除方法是替換neighbour.h文件及相關文件。

2.4 USB無線網卡驅動編譯

首先,下載主晶片Realtek 8188SU的最新驅動RTL8188SU_usb_linux_v2.6.6.0.20101111.zip,然後解壓進入相應目錄修改config、Makefile文件。

(1) 修改config

[root@localhost 8188su]# gvim config

修改第16行,關閉PC模式:

16 CONFIG_PLATFORM_I386_PC=n

修改第18行,打開ARM模式

18 CONFIG_PLATFORM_ARM_S3C=y

(2) 修改Makefile

修改交叉編譯器和ARM內核安裝目錄:

[root@localhost 8188su]# gvim Makefile

修改第94行為gcc交叉編譯器所在路徑:

CROSS_COMPILE:=/usr/local/arm/3.4.1/bin/armlinux

修改第95行,直接注釋掉以下語句:

相關焦點

  • USB無線網卡的Linux驅動移植
    引言本文引用地址:http://www.eepw.com.cn/article/175406.htmCOMFAST CF150NS USB無線網卡使用IEEE802.11n無線技術,無線傳輸速率最高達150 Mbps。
  • linux下USB驅動移植
    >#include linux/device.h>#include linux/delay.h>/*end add*//**********************add by lfc*************************************/static struct s3c2410_hcd_info usb_sbc2410
  • usb無線網卡怎麼用 桌上型電腦usb無線網卡驅動安裝
    今天小編通過親身實踐,分享一下usb無線網卡怎麼用,希望對有需要的朋友有所幫助。桌上型電腦安裝usb無線網卡,無線上網其實並不難,難點主要在驅動安裝部分,以下是桌上型電腦usb無線網卡驅動安裝使用教程。如果插入USB無線網卡,在設備管理器中,找不到有這個設備,則檢查下網卡是否正確插入USB接口或換個接口試試。第二步:安裝驅動桌上型電腦要無線上網,最重要的是要USB無線網卡能正常工作,而驅動安裝則是最重要的一步。
  • 一種基於嵌入式Linux系統的的無線路由器設計方案
    本文引用地址:http://www.eepw.com.cn/article/262484.htmlinux作業系統文章專題:linux作業系統詳解(linux不再難懂)  目前,WiFi技術能夠支持IEEE的802.11b、802.11g和802.1ln標準,分別支持10
  • usb_modeswitch移植與應用
    隨著移動通信,無線通信的發展,越來越多的設備被製作成USB接口,像一些無線網卡,3G數據卡等等。這些設備的廠家一般都會提供windows 下驅動,這些設備在第一次插上機子的時候,它們處於CDROM+快閃記憶體模式,可以從中提供驅動程序安裝驅動,在驅動程序安裝完成後,驅動會轉換成3G模式,此時就會出現usb modem設備,目前的3G卡片全都是這樣,這就是所謂的「ZeroCD」。
  • usb無線網卡晶片是什麼 usb無線網卡晶片介紹
    usb無線網卡晶片是什麼?很多人都不清楚,今天小編就為大家來講解一下什麼叫usb無線網卡晶片。無線網卡是一種內置的wifi晶片,用戶可以通過usb接口進行傳輸網卡,緊接著連接電腦的usb埠,根據提示進行安裝,安裝完成之後進行驅動,最後電腦的網卡中就會出現新的無線網卡設備,用戶就可以通過這個usb無線網卡進行上網。
  • iMX8MM移植AC9260無線網卡
    上次把Ubuntu-Base移植到iMX8MM之後啊,我的開發方便了很多,但是在聯網方面卻又遇上了問題。我在當初開發板選型的時候,看到飛凌嵌入式他家iMX8系列有兩個型號,一個是我手上這個iMX8M Mini,還有一個是擴展性能更好的iMX8M,在iMX8M上飛凌嵌入式提供了Wireless-AC 9260無線網卡的驅動,這玩意兒好啊,最大1.7Gbps的速率,網絡這塊就沒有性能瓶頸了。
  • usb轉網卡怎麼用 usb轉網卡使用方法【詳解】
    usb轉網卡主要應用於 平板電腦 等等無線設備上,通過了解電腦與設備使其連接上網絡,usb轉網卡的存在大大方便了用戶的實際使用,因此在日常生活中擁有較為廣泛。市面上的usb轉網卡數碼種類繁多,我們可以根據自己的實際預算需求選擇最為合適的一款使用。
  • 基於嵌入式Linux系統的3G/4G路由器設計
    最後加載這兩個驅動文件並插上該多模無線上網卡,完成驅動加載。3.1.2 終端模式轉換在3.1.1節中實現的是USB設備的加載,即Linux系統識別出無線上網卡為USB設備並能與之通信。而一般 USB無線上網卡設備都具有兩個USB子設備模式,即usb-storage子設備模式和modern子設備模式。
  • 「正點原子Linux連載」第七十章Linux WIFI驅動實驗
    70.1.4.5可以看出,RTL8189 SDIO WIFI驅動加載成功,同樣使用「ifconfig -a」命令查看一下是否有wlanX(X=0…n)網卡存在,如果有的話就說明RTL8189 SDIO WIFI驅動工作正常。
  • 轉載 | Uboot DM9621網卡移植之路
    移植USB Host Controller驅動使能USB3503 Hub移植DM9621驅動測試驗證功能性    接下來就按照這幾個步驟進行Uboot中DM9621網卡的移植之路,最終實現在Uboot中使用網絡命令進行內核的加載等操作。
  • USB網卡藍牙
    外置WiFi的理由其實很簡單,要麼是不捨得拆機器,去折騰它,要是車門被焊死,就像小米家的筆記本和微軟的surface系列平板一樣,無線網卡統統都被焊死在主板上,其實這個是可以解決的,就是你買一個無線網卡焊接套餐就行,某寶有的,自己找一找就行,技術不好,手殘黨就不建議了,一不小心,整個電腦就廢了現在市面上USBwifi很多了
  • 臺式機無線網卡怎麼安裝
    隨著生活水平的提高,現在很多家庭裡都配備了無線路由器,而桌上型電腦除了使用網線連接路由器上網外,也可以通過安裝無線網卡來接wifi上網。下面就和大家分享一下臺式機安裝無線網卡的方法,有需要的朋友可以參考一下。
  • 運營商網絡機頂盒廢物利用,拆主板wifi模塊製作usb無線網卡
    偶然看到盒子主板上無線wifi模塊,接線較少,疑似usb接口。查閱資料果然如此,於是拆下動手做一個usb無線網卡,可以說是廢物利用,也可以說是自娛自樂,因為速率只有150M。,通過幾個較少針腳連接在一起,通過查閱資料基本都是usb接口,可以更改為usb無線網卡。
  • Ubuntu 7.1內核編譯詳解與無線網卡安裝
    比如:無線網卡不能配置固定IP,音效卡有點問題,顯卡裝起來費勁。無線網卡是有點受不了的,所以還是決定升級一把內核,主要是打個補丁,用新一點的驅動。事先做好準備:1.保存好lspci, lsmod的配置和內核模塊,弄清楚所有的硬體用的是什麼模塊。在Ubuntu下,基本上分三種模塊:內核模塊、Ubuntu特殊模塊(新的無線網卡之類)和受限驅動。
  • 運營商盒子再利用,數碼製作教程,wifi模塊變usb無線網卡方法
    偶然看到盒子主板上無線wifi模塊,接線較少,疑似usb接口。查閱資料果然如此,於是拆下動手做一個usb無線網卡,可以說是廢物利用,也可以說是自娛自樂,因為速率只有150M。盒子主板及無線模塊這種疊放在盒子主板上,通過幾個較少針腳連接在一起,通過查閱資料基本都是usb接口,可以更改為usb無線網卡。
  • AM335x(TQ335x)學習筆記——Nand&&網卡驅動移植
    移植完成音效卡驅動之後本想再接再勵,移植網卡驅動,但沒想到的是TI維護的內核太健壯,移植網卡驅動跟之前移植按鍵驅動一樣簡單,Nand驅動也是如此,於是,本人將Nand和網卡放在同一篇文章中介紹。
  • 如何為Linux無線網卡配置無線喚醒功能
    如何為Linux無線網卡配置無線喚醒功能 我有一臺用於備份我的所有設備的網絡存儲(NAS)伺服器。然而當我備份我的 Linux 筆記本時遇到了困難。當它休眠或掛起時我不能備份它。當我使用基於 Intel 的無線網卡時,我可以配置筆記本上的 WiFi 接受無線喚醒嗎?
  • Win7系統USB無線網卡怎麼用?USB無線網卡的使用方法
    USB無線網卡對大家來說應該很熟悉吧,操作起來非常的簡單只要插入網卡就可以使用了。但最近,有Win7系統的用戶,還不知道怎麼使用USB無線網卡。那Win7系統USB無線網卡到底怎麼用呢?現在小編就和大家說一下USB無線網卡的使用方法吧!
  • Linux2.6內核驅動移植參考
    作者:晏渭川 隨著Linux2.6的發布,由於2.6內核做了教的改動,各個設備的驅動程序在不同程度上要 進行改寫。為了方便各位Linux愛好者我把自己整理的這分文檔share出來。該文當列舉 了2.6內核同以前版本的絕大多數變化,可惜的是由於時間和精力有限沒有詳細列出各個 函數的用法。