USB and Bluetooth Tethering with Raspberry Pi

This time I’d like to show you how to tethering your internet connection via Bluetooth or USB cable from your PC/Tablet/Smartphone with your Raspberry Pi!

What is Internet Tethering?

The internet tethering allows you to show your internet connection with another device using USB cable or bluetooth connection, in this case your network cards are free to use with another connection or to do some activity like pentesting.

USB Tethering with Smartphone/Tablet

In order to use USB tethering you need to configure your Raspberry Pi so that it can accept USB internet module.

Let’s start with type in the terminal:

sudo nano /etc/network/interfaces

Add this line at the end of the file:

allow-hotplug usb0
iface usb0 inet static
address 192.168.42.42
netmask 255.255.255.0
network 192.168.42.0
broadcast 192.168.42.255

In this case I’d like to use a static IP address in order to connect via VNC or SSH with the same IP every time, the subnetwork IP are 192.168.42.* and you should choose every number from 1 to 254 and replace the ” * “. If you don’t want a static IP replace static with dhcp and delete the address,netmask,network and broadcast line.

After that all you need to do is connect you Smartphone/Tablet with USB cable and turn on USB tethering option.

In addition add a default route pointing all traffic from your Pi out to your device, to do that grab the IP from your device and replace “[IP]” in the second command with:

arp -a

Make a default route pointing with command:

route add default gw [IP] usb0

All is now ready to use, test it with:

ping www.raspiproject.altervista.org

USB Tethering with PC

USB Tethering with PC is more simple that smartphone/tablet, all that you need to do is connect Raspberry Pi to PC via USB cable and tell to your PC that the Raspberry Pi is a network card. The way that I prefer is edit the config.txt and cmdline.txt file in the boot partition of your SD card.

Add this line at the end of config.txt file:

dtoverlay=dwc2

Add this line between rootwait and quiet in the cmdline.txt file:

modules-load=dwc2,g_ether

After that you can share the internet connection from ethernet/wifi with your new “network card”, if you don’t know how to do that check my previus article at this link. Make sure to install Bounjour Services on your Windows PC if you want to connect via SSH and VNC with the hostname raspberrypi.local ! 

Bluetooth Tethering with all devices

In order to use Bluetooth Tethering you need to Pair and connect your device as Internet source, to do that

On your device:

  1. Open Settings
  2. Select Bluetooth
  3. This will make your device “discoverable”
  4. Start Bluetooth Tetheering

On your Raspberry Pi:

  1. Click Bluetooth ‣ Turn On Bluetooth (if it’s off)
  2. Click Bluetooth ‣ Make Discoverable
  3. Click Bluetooth ‣ Add Device
  4. Your device will appear in the list, select it and click guilabel: Pair
  5. Enter a PIN code

On your device again:

  1. Enter the same PIN code when prompted
  2. Touch “OK”

You may receive errors relating to services not being able available or being unable to connect: these can be ignored.

Now you need to install Bluman on your Raspberry Pi and you can do that with command:

sudo apt-get update
sudo apt-get install blueman

After the installation open the menu and go to Preferences -> Bluetooth Manager, select you Paired device and run the Setup option in the menù, select Internet source from options and click OK. Now you are able to use internet over bluetooth, last but not least make the connection automatic if you want to use it without reconfigure it every time. To do that download this repository with command:

git clone https://github.com/WayneKeenan/RaspberryPi_BTPAN_AutoConnect.git

After that go into the folder and move the file in /bin with command:

cd RaspberryPi_BTPAN_AutoConnect/
sudo mv bt-pan /bin
sudo mv check-and-connect-bt-pan.sh /bin

Now you need to edit the check-and-connect-bt-pan.sh file in order to connect with your phone so take note about your MAC that you can read in the Bluetooth Manager window (is like AA:BB:CC:DD:EE:FF) and type in terminal:

cd /bin
sudo nano check-and-connect-bt-pan.sh

And repalce your MAC in the line:

BT_MAC_ADDR=<Your MAC address>

Save and exit.

In order for the Pi to automatically (re)connect create a cron job to run a script every minute.

Type:

crontab -e

Add this line:

* * * * * /bin/check-and-connect-bt-pan.sh

Then save the file.

Now you are ready to use your Raspberry Pi with all type of Internet Tethering options! Enjoy and hope you like it!