Talk:USB to WiFi adapter
Contents
About Zydas zd1211 tries
JulienB 09:52, 4 February 2009 (UTC) : now working
Chipset RTL8188CUS
I will give you the details for the RTL8188CUS driver for the APF28:
- the build procedure
- the error I got for AFP28 with AFP28dev
- and the workaround to fix it
Build procedure
I build the driver for chip RTL8188CUS from source rtl8188C_8192C_usb_linux_v3.4.3_4369.20120622 . You can get the driver here (chose RTL8188CUS) : [1]
Add those option in the makefile :
- change line 39 : CONFIG_PLATFORM_I386_PC = n - add line 40 : CONFIG_PLATFORM_ARM_ARMADEUS = y - Near line 261 add: ifeq ($(CONFIG_PLATFORM_ARM_ARMADEUS), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_WEXT_PRIV ARCH := arm CROSS_COMPILE := /path-to-your/armadeus/buildroot/output/host/usr/bin/arm-linux- KVER := 2.6.35.3 KSRC ?= /path-to-your/armadeus/buildroot/output/build/linux-2.6.35.3 endif
And I need to rebuild the linux kernel with define WEXT_PRIV.
make linux-menuconfig
I use this trick for that :
Device Drivers ---> [*] Network device support ---> [*] Wireless LAN ---> <M> USB ZD1201 based Wireless device support
Which give me :
│ Selects: WIRELESS_EXT [=y] && WEXT_PRIV [=n] && FW_LOADER [=y]
finally copy the driver to the target directory:
cp 8192cu.ko /path-to-your/armadeus/buildroot/output/target/lib/modules/2.6.35.3\+/kernel/drivers/net/wireless/
Known issue
Here is the test I made :
insmod /lib/modules/2.6.35.3\+/kernel/drivers/net/wireless/8192cu.ko wpa_supplicant -iwlan0 -c /etc/wpa_supplicant.conf -Dwext -B dhclient udhcpc -i wlan0
Then I can ping wifi adress with 0% packet loss.
I connect with ssh it work ok for the few command I did.
Then I try to connect with SFTP from my PC (using FileZilla) :
the wifi goes down and the usb with it.
Here is the part of "messages" where the error is :
Jan 10 01:23:29 armadeus kern.warn kernel: reg 0x608, usb read 4 fail, status:-19 value=0x0, vendorreq_times:1 Jan 10 01:23:29 armadeus kern.warn kernel: reg 0x608, usb read 4 fail, status:-19 value=0x0, vendorreq_times:2 Jan 10 01:23:29 armadeus kern.warn kernel: reg 0x608, usb read 4 fail, status:-19 value=0x0, vendorreq_times:3 Jan 10 01:23:29 armadeus kern.err kernel: fsl-ehci fsl-ehci.0: fatal error Jan 10 01:23:29 armadeus kern.debug kernel: fsl-ehci fsl-ehci.0: fatal command 010028 (park)=0 ithresh=1 Async period=256 HALT Jan 10 01:23:29 armadeus kern.debug kernel: fsl-ehci fsl-ehci.0: fatal status 49098 Async Halt FATAL FLR Jan 10 01:23:29 armadeus kern.debug kernel: fsl-ehci fsl-ehci.0: reset command 01002a (park)=0 ithresh=1 Async period=256 Reset HALT Jan 10 01:23:29 armadeus kern.warn kernel: ###=> usb_read_port_complete => urb status(-108) Jan 10 01:23:29 armadeus kern.err kernel: fsl-ehci fsl-ehci.0: HC died; cleaning up Jan 10 01:23:29 armadeus kern.debug kernel: hub 2-0:1.0: state 0 ports 1 chg 0000 evt 0000 Jan 10 01:23:29 armadeus kern.info kernel: usb 2-1: USB disconnect, address 2 Jan 10 01:23:29 armadeus kern.debug kernel: usb 2-1: unregistering device Jan 10 01:23:29 armadeus kern.debug kernel: usb 2-1: usb_disable_device nuking all URBs Jan 10 01:23:29 armadeus kern.debug kernel: usb 2-1: unregistering interface 2-1:1.0 Jan 10 01:23:29 armadeus kern.warn kernel: reg 0x608, usb read 4 fail, status:-19 value=0x0, vendorreq_times:4 Jan 10 01:23:29 armadeus kern.warn kernel: [dvobjpriv:c8aa401c][ERROR] continual_urb_error:5 > 4 Jan 10 01:23:29 armadeus kern.warn kernel: issue_deauth to 00:18:84:19:e1:62 Jan 10 01:23:29 armadeus kern.warn kernel: rtw_sta_flush Jan 10 01:23:30 armadeus kern.warn kernel: (2)871x_drv - drv_close, bup=1, hw_init_completed=1 Jan 10 01:23:30 armadeus kern.warn kernel: -871x_drv - drv_close, bup=1 Jan 10 01:23:30 armadeus kern.warn kernel: ===> rtw_dev_unload Jan 10 01:23:30 armadeus kern.warn kernel: usb_read_port_cancel Jan 10 01:23:30 armadeus kern.warn kernel: usb_write_port_cancel Jan 10 01:23:30 armadeus kern.warn kernel: ###> rtw_cmd_thread break................. Jan 10 01:23:30 armadeus kern.warn kernel: rtw_cmd_thread: leaving... check & free all cmd_obj resources Jan 10 01:23:30 armadeus kern.warn kernel: rtw_cmd_thread: leaving... call up terminate_cmdthread_sema Jan 10 01:23:30 armadeus kern.warn kernel: <=== rtw_dev_unload Jan 10 01:23:30 armadeus kern.warn kernel: +r871xu_dev_remove, hw_init_completed=1 Jan 10 01:23:30 armadeus kern.warn kernel: free_recv_skb_queue not empty, 5 Jan 10 01:23:30 armadeus kern.warn kernel: =====> rtl8192c_free_hal_data ===== Jan 10 01:23:30 armadeus kern.warn kernel: <===== rtl8192c_free_hal_data ===== Jan 10 01:23:30 armadeus kern.warn kernel: -r871xu_dev_remove, done Jan 10 01:23:40 armadeus kern.err kernel: FEC: MDIO read timeout Jan 10 01:23:42 armadeus kern.err kernel: FEC: MDIO read timeout
And the error by using iperf -c to connect to an iperf server :
fsl-ehci fsl-ehci.0: fatal error ###=> usb_read_port_complete => urb status(-108) fsl-ehci fsl-ehci.0: HC died; cleaning up usb 2-1: USB disconnect, address 2 +rtw_dev_remove rtw_set_ps_mode(): Busy Traffic , Leave 802.11 power save.. rtl8192c_set_FwPwrMode_cmd(): Mode = 0, SmartPS = 0 reg 0x1cc, usb read 1 fail, status:-19 value=0x0, vendorreq_times:1 reg 0x1cc, usb read 1 fail, status:-19 value=0x0, vendorreq_times:2 reg 0x1cc, usb read 1 fail, status:-19 value=0x0, vendorreq_times:3 reg 0x1cc, usb read 1 fail, status:-19 value=0x0, vendorreq_times:4 [dvobjpriv:c8abd01c][ERROR] continual_urb_error:5 > 4 issue_deauth to 00:18:84:19:e1:62 rtw_sta_flush (2)871x_drv - drv_close, bup=1, hw_init_completed=1 -871x_drv - drv_close, bup=1 ===> rtw_dev_unload usb_read_port_cancel usb_write_port_cancel ###> rtw_cmd_thread break................. rtw_cmd_thread: leaving... check & free all cmd_obj resources rtw_cmd_thread: leaving... call up terminate_cmdthread_sema <=== rtw_dev_unload +r871xu_dev_remove, hw_init_completed=1 free_recv_skb_queue not empty, 4 =====> rtl8192c_free_hal_data ===== <===== rtl8192c_free_hal_data ===== -r871xu_dev_remove, done FEC: MDIO read timeout FEC: MDIO read timeout
--Sly 20:33, 31 July 2012 (UTC)
Workaround
Here is the workaround to fix this issue: Disable dynamic frequency scaling by setting the scaling_governor to "userspace" or "performance"
1st solution: change governor at runtime
echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
you will have to use this command each time you boot your board.
2nd solution: rebuild your kernel with default governor set to userspace or performance
make linux-menuconfig
CPU Power Management ---> Default CPUFreq governor (userspace) ---> ( ) performance ( ) powersave (X) userspace ( ) ondemand ( ) conservative
build and update your APF kernel..