OpenSource For You

How To Create An Android-friendly Hotspot In Linux

This article walks readers through the process of setting up an Android-friendly hotspot.

- By Jatin Dhankhar The author is crazy about computers and loves to learn anything that is related to them. Besides computers, he loves science and cartoons. He can be reached at dhankhar.jatin@gmail.com

Let’s suppose you have a laptop and a phone, and you want to share your laptop's Internet connection with the phone (reverse tethering). You might think it's as simple as going to a network connection and creating a wireless connection. Unfortunat­ely, it's not, because the hotspot created by laptops generally supports only two modes—Ad-Hoc and Infrastruc­ture (which can be seen in Figure 1). Both these modes are not supported by most of the Android and Windows phones in the market. So let us go about creating an Android-friendly or a ‘phone-friendly’ hotspot. For this article, I’ll be using Ubuntu 12.04 LTS.

Installati­on

Let’s first install Hostapd from the Ubuntu software centre.

If you prefer the command line, then just type the following command:

sudo apt-get install hostapd

You can also download and compile Hostapd from source, from its site http://w1.fi/hostapd/.

For other distributi­ons, search for the package named hostapd in your repository.

As explained in http://acx100.erley.org/git.html, Hostapd has the following levels in managing Wi-Fi and each level is explained as follows:

“Wireless card: Should be self-explanator­y... handles sending/receiving wireless packets

Linux kernel: The Linux kernel contains the driver for the wireless card, and the nl80211 sub-system, which handles the configurin­g of wireless interfaces for user space

libnl: libnl is the transport layer used to communicat­e with the kernel via netlink

udev: udev is the facility the kernel uses to pass events/calls to crda

iw: iw is a userspace utility that we can use to test that libnl is working correctly, as well as to create additional virtual wireless interfaces on the wireless card

crda: crda is a userspace program that the kernel queries (through udev) to find what channels/frequencie­s are usable, and at what powers. This moves the informatio­n out of static tables maintained in the kernel to userspace, which allows them to be updated without reloading drivers or rebooting

Wireless regulatory database: This is the database of allowable frequencie­s and transmit power levels used by crda

Hostapd: This is the daemon that handles the generation of beacons and other wireless packets, as well as wpa-psk, wpa2, etc, encryption­s.”

Checking your Wi-Fi card

Hostapd supports the following drivers: mac80211-based drivers with support for master mode [linux] Linux drivers that support nl80211/cfg80211 in AP mode

Host AP driver for Prism2/2.5/3 [linux] Driver interface for FreeBSD net80211 layer [kfreebsd] Any wired Ethernet driver for wired IEEE 802.1X authentica­tion Now let’s check whether your Wi-Fi card is supported by Hostapd. Most commonly used Wi-Fi cards are supported in Hostapd, but just to be sure, we could check. First, check which kernel driver is used for your card, then type the following command:

lspci -k | grep -A 3 -i "network" Network controller: Ralink corp. RT3290 Wireless 802.11n 1T/1R PCIe Subsystem: Hewlett-Packard Company Device 18ec Kernel driver in use: rt2800pci Kernel modules: rt2800pci

The driver used by the kernel is rt2800pci. This will vary depending on your kernel and your Wi-Fi card. Now, let’s check the interface part, which will tell us whether our card is supported or not. Next, type the following command:

modinfo rt2800pci | grep ‘depends’

…replacing driver with your appropriat­e one, which in my case is rt2800pci.

This will vary depending on your Wi-Fi card. In my case, it is:

rt2x00lib,rt2800lib,rt2x00pci,compat,eeprom_93cx6 Check each interface with the compatibil­ity list either by checking if your interface satisfies one of the conditions required by Hostapd or by ‘googling’ with the keyword ‘interface_name hostapd’. You might get some clue if one or more interfaces match with the list needed by Hostapd—then you are good to go. Otherwise, cross your fingers and give it a try by configurin­g it as explained below.

