Initially I tried using hostapd on a pre-built MK802 Linaro build, hostapd fails to set the wifi driver (8192cu.ko) in to master mode. The cause of the problem seems to be hostapd supplied in the Linaro build. The problem can be overcome by compiling the hostpad supplied with the driver from the RealTek site (version 3.4.4_4749). A pre-compiled hostpad can be downloaded from this zip hackberry_ap.zip along with all other files required for your set-up. Alternatively you can attempt to compile hostapd yourself on the hackberry as follows:
Before we can use the new hostpad a further 3 steps need to be undertaken.
1. Turn off power save mode for the wifi driver, this can be done by creating the file /etc/modprobe.d/8192cu.conf on the hackberry with the line below and reboot:
Inside the tar file is a file wpa_supplicant_hostapd-0.8_rtw_20120803.zip, extracting this reveals a hostpad directory, copy the directory to your hackberry. I'm assuming you are running a flavor of ubuntu therefore you need to install a build environment by "aptitude install build-essential". Now run the Make file in the hostpad directory.
Before we can use the new hostpad a further 3 steps need to be undertaken.
options 8192cu rtw_power_mgnt=0 rtw_enusbss=0
2. Install a dhcp server, I used isc-dhcpd-server (sudo apt-get install isc-dhcp-server) and configure by editing /etc/dhcp/dhcpd.conf. A sample dhcpd.conf is include in the download zip. Assuming wlan0 is configure with a static ip address of 10.0.0.1 here's the lines to add:
3. Last step is to create a hostapd.conf file, again a sample is included the download zip. The essential setting are:
Change the ssid, channel and wpa_passphrase as required.
subnet 10.0.0.0 netmask 255.255.255.0 { range 10.0.0.2 10.0.0.10; option domain-name-servers 8.8.4.4; option routers 10.0.0.1; }
The domain-name-servers tag although configure will not function as there is no bridge between wlan0 and eth0 at this stage.
3. Last step is to create a hostapd.conf file, again a sample is included the download zip. The essential setting are:
##### hostapd configuration file ############################################## interface=wlan0 ctrl_interface=/var/run/hostapd ssid=hackberry channel=6 wpa=2 wpa_passphrase=87654321 #bridge=br0
Change the ssid, channel and wpa_passphrase as required.
To test this simple set-up it's best install a web server (lighttpd or apache2) on the hackberry because at this stage there is no ip routing configured to bridge eth0.
Now to run hostapd we have to configure wlan0 with a static ip address, restart the dhcp server and start the compiled hostapd with your configuration.
ifconfig wlan0 up 10.0.0.1 netmask 255.255.255.0 service isc-dhcp-server restart ./hostapd hostapd.conf -B
If everything goes to plan the SSID should be visible to your wifi client, connect to it and launch a browser. Access http://10.0.0.1/ and the default web server page is appear.
Another useful feature is to be able to bridge wlan0 to eth0, in my case this allows me to provide a internet gateway to the wifi clients through my adsl router. I initially tried the bridge feature provide the RealTek driver unfortunately I couldn't get it to route packets correctly. The alternative is to use ip tables, the main drawback is that kernel needs to be recompiled with ip tables support enabled. Include in the download zip is sample .config with ip tables support enabled (kernal version 3.0.36). The options you have to enable are:
Networking ---->
Networking options ---->
Network packet filtering framework (Netfilter)--->
Core Netfilter Configuration ---->
<*> Netfilter connection tracking support
<*> Netfilter Xtables support (required for ip_tables)
<*> "NFLOG" target support
<*> "conntrack" connection tracking match support
<*> "state" match support
IP: Netfilter Configuration --->
<*> IPv4 connection tracking support (required for NAT)
<*> IP tables support (required for filtering/masq/NAT)
<*> Packet Filtering
<*> REJECT target support
<*> Full NAT
<*> MASQUERADE target support
<*> Packet mangling
iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface wlan0 -j ACCEPT
sysctl -w net.ipv4.ip_forward=1
I suggest restarting the isc-dhcp server and hostapd before testing. If successful your wifi clients should have access to other devices on your internal network and if configured internet access.
Hey Jas!
ReplyDeletethank you so much for your tut! its awesome!
I am trying to stream audio using avconv.
i have something like this...
avconv -f alsa -ac 1 -i hw:0,0 -acodec libmp3lame -b 64k -f rtp
rtp://10.0.0.1:1234
however i cannot receive the audio from my laptop which is connected to the Wireless access point.
my reasoning is: if i am connected, i should be able to hear the audio stream if i type this command in the terminal:
avplay -i rtp://10.0.0.1:1234
right?
it would be so wonderful if you can give me a pointer on how to go about doing this!
thank you so much!
KJ
Hello,
ReplyDeleteYour hackberry_ap.zip does not work for me on Debian Wheezy due to a GLIBC symbols error. For anyone who has the same problem, I have compiled it on Wheezy: http://romanrm.ru/dl/a10/hostapd/
Hello,I follow your instuctions,but when i exec ./hostapd hostapd.conf -B,I got an error saying "ioctl[RTL_IOCTL_HOSTAPD]: Operation not supported"
ReplyDeleteAnd I compiled the kernel 3.4.29 from git://github.com/linux-sunxi/linux-sunxi.git by myself with the CONFIG_HOSTAP=y
ReplyDeleteNot sure what the problem could be as I haven't tried the latest 3.4.29 kernel. Did you compile the RealTek driver from source?
DeleteNop ,it is contained in 3.4.29 kernel,And I compile the hostapd myself from the RealTek site .
DeleteHello,I follow your instuctions,but when i executed ./hostapd hostapd.conf -B,I got an error saying "ioctl[RTL_IOCTL_HOSTAPD]: Operation not supported"
ReplyDeleteSo, how can I resolve this probleme?
Hi. Mr
ReplyDeleteI have the same conf. on my raspberry but with raspbian.
My AP is working but sometimes i have some trouble with the dhcp.
My android phone fails to obtain the IP address (but my PC still works aving the IP from dhcp server, I use "dnsmasq" !)
So I have to restart the hostapd daemon.
The driver is the same from realtek site, same release number (4749)
Have you had the same issue ?