tp-link Linux Installation Guide
- June 7, 2024
- tp-link
Table of Contents
- Development Environment
- Compile the Driver
- Load the Driver
- Development Environment
- Compile the Driver
- Load the Driver
- Development Environment
- Compile the Drive
- Load the Driver
- Development Environment
- Compile the Driver
- Load the Driver
- Use the Graphical Interface
- Identify the Device
- Create the Interface
- Start wpa_supplicant in the background
- References
- Read User Manual Online (PDF format)
- Download This Manual (PDF format)
- wpa_cli p/var/run/wpa_supplicant set_network 0 wep_tx_keyidx X
tp-link Linux Installation Guide
Development Environment
The development environment in Ubuntu is required as follows:
Development Environment
OS| Ubuntu 16.04 LTS
Kernel version| 4.13.0-36-generic
Gcc version| 5.4.0
Compile the Driver
Compilation tool and kernel sources
Before you compile the driver, please make sure you have the correct compile tool and kernel sources. In Ubuntu 16.04 LTS, we can install compile tool gcc by command “apt-get install gcc
- $ apt-get install gcc
Note: We recommend you install the same version tool to compile the driver. For example:
According to the command “cat /proc/version”, you could see your Ubuntu 16.04 LTS system is compiled by gcc5.4.0. By default, gcc5.4.0 is already installed in Ubuntu 16.04 LTS, you could use gcc5.4.0 to compile the driver directly.
Generally, compatible kernel headers are already built in Ubuntu 16.04 LTS, so you don’t need to separately download and compile the kernel sources. However, if no related kernel headers are integrated in your system, please install the kernel sources first.
Compile the Driver
Use Terminal to go to the driver directory and run the following commands to compile the driver.
- $ make clean
- $ make
After compiling, you can see a name of the chip.ko file is stored in the directory of the driver.
Load the Driver
Here we show the 88x2bu.ko wireless driver loading process as an example. Run the following command to load the driver.
- $ sudo cp 88x2bu.ko /lib/modules/[kernel version]/kernel/drivers/net/wireless/ #[kernel version] is the directory name of the system kernel version
- $ sudo depmod –a
- $ sudo modprobe 88x2bu.ko
Or directly use insmod to load the driver.
- $ sudo insmod 88x2bu.ko
After loading the driver, run the following command to check if the driver is successfully loaded.
- $ lsmod
Mint 18.03
Development Environment
The development environment in Mint is required as follows:
Development Environment
OS| Mint 18.03
Kernel version| 4.10.0-38.generic
Gcc version| 5.4.0
Compile the Driver
Compilation tool and kernel sources
Before you compile the driver, please make sure you have the correct compile tool and kernel sources. In Mint, we can install compile tool gcc by command “apt-get install gcc”
- $ apt-get install gcc
Note: We recommend you install the same version tool to compile the driver. For example:
According to the command “cat /proc/version”, you could see your Mint system is compiled by gcc5.4.0, so we should use gcc5.4.0 to compile the driver. Generally, compatible kernel headers are already built in Mint, so you don’t need to separately download and compile the kernel sources. However, if no related kernel headers are integrated in your system, please install the kernel sources first.
Compile the Driver
Use Terminal to go to the driver directory and run the following commands to compile the driver.
- $ make clean
- $ make
After compiling, you can see a name of the chip.ko file is stored in the directory of the driver.
Load the Driver
Here we show the 88x2bu.ko wireless driver loading process as an example. Run the following command to load the driver.
- $ sudo cp 88x2bu.ko /lib/modules/[kernel version]/kernel/drivers/net/wireless/
- $ sudo depmod -a
- $ sudo modprobe 88x2bu
Or directly use insmod to load the driver
- $ sudo insmod 88x2bu.ko
After loading the driver, run the following command to check if the driver is successfully loaded.
- $ lsmod
Raspberry Pi3
Development Environment
The development environment in Raspberry Pi 3 is required as follows
Development Environment
OS| Kali 2018.1
Kernel Source Version| 4.14.0-kali3-amd64
Compile the Drive
Before you compile the driver, please make sure you have the correct compile tool and kernel sources.
Compile Kernel source
Here we illustrate the instructions for local building to compile the driver for Linux.
Download and Install Tools
Note: Before local building, make sure your raspberrypi system is connected to the internet
Install Git, bc and other related tools.
- $ sudo apt-get install git bc
Get Kernel source
Click the following links to download raspberrypi kernel source and other related tools.
https://github.com/raspberrypi/linux
https://github.com/raspberrypi/tools
Before local building, make sure if you need to update the kernel. If your adapter supports the current kernel version, you don’t need to update the kernel, and just download the kernel sources of this version. If you have to update the kernel, choose the kernel sources of the desired version. Here we download the version 4.9 kernel sources. Create Linux-src directory in the local user’s root directory to store kernel sources. If you have installed Git, you can use Git to obtain Linux kernel sources from Github; if you directly download the .zip file, use the following jar command to decompress this file.
- $ sudo jar –xf XXX.zip
Note: It is recommended not to use the unzip software to decompress the .zip file.
Modify Kernel
Run the following commands to modify Linux kernel. You can also modify the kernel according to your demands.
- $ cd linux / go the directory of kernel sources /
- $ KERNEL=kernel7
- $ make bcm2709_defconfig
Note: The instructions for Raspberry Pi3 and other versions of Raspberry are slightly different, for details of other versions, please refer to the instructions on Raspberry official website .
Compile the Kernel
Run the following commands to compile and install the kernel and related device tree. It may take a few minutes.
- $ make –j4 zImage modules dtbs
- $ sudo make modules_install
- $ sudo cp arch /arm/boot/dts/*.dtb /boot/$ sudo cp
- arch/arm/boot/dts/overlays/.dtb /boot/overlays/
- $ sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/
- $ sudo cp arch/arm/boot/zImage /boot/$KERNEL.img
Note: “-j4” refers to using Raspberry Pi3 and 4 to compile to accelerate the compilation process.
Power off the development board of Raspberry Pi3 and then run the following command to confirm the kernel version.
-
$ uname –a
or -
$ cat /proc/version
Compile the Driver Source
Go to the driver’s directory, open the Makefile file to support Raspberry Pi3. By default, the
- CONFIG_PLATFORM_I386_PC macro is enabled. Set the value for
- CONFIG_PLATFORM_BCM2709 to y, and set the value for
- CONFIG_PLATFORM_I386_PC to n.
- CONFIG_PLATFORM_BCM2709 = y
- CONFIG_PLATFORM_I386_PC = n
- CONFIG_PLATFORM_ANDROID_X86 = n
After setting the parameters, use Terminal to go to the directory in which the driver source file is stored. Run the following commands to compile the driver.
- $ make clean
- $ make
Load the Driver
Here we show the 8192eu.ko wireless driver loading process as an example. Run the following command to load the driver.
- $ sudo cp 8192eu.ko /lib/modules/[kernel version]/kernel/drivers/net/wireless/
- $ sudo depmod -a
- $ sudo modprobe 8192eu
Or directly use insmod to load the driver.
- $ sudo insmod 8192eu.ko
After loading the driver, run the following command to check if the driver is successfully loaded.
Kali 2018.1
Development Environment
The develo pment environment in Kali 2018.1 is required as follows
Development Environment
OS| Kali 2018.1
Kernel Source Version| 4.14.0-kali3-amd64
Compile the Driver
Install the Kernel Header File
Before compiling the driver in Kali 2018, make sure you have installed and compiled the right Linux header file. Follow the instructions to install and compile the Linux header file.
Update the Software Source
Run the following commands to update the software source and related tools
- $ sudo apt-get clean
- $ sudo apt-get update
- $ sudo apt-get upgrade
Install the Kernel Header File
-
Method 1: Run the following command to install the kernel header file.
$ sudo apt-get install linux-headers-$(uname -r)
After running this command, the system will automatically find the matched kernel header file to download and install it. If the Kali server is updated, you may not find the specific file, in this case, you can manually download and install the header file
-
Method 2: Manually Download and Compile to Install
Find the matched kernel header file in the download source of your Kali software. Click the following link to go to the official website to download Linux header file and related tools.
http://http.kali.org/kali/pool/main/l/linux
- Check the system version of Kal
- $ uname -r
The system version we used here is shown as below
- Download and compile linux-kbuild In the Kali download links, find the linux kbuild file of your system. Here we choose linux-kbuild 4.14_4.14.17.-1kali_amd64.deb as an example.
After downloading the file, use Terminal to go to the directory and run the following command to install the file.
- $ sudo dpkg -i linux-kbuild-4.14_4.14.17-1kali_amd64.deb
Download and compile linux-header-common In the Kali download links, find the linux-header-common file of your system. Here we choose linux- header-4.14.0-kali3-common_4.14.17-1kali_all.deb as an example.
After downloading the file, use Terminal to go to the directory and run the following command to install the file.
- $ sudo dpkg -i linux-header-4.14.0-kali3-amd64_4.14.17-1kali_amd64.deb
Run the following command to check if the kernel header file is successfully installed.
- $ dpkg-query -s linux-headers-$(uname -r)
detailed linux-header information.
Check the /lib/modules/
Compile Driver Source
Use Terminal to go to the driver directory. Run the following commands to compile the driver.
- $ make clean
- $ make
After compiling, you can see a name of the chip.ko file is stored in the directory of the driver.
Load the Driver
Here we show the 88x2bu.ko wireless driver loading process as an example. Run the following command to load the driver.
- $ sudo cp 88x2bu.ko /lib/modules/[kernel version]/kernel/drivers/net/wireless/
- $ sudo depmod -a
- $ sudo modprobe 88x2bu
Or directly use insmod to load the driver.
- $ sudo insmod 88x2bu.ko
After loading the driver, run the following command to check if the driver is successfully loaded.
- $ lsmod
Use the Graphical Interface
Ubuntu, Mint, Raspberry Pi and Kali all provide friendly graphical interface. After the adapter driver is successfully installed, you can use the graphical interface to manage your wireless settings. The interfaces for different system version are slightly different and here we use the interfaces for Kali 2018.1 as an example for illustration.
-
After successfully loading the driver, you will see a network connection icon in the task bar. Choose Wi-Fi Not Connected > Wi-Fi Settings to display the available wireless networks.
-
Select TP-Link_D003_5G and enter its password to connect to this network
-
After connecting to this network, you can check its detailed wireless settings.
Use the Command Line
You can use commands to manage your wireless setting in Linux. Here we use the interfaces for Kali 2018.1 as an example for illustration.
Identify the Device
Inert the USB wireless adapter, and run the following command to check if the adapter is identified.
- $ lsusb
Create the Interface
Run the following command to check if the wireless network interface is created.
Change the Interface Status to Up
Check if the WLAN interface is up. If not, run the following command. Here we use wlan1 as an example.
- $ ifconfig wlan1 up
If it failed to change to up, run the following command to set the state again.
- $ rfkill unblock wifi
- $ ifconfig wlan1 up
Start wpa_supplicant in the background
Run the following command:
- $ wpa_supplicant –Dnl80211 –iwlan1 –c ./ wpa_0_8.conf -B
Note: wpa_0_8.conf is a file in the current driver directory, go to the driver directory when running the command.
If the command above is not effective, run the following command to end the wpa_supplicant procedure and then run the above command again.
- $ killall wpa_supplicant
If your Linux kernel does not support 802.11, run the following command.
- $ wpa_supplicant -Dwext -iwlan0 -c ./wpa_0_8.conf -B
Scan Wireless Networks (SSID)
Run the following commands.
- $ wpa_cli –p /var/run/wpa_supplicant scan
- $ wpa_cli –p /var/run/wpa_supplicant scan_results
Connect to the AP
-
Open
Run the following commands- $ wpa_cli –p /var/run/wpa_supplicant remove_network 0
- $ wpa_cli –p /var/run/wpa_supplicant ap_scan 1
- $ wpa_cli –p /var/run/wpa_supplicant add_network
- $ wpa_cli –p /var/run/wpa_supplicant set_network 0 ssid ‘”tplink”‘ //tplink is the SSID of the desired AP. The SSID is in double quotation marks and then as a whole enclosed by single quotation marks.
- $ wpa_cli –p /var/run/wpa_supplicant set_network 0 key_mgmt NONE
- $ wpa_cli –p /var/run/wpa_supplicant select_network 0
-
WEP40 with open system
- $ wpa_cli –p /var/run/wpa_supplicant remove_network 0
- $ wpa_cli –p /var/run/wpa_supplicant ap_scan 1
- $ wpa_cli –p /var/run/wpa_supplicant add_network
- $ wpa_cli –p /var/run/wpa_supplicant set_network 0 ssid ‘”tplink”‘
- $ wpa_cli –p /var/run/wpa_supplicant set_network 0 key_mgmt NONE
- $ wpa_cli –p /var/run/wpa_supplicant set_network 0 wep_key0 1234567890
- $ wpa_cli –p /var/run/wpa_supplicant set_network 0 wep_tx_keyidx 0
- $ wpa_cli –p /var/run/wpa_supplicant select_network 0
-
WEP40 with shared key
- $ wpa_cli –p /var/run/wpa_supplicant remove_network 0
- $ wpa_cli –p /var/run/wpa_supplicant ap_scan 1
- $ wpa_cli –p /var/run/wpa_supplicant add_network
- $ wpa_cli –p /var/run/wpa_supplicant set_network 0 ssid ‘”tplink”‘
- $ wpa_cli –p /var/run/wpa_supplicant set_network 0 key_mgmt NONE
- $ wpa_cli –p /var/run/wpa_supplicant set_network 0 wep_key0 1234567890
- $ wpa_cli –p /var/run/wpa_supplicant set_network 0 wep_tx_keyidx 0
- $ wpa_cli –p /var/run/wpa_supplicant set_network 0 auth_alg SHARED
- $ wpa_cli –p /var/run/wpa_supplicant select_network 0
-
WEP 104 with open system
-
$ wpa_cli –p /var/run/wpa_supplicant remove_network 0
-
$ wpa_cli -p /var/run/wpa_supplicant ap_scan 1
-
$ wpa_cli -p /var/run/wpa_supplicant add_network
-
$ wpa_cli -p /var/run/wpa_supplicant set_network 0 ssid ‘”tplink”‘
-
$ wpa_cli –p /var/run/wpa_supplicant set_network 0 key_mgmt NONE
-
$ wpa_cli -p /var/run/wpa_supplicant set_network 0 wep_key0
12345678901234567890123456 -
$ wpa_cli -p /var/run/wpa_supplicant set_network 0 wep_tx_keyidx 0
-
$ wpa_cli -p /var/run/wpa_supplicant select_network 0
-
-
WEP 104 with open system
-
$ wpa_cli –p /var/run/wpa_supplicant remove_network 0
-
$ wpa_cli –p /var/run/wpa_supplicant ap_scan 1
-
$ wpa_cli –p /var/run/wpa_supplicant add_network
-
$ wpa_cli –p /var/run/wpa_supplicant set_network 0 ssid ‘”tplink”‘
-
$ wpa_cli –p /var/run/wpa_supplicant set_network 0 key_mgmt NONE
-
$ wpa_cli –p /var/run/wpa_supplicant set_network 0 wep_key0
12345678901234567890123456 -
$ wpa_cli –p /var/run/wpa_supplicant set_network 0 wep_tx_keyidx 0
-
$ wpa_cli –p /var/run/wpa_supplicant set_network 0 auth_alg SHARED
-
$ wpa_cli –p /var/run/wpa_supplicant select_network 0
Note:
If the WEP key is ASCII, run the following command: #WEP40: wpa_cli -p/var/run/wpa_supplicant set_network 0 wep_key0 ‘”12345″‘ #WEP104: wpa_cli -p/var/run/wpa_supplicant set_network 0 wep_key0 ‘”1234567890123″‘ If the index for WEP key is 0-3, run the following command #wpa_cli -p/var/run/wpa_supplicant set_network 0 wep_keyX 12345678901234567890123456wpa_cli p/var/run/wpa_supplicant set_network 0 wep_tx_keyidx X
-
-
TIKP/AES
- $ wpa_cli –p /var/run/wpa_supplicant remove_network 0
- $ wpa_cli –p /var/run/wpa_supplicant ap_scan 1
- $ wpa_cli –p /var/run/wpa_supplicant add_network
- $ wpa_cli –p /var/run/wpa_supplicant set_network 0 ssid ‘”tplink”‘
- $ wpa_cli –p /var/run/wpa_supplicant set_network 0 psk ‘”12345678″‘
- $ wpa_cli –p /var/run/wpa_supplicant select_network 0
Enable DHCP client
Run the following command
- $ dhclient wlan1
After running the command, the adapter will get an IP assigned by the AP. Then you can run the ping command to check if the wireless connection is successful.
Note:
- Run the commands under the root account.
- If you use if config command to confirm you have obtained the IP address and use ping command to confirm you wireless connection is successful, but the internet is still unavailable, you can run the following commands to change the default system
gateway to the router’s LAN IP.
- $ route del default wlan0 : //Delete the default gateway of wlan0
- $ route add default gw 192.168.1.1 : //Add the router’s LAN IP as the default gateway.
References
- Index of /kali/pool/main/l/linux
- GitHub - raspberrypi/linux: Kernel source tree for Raspberry Pi-provided kernel builds. Issues unrelated to the linux kernel should be posted on the community forum at https://forums.raspberrypi.com/
- GitHub - raspberrypi/tools
Read User Manual Online (PDF format)
Read User Manual Online (PDF format) >>