여러가지를 고려하여 kernel 에서 제공되는 Wifi Dongle을 선정했으나
kernel source에서 제공되는 driver로는 driver로딩은 되었지만 wlan0가 보이지 않음.
Makefile
73 CONFIG_PLATFORM_ARM_NVS3320 = y
..
513 ifeq ($(CONFIG_PLATFORM_ARM_NVS3320), y)
514 EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
515 ARCH := arm
516 CROSS_COMPILE := arm-cortex_a9-linux-gnueabi-
517 KVER := 3.4.39
518 KSRC:= ~/git_local/myproject/kernel/kernel-3.4.39/
519 endif
빌드하여 kernel driver를 생성한후
보드에 복사한 후 insmod를 통해서 device driver를 로딩하면 wlan 이 보임.
# insmod 8192cu.ko
[ 26.500000] rtl8192cu driver version=v4.0.2_9000.20130911
[ 26.500000] build time: Jan 18 2016 16:18:46
[ 26.510000]
[ 26.510000] usb_endpoint_descriptor(0):
[ 26.510000] bLength=7
[ 26.510000] bDescriptorType=5
[ 26.520000] bEndpointAddress=81
[ 26.520000] wMaxPacketSize=200
[ 26.520000] bInterval=0
[ 26.530000] RT_usb_endpoint_is_bulk_in = 1
[ 26.530000]
[ 26.530000] usb_endpoint_descriptor(1):
[ 26.540000] bLength=7
[ 26.540000] bDescriptorType=5
[ 26.550000] bEndpointAddress=2
[ 26.550000] wMaxPacketSize=200
[ 26.550000] bInterval=0
[ 26.550000] RT_usb_endpoint_is_bulk_out = 2
[ 26.560000]
[ 26.560000] usb_endpoint_descriptor(2):
[ 26.560000] bLength=7
[ 26.570000] bDescriptorType=5
[ 26.570000] bEndpointAddress=3
[ 26.570000] wMaxPacketSize=200
[ 26.580000] bInterval=0
[ 26.580000] RT_usb_endpoint_is_bulk_out = 3
[ 26.580000]
[ 26.580000] usb_endpoint_descriptor(3):
[ 26.590000] bLength=7
[ 26.590000] bDescriptorType=5
[ 26.590000] bEndpointAddress=84
[ 26.600000] wMaxPacketSize=40
[ 26.600000] bInterval=1
[ 26.600000] RT_usb_endpoint_is_int_in = 4, Interval = 1
[ 26.610000] nr_endpoint=4, in_num=2, out_num=2
[ 26.610000]
[ 26.610000] USB_SPEED_HIGH
[ 26.610000] CHIP TYPE: RTL8188C_8192C
[ 26.620000] register rtw_netdev_ops to netdev_ops
[ 26.620000] Chip Version ID: VERSION_NORMAL_TSMC_CHIP_88C.
[ 26.630000] RF_Type is 3!!
[ 26.630000] EEPROM type is E-FUSE
[ 26.640000] ====> ReadAdapterInfo8192C
[ 26.640000] Boot from EFUSE, Autoload OK !
[ 26.780000] EEPROMVID = 0x0bda
[ 26.780000] EEPROMPID = 0x8176
[ 26.780000] EEPROMCustomerID : 0x00
[ 26.790000] EEPROMSubCustomerID: 0x00
[ 26.790000] RT_CustomerID: 0x00
[ 26.790000] _ReadMACAddress MAC Address from EFUSE = 90:9f:33:ec:f5:93
[ 26.800000] EEPROMRegulatory = 0x0
[ 26.800000] _ReadBoardType(0)
[ 26.810000] BT Coexistance = disable
[ 26.810000] mlmepriv.ChannelPlan = 0x02
[ 26.810000] _ReadPSSetting...bHWPwrPindetect(0)-bHWPowerdown(0) ,bSupportRemo
teWakeup(0)
[ 26.820000] ### PS params=> power_mgnt(1),usbss_enable(0) ###
[ 26.830000] ### AntDivCfg(0)
[ 26.830000] readAdapterInfo_8192CU(): REPLACEMENT = 1
[ 26.840000] <==== ReadAdapterInfo8192C in 200 ms
[ 26.840000] rtw_macaddr_cfg MAC Address = 90:9f:33:ec:f5:93
[ 26.850000] bDriverStopped:1, bSurpriseRemoved:0, bup:0, hw_init_completed:0
[ 26.870000] _rtw_drv_register_netdev, MAC Address (if1) = 90:9f:33:ec:f5:93
# lsmod
Tainted: G
8192cu 566202 0 - Live 0x7f0ed000 (O)
vfat 10855 0 - Live 0x7f0e6000
fat 60909 1 vfat, Live 0x7f0d1000
nc_gfb 19539 0 - Live 0x7f0c9000 (O)
nx_vpu 410125 0 - Live 0x7f05f000 (O)
vr 217673 0 - Live 0x7f019000 (O)
nc_base 819 0 - Live 0x7f015000 (O)
# ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr 90:9F:33:EC:F5:93
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)
wifi dongle firmware
wget https://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/tree/rtlwifi/rtl8192cufw.bin
kernel source 및 userfs에 포함된 driver 에서는 요구하나 realtek site에서 받은 driver에서도 요구하는지는 확인되지 않았습니다.
다운로드 받은 파일은 /lib/firmware/rtlwifi 폴더에 아래에 위치시켜야 인식을 하며,
ramdisk는 항상 지워지므로 rootfs을 만들때 포함시켜야합니다.
댓글