Configurat­ion

Now, let’s create a configurat­ion file named test.conf with your favourite text editor in your home directory. Lines starting with # are just comments to explain the configurat­ion; you can skip them while writing the configurat­ion file: # sets the wifi interface to use, is wlan0 in most case interface=wlan0 # driver to use, nl80211 works in most cases driver=nl80211 # Choose suitable name for SSID, or simply the name of your wifi as visible on list of networks ssid=Put_your_desried_name_here # sets the mode of wifi, depends upon the device used, can be a,b,g,n. g ensures backward #compatibil­ity. hw_mode=g # sets the channel for your wifi , 11 will work fine for most of the people channel=11 #####Sets WPA and WPA2 authentica­tion , they are stronger than WEP##### #wpa option sets which wpa implementa­tion to use #1 - wpa only #2 - wpa2 only #3 - both wpa=3 # sets password for the access point, choose a strong one :) wpa_passphrase=Put_here_your_desired_password # sets wpa key management wpa_key_mgmt=WPA-PSK #sets encryption used wpa_pairwise=TKIP CCMP # Rekeys after 10 minutes,if there is interferen­ce, the wifi

connection between AP and laptop will #break. For CCMP, during rekeying, there is a break of approximat­ely 10 seconds which may #be the time for random key generation and reconnecti­on. #If you face any error you can skip the last option, but will work in most cases flawlessly wpa_ptk_rekey=600 # For more options refer to manual pages or Hostapd Website http://w1.fi/hostapd/

Testing

We are now almost done but we need to create some arrangemen­ts. Using the command line would take a long time. The easy way would be to create a normal Ad-Hoc Wi-Fi hotspot (SSID not mandatory) to be the same as for Hostapd. Creating an Ad-Hoc hotspot is as easy as going to Network Connection­s, and then creating a New Wireless Connection.

Choose the SSID and key of your choice, because it doesn’t matter, as this will be overridden by the WPA security of Hostapd.

In my case, the key is named Hotspot. After getting the notificati­on that a successful connection has been establishe­d, fire up the terminal and type the following command:

This command will invoke Hostapd with options specified by the configurat­ion file named test.conf (which we created earlier). It will make a hotspot on the specified interface, wlan0, at the MAC address of your Wi-Fi card, as shown in Figure 4.

Now, try to connect your phone by specifying the necessary arguments. As soon as your phone tries to connect, you will see your device’s MAC address along with its status, which would be something like what’s shown in Figure 5.

Note: 1. Users have to first create an Ad-Hoc network, before issuing the Hostapd command.

Run the Hostapd command with sudo or with root privileges.

2. It would also help you to track who is connected to your network. MAC address filtering can be set up by just adding the following line: #macaddr_acl sets options for mac address filtering. 0 means "accept unless in deny list" macaddr_acl=0

References

[1] http://acx100.erley.org/git.html— for an explanatio­n of how Hostapd manages Wi-Fi and an understand­ing of each component in the level. [2] httpnims11.wordpress.com/2012/04/27/hostapd-the-linux-wayto-create-virtual-wifi-access-point/— For an understand­ing of the rest of the process [3] http://w1.fi/hostapd/ [4] https://bugs.archlinux.org/task/27406 — for an explanatio­n of the errors associated with wpa_ptk_rekey=600

 ??  ??
 ??  ??
 ??  ?? Figure 1: Types of wireless networks
Figure 1: Types of wireless networks
 ??  ?? Figure 2: Creating a New Wireless Connection
Figure 2: Creating a New Wireless Connection
 ??  ?? Figure 3: Preference­s of New Network
Figure 3: Preference­s of New Network
 ??  ?? Figure 5: Connection details of your device shown by Hostapd
Figure 5: Connection details of your device shown by Hostapd
 ??  ?? Figure 4: Hostapd running
Figure 4: Hostapd running
 ??  ??
 ??  ??

Newspapers in English

Newspapers from India