About
The BTBerryWifi App for iOS is on the (Apple App Store), and for Android is on the Google Play Store.
You can also find it by typing: BtBerryWifi , in your store search bar.
The app lets you set the wifi networks (name/SSID & password) on your Headless Raspberry Pi using Bluetooth on your phone or tablet. This is useful if you cannot connect a monitor/mouse/keyboard to your RPi. The Raspberry Pi sends a list Wifi Access Points (Networks) to your phone (via Bluetooth). You then select the Network Name (SSID) and enter the password in the phone App. This is sent to the Raspberry Pi (via Bluetooth) and the Raspberry Pi connects to the desired wifi network. The Raspberry stores the network SSID and password, so you do not have to re-enter it next time you connect. The app also allows the use of a hidden SSID.
There are also advanced features accessed through in-app purchases which adds Encryption, allow you to control who can connext to your Pi, and provide extra info about the RPi/networks.
See the user guide for details with screenshots or how to videos.
The typical use cases
- You have a headless Raspberry Pi working at home - and you take it to a friends house or a public place where you need to connect it to a yet unknown wifi network available there.
- You have one or more headless Raspberry Pi at home (for example: home automation or home theater), and you change your home network SSID and/or password (new router).
- You are making a prototype or small product run delivering a Raspberry Pi appliance to friends/early adopters - and you need a way to have them setup their wifi on the RPi.
The Problem
- You do not have access to a keyboard/mouse/monitor or your RPi is sealed in a box that you do not want to open - which means you cannot access your Raspberry Pi connectors physically.
- Since your RPi is not connected to wifi, you cannot ssh into it with your PC/Mac to set the network parameters.
- Basically, you have no way to get into the Rpi to set the wifi network and password.
The solution: BTBerryWifi app on your phone + btwifiset.py code on your Raspberry pi.
The BTBerryWifi app on your phone or tablet connects to a Raspberry Pi via bluetooth and displays available wifi networks within range of the RPi. You select a network, enter the password. This is sent to the Raspberry Pi which connects to the wifi network.
However, note that you must have installed the python code on your Raspberry Pi when you did have physical or ssh access to it (before it left your home, or your company).
Python code needed on the Raspberry Pi
For the app to work, the Free (as in beer) - open source Python code: btwifiset.py found on GitHub, must be installed on the Raspberry Pi. See Installation for details: There is an automated bash script available that will install every thing you need.
Btwifiset.py code is set up to run automatically when the RPi boots up (for a default time duration of 15 minutes - this can be modified).
So if you expect that your headless RPi might need to connect to a new wifi at some point in the future, install btwifiset.py on the RPi now. Then, when you need it, you simply turn on(or reboot) the RPi, fire up the BTBerryWifi app or your iphone or tablet, and set the wifi credentials for your Pi.
Note: You do not need a raspberry Pi per se: Any linux box meeting the requirements will do.
Network Manager compatibility
The initial version of the app (iOS only) used wpa_supplicant to manage the wifi network on the Raspberry Pi.
When the Raspberry Pi Foundation released the new OS "Bookworm" - it included Network Manager which is turned on by default.
Network Manager uses wpa_supplicant behind the scenes - but blocks direct access to wpa_supplicant by other processes (such as btwifiset.py code). If you installed version 1 on a "Bookworm" RPi, the BTBerryWifi app would still connect to the RPI via bluetooth and display the list of wifi Networks. But once you selected the network and entered the password, the RPi would never connect.
The current version of the app detects whether your OS is using Network Manager or not - and uses the appropriate means to connect to the selected wifi network. This has opened the applicability of the app to other linux distribution that use Network Manager. It also works if your RAspberry Pi version is older and does not have Network Manager installed.
Other OS compatibility requirements
Because Network Manager is now supported, Other OS using it, such as Ubuntu or Armbian should also work. (For example, it was tested on a Banana Pi using Armbian).
The only requirement is that your OS names its bluetooth adapter: hci0 and its wifi adapter: wlan0. You can check the wifi adapter name by running:
ls /sys/class/ieee80211/*/device/net/
And check the bluetooth adapter with:
ls /sys/class/bluetooth
Note that if your OS uses something different (like Fedora does), you can modify this in the open source btwifiset.py code.
Features
- connect to or change between wifi Networks already created on the Pi:
- useful if you move between known networks, and have set-up your Pi with network SSID and passwords.
- Create and connect to new Networks, or change password on existing Networks on Raspberry Pi1:
- On your phone.tablet: Select new network name (SSID) in list, and enter password.
- once created, network is remember by the Raspberry Pi (even after reboot).
- Add hidden SSID network to the Raspberry pi2
- Delete a Network on Raspberry Pi to prevent from connecting to it again.3
- Bluetooth data is sent in clear text (free version) - or encrypted4
- Control who can access your RAspberry Pi with the BTBerryWifi app using password4
- get info such as IP address, mac addresses, network signal strength & frequency/channel4
- display user defined info about Raspberry Pi on your device:4
- (defaults to CPU temperature & memory usage)
notes:
- on Android only: limited to one network for free (Basic) version. standard (in-app) version for unlimited.
- on Android: requires standard version
- requires premium version (in-app). Only available on Android.
- on Android: requires premium version, on iOS: requires Supporter tier (any level)
See (details of extra features) provided with in-app purchase.
Or go to the user guide for details with screenshots or how to videos.