To setup WiFi with your BeagleBone Black you'll need a USB WiFi adapter that is compatible with the BeagleBone Black's Debian operating system. Be sure to read the BeagleBone Black wiki's list of known working WiFi adapters and consider using a device from that list.
Unfortunately the choice of WiFi adapter for the BeagleBone Black is a little more complicated compared to other Linux boards like the Raspberry Pi. The BeagleBone Black's official Debian image uses an old version 3.8 of the Linux kernel compared to more recent versions like 3.15+. Since WiFi drivers are typically included in the Linux kernel source, running an old kernel means running old and potentially buggy WiFi adapter drivers.
Out of the box the 3.8 kernel seems to have problems with popular WiFi adapters, like the Realtek-based adapters in the Adafruit store. In particular you might experience problems like the WiFi adapter randomly not connecting to a wireless network on boot. I'll show later in the guide that a simple script to reset the wireless adapter on boot greatly improves reliability of Realtek and other adapters on the BeagleBone Black.
If you're a more experienced Linux user you might be wondering if you can upgrade the Linux kernel to a later version like 3.14 or 3.15 to get more reliable WiFi drivers. You can, but you need to be careful because later kernels right now don't support the same functionality, like device tree overlays, as the 3.8 kernel. Kernel support beyond 3.8 is improving every day so you should search and consult the BeagleBone Black support group for the latest information on kernel stability and feature support if you want to use a newer kernel. I'll show later in the guide how to make sure you're using the latest 3.8 version kernel so you're getting the most up to date drivers.
One common issue with WiFi on the BeagleBone Black is poor performance from WiFi adapters with small internal antennas. The problem is that the ground and power planes of the HDMI port are right below the USB port and dampen the WiFi signal. This will manifest as poor signal quality and reliability with small USB WiFi adapters that are very close to the USB port.
There are two ways to deal with this interference issue, one is to use a small USB extension cable / adapter or small USB hub (even an unpowered hub would work fine) to move the WiFi adapter farther away from the BeagleBone Black. For example the photo below shows a small hub that moves a tiny WiFi adapter away from the BeagleBone Black:
A second option is to completely disable the HDMI port by manipulating the device tree. This option is only possible if you do not need to output any video or audio signal over the HDMI port!
Of the two options I would stick with the first, moving the adapter away from the board, since it's simpler and will still let you use the HDMI port. However if you can't move the WiFi adapter away you can follow the steps below to disable HDMI.
First connect your BeagleBone Black's USB port to your computer and connect to it with SSH. Then mount and edit the uEnv.txt file that controls boot configuration by executing:
You should see the nano text editor appear with the contents of the uEnv.txt file like this:
Notice the lines in the middle that mention disabling HDMI:
##Disable HDMI #cape_disable=capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN
Remove the # in front of the cape_disable command so it looks like:
##Disable HDMI cape_disable=capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN
Be careful to edit the correct line! If you disable the HDMI/eMMC line you might disable booting from the internal flash memory of the BeagleBone Black.
Save the file by pressing Ctrl-O and then Enter. Finally quit nano by pressing Ctrl-X. Reboot your BeagleBone Black and it should have the HDMI port disabled.
If you need to enable the HDMI port again just edit the uEnv.txt file with the same procedure above and add the # comment back in front of the disable HDMI line.
Finally make sure you are powering your BeagleBone Black with a sufficient power supply to support your WiFi adapter. Most computer or laptop USB ports do not supply enough power to support a BeagleBone Black and WiFi adapter!
Make sure you're using a 5 volt power supply with at least 1 amp or more of current. You can plug a simple external 5V power supply right into the BeagleBone Black's barrel jack.
Don't skimp on powering your device properly or else you will have instability and poor WiFi performance!