Difference between revisions of "How to setup Marvell 88w8686 SDIO wifi"
From IGEP - ISEE Wiki
Line 114: | Line 114: | ||
round-trip min/avg/max = 16.327/16.327/16.327 ms | round-trip min/avg/max = 16.327/16.327/16.327 ms | ||
</pre> | </pre> | ||
+ | |||
+ | == How to debug the libertas driver == | ||
+ | |||
+ | From: http://wiki.laptop.org/go/Libertas_Debug | ||
+ | |||
+ | To enable debug on the wireless (libertas) driver you may write to the libertas_debug '/sys' file: | ||
+ | echo <i>LBS_DEBUG_FLAGS</i> > /sys/module/libertas/parameters/libertas_debug | ||
+ | |||
+ | You can calculate the value for <i>LBS_DEBUG_FLAGS</i> using the table bellow (just add up the values for the flags you want to activate). | ||
+ | |||
+ | <table border="1" cellpadding="2" cellspacing="2"> | ||
+ | <tr><th>Debug Flag Name</th><th>Flag Hex value</th><th>Description(*)</th></tr> | ||
+ | <tr><td>LBS_DEB_ENTER</td><td>0x00000001<td>function entrance</td> | ||
+ | <tr><td>LBS_DEB_LEAVE</td><td>0x00000002<td>function exit</td></tr> | ||
+ | <tr><td>LBS_DEB_MAIN</td><td>0x00000004<td>main libertas library code</td></tr> | ||
+ | <tr><td>LBS_DEB_NET</td><td>0x00000008<td>interaction with network subsystem</td></tr> | ||
+ | <tr><td>LBS_DEB_MESH</td><td>0x00000010<td>wireless mesh network</td></tr> | ||
+ | <tr><td>LBS_DEB_WEXT</td><td>0x00000020<td>interaction with wireless extensions</td></tr> | ||
+ | <tr><td>LBS_DEB_IOCTL</td><td>0x00000040<td>misc IOCTLs</td></tr> | ||
+ | <tr><td>LBS_DEB_SCAN</td><td>0x00000080<td>scanning for APs</td></tr> | ||
+ | <tr><td>LBS_DEB_ASSOC</td><td>0x00000100<td>associating ton an AP</td></tr> | ||
+ | <tr><td>LBS_DEB_JOIN</td><td>0x00000200<td>joining an IBSS?</td></tr> | ||
+ | <tr><td>LBS_DEB_11D</td><td>0x00000400<td>802.11d country settings</td></tr> | ||
+ | <tr><td>LBS_DEB_DEBUGFS</td><td>0x00000800<td>interaction with the debugfs subsystem</td></tr> | ||
+ | <tr><td>LBS_DEB_ETHTOOL</td><td>0x00001000<td>interaction with ethtool subsystem</td></tr> | ||
+ | <tr><td>LBS_DEB_HOST</td><td>0x00002000<td>communication between host and wlan chip</td></tr> | ||
+ | <tr><td>LBS_DEB_CMD</td><td>0x00004000<td>command and response processing</td></tr> | ||
+ | <tr><td>LBS_DEB_RX</td><td>0x00008000<td>packet reception</td></tr> | ||
+ | <tr><td>LBS_DEB_TX</td><td>0x00010000<td>packet transmission</td></tr> | ||
+ | <tr><td>LBS_DEB_USB</td><td>0x00020000<td>interaction with USB subsystem</td></tr> | ||
+ | <tr><td>LBS_DEB_CS</td><td>0x00040000<td>interaction with card services subsystem</td></tr> | ||
+ | <tr><td>LBS_DEB_FW</td><td>0x00080000<td>firmware downloading</td></tr> | ||
+ | <tr><td>LBS_DEB_THREAD</td><td>0x00100000<td>main libertas worker thread</td></tr> | ||
+ | <tr><td>LBS_DEB_HEX</td><td>0x00200000<td>turn on detailed hex dumps</td></tr> | ||
+ | <tr><td>LBS_DEB_SDIO</td><td>0x00400000<td>interaction with SDIO subsystem</td></tr> | ||
+ | <tr><td colspan=3>(*) Description taken from [http://git.infradead.org/?p=users/schurig/libertas-tools.git;a=blob_plain;f=lbsdebug/lbsdebug.c;hb=master lbsdebug.c] (by Holger Schurig)</td></tr> | ||
+ | </table> | ||
+ | |||
+ | |||
+ | Example:<br> | ||
+ | To activate scanning (LBS_DEB_SCAN), associating (LBS_DEB_ASSOC), command (LBS_DEB_CMD) and host (LBS_DEB_HOST): | ||
+ | echo 0x6180 > /sys/module/libertas/parameters/libertas_debug | ||
+ | |||
+ | The output will be post to the kernel ring buffer. You can display it with the dmesg command: | ||
+ | dmesg | ||
+ | |||
+ | You can also use the lbsdebug tool, from Holger Shurig, git tree available [http://git.infradead.org/?p=users/schurig/libertas-tools.git;a=blob_plain;f=lbsdebug/lbsdebug.c;hb=master here]. | ||
+ | |||
+ | |||
[[Category:How to forge|Wireless]] | [[Category:How to forge|Wireless]] |
Revision as of 14:11, 17 June 2010
Contents
How to setup Marvell 88w8686 SDIO wifi
Overview of How-To
This How-To is meant to be a starting point for people to learn setup the wifi on IGEP v2 devices as quickly and easily as possible.
Feedback and Contributing
At any point, if you see a mistake you can contribute to this How-To.
Setup basics
- libertas: Marvell Libertas 8385/8686/8688 SDIO 802.11b/g card
- firmware: 9.70.3p24 ( download from http://extranet.marvell.com/drivers/driverDisplay.do?driverId=203 )
SDIO card should be showed after the image is downloaded to the board.
mmc1: new SDIO card at address 0001
The firmware binaries sd8686_helper.bin and sd8686.bin should be in /lib/firmware directory.
To make the SDIO WIFI module work load the libertas_sdio module
# modprobe libertas_sdio libertas_sdio: Libertas SDIO driver libertas_sdio: Copyright Pierre Ossman libertas_sdio mmc1:0001:1: firmware: requesting sd8686_helper.bin libertas_sdio mmc1:0001:1: firmware: requesting sd8686.bin libertas: 00:13:e0:c3:0c:3c, fw 9.70.3p24, cap 0x00000303 libertas: unidentified region code; using the default (USA) libertas: PREP_CMD: command 0x00a3 failed: 2 libertas: PREP_CMD: command 0x00a3 failed: 2 libertas: eth1: Marvell WLAN 802.11 adapter
Now you can connect this wifi module to an AP. First of all, you'll check if your devices is detected.
# iwconfig eth1 IEEE 802.11b/g ESSID:"" Mode:Managed Frequency:2.412 GHz Access Point: Not-Associated Bit Rate:0 kb/s Tx-Power=18 dBm Retry short limit:8 RTS thr=2347 B Fragment thr=2346 B Encryption key:off Power Management:off Link Quality:0 Signal level:0 Noise level:0 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0
Next, you will set up the interface
# ifconfig eth1 up eth1 Link encap:Ethernet HWaddr 00:13:E0:C3:0C:3C UP 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)
and you can scan for an AP
# iwlist eth1 scan Cell 04 - Address: 00:18:84:81:46:E2 ESSID:"MyPlace" Mode:Managed Frequency:2.427 GHz (Channel 4) Quality=100/100 Signal level=-39 dBm Noise level=-96 dBm Encryption key:off Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s 11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s 48 Mb/s; 54 Mb/s
Now, is time to associate to your AP
# iwconfig eth1 txpower auto essid MyPlace channel 4 eth1 IEEE 802.11b/g ESSID:"MyPlace" Mode:Managed Frequency:2.427 GHz Access Point: 00:18:84:81:46:E2 Bit Rate:0 kb/s Tx-Power=13 dBm Retry short limit:8 RTS thr=2347 B Fragment thr=2346 B Encryption key:off Power Management:off Link Quality=97/100 Signal level=-43 dBm Noise level=-94 dBm Rx invalid nwid:0 Rx invalid crypt:3109 Rx invalid frag:0 Tx excessive retries:13 Invalid misc:3315 Missed beacon:0
and get and ip address
# udhcpc -i eth1 udhcpc (v1.9.1) started Sending discover... Sending select for 192.168.10.216... Lease of 192.168.10.216 obtained, lease time 43200 adding dns 192.168.10.1
Last, you can test the network interface.
# ping -c 1 192.168.10.1 PING 192.168.10.1 (192.168.10.1): 56 data bytes 64 bytes from 192.168.10.1: seq=0 ttl=64 time=16.327 ms --- 192.168.10.1 ping statistics --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 16.327/16.327/16.327 ms
How to debug the libertas driver
From: http://wiki.laptop.org/go/Libertas_Debug
To enable debug on the wireless (libertas) driver you may write to the libertas_debug '/sys' file:
echo LBS_DEBUG_FLAGS > /sys/module/libertas/parameters/libertas_debug
You can calculate the value for LBS_DEBUG_FLAGS using the table bellow (just add up the values for the flags you want to activate).
Debug Flag Name | Flag Hex value | Description(*) |
---|---|---|
LBS_DEB_ENTER | 0x00000001 | function entrance |
LBS_DEB_LEAVE | 0x00000002 | function exit |
LBS_DEB_MAIN | 0x00000004 | main libertas library code |
LBS_DEB_NET | 0x00000008 | interaction with network subsystem |
LBS_DEB_MESH | 0x00000010 | wireless mesh network |
LBS_DEB_WEXT | 0x00000020 | interaction with wireless extensions |
LBS_DEB_IOCTL | 0x00000040 | misc IOCTLs |
LBS_DEB_SCAN | 0x00000080 | scanning for APs |
LBS_DEB_ASSOC | 0x00000100 | associating ton an AP |
LBS_DEB_JOIN | 0x00000200 | joining an IBSS? |
LBS_DEB_11D | 0x00000400 | 802.11d country settings |
LBS_DEB_DEBUGFS | 0x00000800 | interaction with the debugfs subsystem |
LBS_DEB_ETHTOOL | 0x00001000 | interaction with ethtool subsystem |
LBS_DEB_HOST | 0x00002000 | communication between host and wlan chip |
LBS_DEB_CMD | 0x00004000 | command and response processing |
LBS_DEB_RX | 0x00008000 | packet reception |
LBS_DEB_TX | 0x00010000 | packet transmission |
LBS_DEB_USB | 0x00020000 | interaction with USB subsystem |
LBS_DEB_CS | 0x00040000 | interaction with card services subsystem |
LBS_DEB_FW | 0x00080000 | firmware downloading |
LBS_DEB_THREAD | 0x00100000 | main libertas worker thread |
LBS_DEB_HEX | 0x00200000 | turn on detailed hex dumps |
LBS_DEB_SDIO | 0x00400000 | interaction with SDIO subsystem |
(*) Description taken from lbsdebug.c (by Holger Schurig) |
Example:
To activate scanning (LBS_DEB_SCAN), associating (LBS_DEB_ASSOC), command (LBS_DEB_CMD) and host (LBS_DEB_HOST):
echo 0x6180 > /sys/module/libertas/parameters/libertas_debug
The output will be post to the kernel ring buffer. You can display it with the dmesg command:
dmesg
You can also use the lbsdebug tool, from Holger Shurig, git tree available here.