Introduction Wireless LAN resources for Linux http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/ The linux-wlan™ Project http://www.linux-wlan.org/ Linux Wireless Networking HowTo http://www.siliconvalleyccie.com/linux-hn/wmp11-linux.htm WLAN Adapter Chipset Directory http://www.linux-wlan.org/docs/wlan_adapters.html.gz Supported Hardware See WLAN Adapter Chipset Directory. CompactFlash cards using the Prism2/2.5/3 chip set are expected to work (No Guarantee) Known working Cards: D-Link DCF-660W Linksys WCF12 -------- Blackfin Interface Card cf-ide-nand STAMP Hardware Projects Configuring the kernel for 802.11 WLAN Support Under the top level submenu “Device Drivers” you should find the “Network device support” menu. Blackfin specific configuration 802.11 WLAN Configuration bfin_cf_pcmcia [*] Wireless LAN drivers (non-hamradio) & Wireless Extensions --- Obsolete Wireless cards support (pre-802.11) < > STRIP (Metricom starmode radio IP) < > AT&T/Lucent old WaveLAN Pcmcia wireless support < > Xircom Netwave AirSurfer Pcmcia wireless support --- Wireless 802.11 Frequency Hopping cards support < > Aviator/Raytheon 2.4MHz wireless support --- Wireless 802.11b ISA/PCI cards support <*> Hermes chipset 802.11b support (Orinoco/Prism2/Symbol) < > Atmel at76c50x chipset 802.11b support --- Wireless 802.11b Pcmcia/Cardbus cards support <*> Hermes PCMCIA card support < > Symbol Spectrum24 Trilogy PCMCIA card support < > Blackfin WLAN card support < > Cisco/Aironet 34X/35X/4500/4800 PCMCIA cards < > Planet WL3501 PCMCIA cards < > IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP) External Bus Interface Unit EBIU (External Bus Interface Unit) Configuration Enable wait states (0x99B3) for the memory bank the CF Card is connected to. Adjusting System Clock Speed Depending on the CF Cards PCMCIA I/O Mode and Attribute Memory timing requirement, System ClockSCLK (System Clock)must be changed It might work up to 131MHz Adding User Space Tools In order to configure the WLAN Interface iwconfig is needed Porting WLAN driver to Custom Hardware Change configuration during kernel configuration. bfin_cf_pcmcia see also here gpio_interrupt_processing Example Hardware Implementation schematics hardware instructions Access Point Configuration Interface Usage Basics root:~> dmesg Linux version 2.6.12.1 (michael@mhenner-D01) (gcc version 3.4.4) #8 Tue Nov 15 5 Blackfin support (C) 2004 Analog Devices, Inc. ADSP-BF537 Rev. 0.2 uClinux/BF537 Blackfin uClinux support by blackfin.uclinux.org Processor Speed: 500 MHz core clock and 71 Mhz System Clock Board Memory: 64MB Memory map: text = 0x001000-0x0cc7c0 data = 0x0d90fc-0x0f75b0 bss = 0x0f75b0-0x104e24 rootfs = 0x3b00000-0x3f00000 stack = 0x0da000-0x0dc000 Command line: 'root=/dev/mtdblock0 rw' On node 0 totalpages: 15104 DMA zone: 0 pages, LIFO batch:1 Normal zone: 15104 pages, LIFO batch:7 HighMem zone: 0 pages, LIFO batch:1 Instruction Cache Enabled Data Cache Enabled (write-through) Hardware Trace Enabled Built 1 zonelists Kernel command line: root=/dev/mtdblock0 rw Configuring Blackfin Priority Driven Interrupts PID hash table entries: 256 (order: 8, 4096 bytes) Dentry cache hash table entries: 8192 (order: 3, 32768 bytes) Inode-cache hash table entries: 4096 (order: 2, 16384 bytes) Physical pages: 3b00 Memory available: 58752k/64667k RAM, (47k init code, 813k kernel code, 175k dat) Blackfin Scratchpad data SRAM: 4 KB Blackfin DATA_A SRAM: 16 KB Blackfin DATA_B SRAM: 16 KB Calibrating delay loop... 996.14 BogoMIPS (lpj=4980736) Security Framework v1.0.0 initialized Capability LSM initialized Mount-cache hash table entries: 512 NET: Registered protocol family 16 Blackfin DMA Controller for BF533 stamp_init(): registering device resources Real Time Clock Driver v1.10e BlackFin BF533 serial driver version 2.00 With DMA Support io scheduler noop registered io scheduler cfq registered RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize orinoco 0.14alpha2 (David Gibson , Pavel Roskin <) orinoco_wlan_blackfin.c (Michael Hennerich ) orinoco_wlan_blackfin: CIS: 01:03:00:00:FF:17:04:67: Detected Orinoco/Prism2 WLAN BLACKFIN device at irq:34, io addr:0x20300000 Blackfin WLAN interrupt setup: flag PF4, irq 34 eth1: Hardware identity 801b:0000:0001:0000 eth1: Station identity 001f:0002:0001:0004 eth1: Firmware determined as Intersil 1.4.2 eth1: Ad-hoc demo mode supported eth1: IEEE standard IBSS ad-hoc mode supported eth1: WEP supported, 104-bit key eth1: MAC address 00:0F:66:10:C7:11 eth1: Station name "Prism I" eth1: ready uclinux[mtd]: RAM probe address=0x3b00000 size=0x400000 Creating 1 MTD partitions on "RAM": 0x00000000-0x00400000 : "EXT2fs" uclinux[mtd0]: set EXT2fs to be root filesystem NET: Registered protocol family 2 IP: routing cache hash table of 512 buckets, 4Kbytes TCP established hash table entries: 2048 (order: 2, 16384 bytes) TCP bind hash table entries: 2048 (order: 1, 8192 bytes) TCP: Hash tables configured (established 2048 bind 2048) NET: Registered protocol family 1 NET: Registered protocol family 17 VFS: Mounted root (ext2 filesystem). Freeing unused kernel memory: 44k freed (0xcd000 - 0xd7000) ttyS0 at irq = 18 is a builtin BlackFin UART dma_alloc_init: dma_page @ 0x000d3000 - 256 pages at 0x03f00000 bfin_change_speed: baud = 57600, cval = 0x13 root:~> Make sure the start up messages include a similar section: orinoco 0.14alpha2 (David Gibsonhermes@gibson.dropbear.id.au, Pavel Roskin <) orinoco_wlan_blackfin.c (Michael Hennerichhennerich@blackfin.uclinux.org) orinoco_wlan_blackfin: CIS: 01:03:00:00:FF:17:04:67: Detected Orinoco/Prism2 WLAN BLACKFIN device at irq:34, io addr:0x20300000 Blackfin WLAN interrupt setup: flag PF4, irq 34 eth1: Hardware identity 801b:0000:0001:0000 eth1: Station identity 001f:0002:0001:0004 eth1: Firmware determined as Intersil 1.4.2 eth1: Ad-hoc demo mode supported eth1: IEEE standard IBSS ad-hoc mode supported eth1: WEP supported, 104-bit key eth1:MAC (Media Access Control (network interface))address 00:0F:66:10:C7:11 eth1: Station name“Prism I” eth1: ready To connect directly to another PC, on the Blackfin: root:~> iwconfig eth1 nickname "STAMP" mode Ad-Hoc essid "foo" root:~> ifconfig eth1 192.168.1.2 up root:~> eth1: New link status: Connected (0001) and on the host PC (as root): imhotep:/home/rgetz # iwconfig eth1 mode Ad-Hoc essid "foo" imhotep:/home/rgetz # ifconfig eth1 192.168.1.3 up imhotep:/home/rgetz # ping 192.168.1.2 PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data. 64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=1026 ms 64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=31.8 ms 64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=3.48 ms 64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=5.43 ms To connect to an access point: root:~> iwconfig eth1 essid dlink key s:12345 root:~> dhcpcd eth1 & 28 root:~> eth1: New link status: Connected (0001) root:~> iwconfig lo no wireless extensions. eth0 no wireless extensions. eth1 IEEE 802.11-DS ESSID:"dlink" Nickname:"Prism I" Mode:Managed Frequency:2.437GHz Access Point: 00:13:46:C7:A2:EE Bit Rate:11Mb/s Tx-Power=15 dBm Sensitivity:1/3 Retry min limit:8 RTS thr:off Fragment thr:off Encryption key:3132-3334-35 Security mode:open Power Management:off Link Quality:88/92 Signal level:5/153 Noise level:119/153 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0 root:~> root:~> ifconfig eth1 Link encap:Ethernet HWaddr 00:0F:66:10:C7:11 inet addr:192.168.0.100 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1 RX packets:30 errors:0 dropped:0 overruns:0 frame:0 TX packets:5 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 Interrupt:34 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 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:0 root:~> root:~> ping 192.168.0.1 PING 192.168.0.1 (192.168.0.1): 56 data bytes 64 bytes from 192.168.0.1: icmp_seq=0 ttl=127 time=3.1 ms 64 bytes from 192.168.0.1: icmp_seq=1 ttl=127 time=2.7 ms 64 bytes from 192.168.0.1: icmp_seq=2 ttl=127 time=2.7 ms 64 bytes from 192.168.0.1: icmp_seq=3 ttl=127 time=2.6 ms 64 bytes from 192.168.0.1: icmp_seq=4 ttl=127 time=3.6 ms 64 bytes from 192.168.0.1: icmp_seq=5 ttl=127 time=2.6 ms 64 bytes from 192.168.0.1: icmp_seq=6 ttl=127 time=2.8 ms 64 bytes from 192.168.0.1: icmp_seq=7 ttl=127 time=2.7 ms --- 192.168.0.1 ping statistics --- 8 packets transmitted, 8 packets received, 0% packet loss round-trip min/avg/max = 2.6/2.8/3.6 ms root:~>