Difference between revisions of "Talk:USB to WiFi adapter"
(→Chipset Atheros AR9271) |
(→Chipset Atheros AR9271) |
||
Line 205: | Line 205: | ||
<pre class="config"> | <pre class="config"> | ||
− | - | + | Device Drivers ---> |
− | + | [*] Network device support ---> | |
− | + | [*] Wireless LAN ---> | |
− | </pre> | + | <*> Atheros Wireless Cards ---> |
+ | --- Atheros Wireless Cards | ||
+ | [*] Atheros wireless debugging | ||
+ | <*> Atheros HTC based wireless cards support | ||
+ | [*] Atheros ath9k_htc debugging | ||
+ | <*> Atheros AR9170 802.11n USB support | ||
+ | < > Hardware Monitoring support ---> | ||
+ | [*] USB support ---> | ||
+ | <*> Enable Wireless USB extensions (EXPERIMENTAL) </pre> | ||
More Details to follow soon...... | More Details to follow soon...... |
Revision as of 22:46, 23 December 2012
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]
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..
Chipset Atheros AR9271
The Netgear N150 WNA 1100 WLAN stick is based upon the Atheros AR9271 Chipset. The kernel 2.6.35.3 contains the driver for that chipset, but the specific USB ID for the Netgear stick is not listed in the source. Therefore I applied a little manual patch to the file
buildroot/output/build/linux-2.6.35.3/drivers/net/wireless/ath/ath9k/hif_usb.c
changing the current device ID against the ID 0x0846, 0x9030 of the Netgear device. (Maybe someone can add in here how to add instead how to change...)
The file will only exist until you change the linux-menuconfig as below and do the first make
#include "htc.h" #define ATH9K_FW_USB_DEV(devid, fw) \ { USB_DEVICE(0x0846, 0x9030), .driver_info = (unsigned long) fw } // { USB_DEVICE(0x0cf3, devid), .driver_info = (unsigned long) fw } static struct usb_device_id ath9k_hif_usb_ids[] = { ATH9K_FW_USB_DEV(0x9271, "ar9271.fw"), ATH9K_FW_USB_DEV(0x1006, "ar9271.fw"), { }, };
After the fist compile change the file, do a linux-clean and make again.
Rather than compiling the driver as a module, I compiled it directly into the kernel.
make linux-menuconfig
Device Drivers ---> [*] Network device support ---> [*] Wireless LAN ---> <*> Atheros Wireless Cards ---> --- Atheros Wireless Cards [*] Atheros wireless debugging <*> Atheros HTC based wireless cards support [*] Atheros ath9k_htc debugging <*> Atheros AR9170 802.11n USB support < > Hardware Monitoring support ---> [*] USB support ---> <*> Enable Wireless USB extensions (EXPERIMENTAL)
More Details to follow soon......