My Keebox W150NU seems to be doing a good job with a BeagleBone black as a wifi access point. (I get about 3MB/s beaglebone -> laptop). Beware that lots of other adapters (eg., Edimax and D-Link) work really poorly or not at all with the BeagleBone.
With a newer BeagleBone green, the W150NU was recognized out of the box, but on an older BBB with another adapter I had to update the kernel first:
Update kernel if your wifi adapter isn't detected (or if you just want to be up to date):
First I did 'sudo apt-get update ; sudo apt-get dist-upgrade'
Then I upgraded the kernel so it'd recognize the usb wifi adapter:
'cd /opt/scripts/tools ; git pull ; ./update_kernel.sh'
On BeagleBone Green they tweaked a file to say "BBG" instead of "BBB", so I had to revert it with: 'cd /opt/scripts ; git checkout tools/eMMC/init-eMMC-flasher-v3.sh' then 'git pull' again before I could run the 'update_kernel.sh' script.Rebooting, the W150NU appeared as wifi2.
Next, I followed the instructions here to set up hostapd.
First, 'sudo apt-get install dnsmasq hostapd'
Here's my /etc/hostapd/hostapd.conf (beware leading and trailing spaces, or hostapd.conf will refuse to start):
### Wireless network name ###
interface=wlan0
#
### Set your bridge name ###
#bridge=br0
#driver
driver=nl80211
country_code=US
ssid=beaglebone
channel=7
hw_mode=g
# # Static WPA2 key configuration
# #1=wpa1, 2=wpa2, 3=both
wpa=2
wpa_passphrase=yourpassword
## Key management algorithms ##
wpa_key_mgmt=WPA-PSK
#
## Set cipher suites (encryption algorithms) ##
## TKIP = Temporal Key Integrity Protocol
## CCMP = AES in Counter mode with CBC-MAC
wpa_pairwise=TKIP
#rsn_pairwise=CCMP
#
## Shared Key Authentication ##
auth_algs=1
## Accept all MAC address ###
macaddr_acl=0
#enables/disables broadcasting the ssid
ignore_broadcast_ssid=0
# Needed for Windows clients
eapol_key_index_workaround=0
And don't forget to set this in /etc/defaults/hostapd:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
I couldn't get dnsmasq or isc-dhcp-server to work consistently, though. Turns out that 'netstat -nlp' showed udhcpd was binding to 0.0.0.0 on port 67 (which is a bug, since it ignores the "interface" option), so the other dhcp servers can't start.
Hint: /var/log/daemon.log is where a lot of the error messages show up.
I fixed that with 'mv /usr/sbin/udhcpd /usr/sbin/udhcpd.disabled', although it would probably have been better to 'apt-get purge udhcpd'.
Here's my /etc/dnsmasq.conf:
interface=usb0
dhcp-range=192.168.7.1,192.168.7.1,4h
interface=wlan0
dhcp-range=192.168.4.2,192.168.4.10,4h
auto wlan0
iface wlan0 inet static
address 192.168.4.1
netmask 255.255.255.0
network 192.168.4.0
gateway 192.168.4.1
That seems to do it, except that I have to "ifup wlan0" after startup on my BeagleBone Green. The Black doesn't seem to need that for some reason I haven't figured out yet.