Talk:USB to WiFi adapter

From ArmadeusWiki
Revision as of 17:04, 26 September 2012 by Sly (Talk | contribs) (Workaround)

Jump to: navigation, search

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:

  1. the build procedure
  2. the error I got for AFP28 with AFP28dev
  3. 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]

Rebuild the kernel :

make linux-rebuild

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)

It should work now with the last git dev branch (5.1)

old 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..