Single Board Computer WiFi Hotspot - SkycoinProject/skywire GitHub Wiki
This guide will teach you how to setup your Single Board Computer (SBC) in a way that it broadcasts a Wifi-signal. The guide was written to work with any SBC that runs Armbian or Raspbian.
Main goal is to create a guide with detailed instructions to turn any SBC that runs Armbian or Raspbian into a wireless router with full security, that will allow you to use your home lan to route traffic to the internet.
You will need the following to complete this guide:
- SBC (Single Board Computer) that supports Linux, Armbian or Raspbian.
- Tested on Orange Pi Prime & Raspberry 3 B+ plus USB WiFi dongle.
- micro SD card, at least 8 GB (class 10 recommended).
- USB keyboard.
- HDMI cable + monitor.
- Power adapter for the SBC:
- Adapter of 5.0 V @ 2.5A or more for the Orange Pi Prime.
- USB cable and charger of 1A or more for the Raspberry Pi.
- Ethernet cable + free LAN port on your home router which should have internet access.
This guide will assume that your home router runs a DHCP server (don't get confused, that's the normal state). This DHCP server will manage the WiFi users as well since we will bridge the LAN and WiFi networks (LAN & WiFi will function as a single network).
The following steps are necessary to active the WiFi hotspot.
- Download Armbian for your SBC from the official website. Select the non-desktop version as we do not require the desktop environment.
- If you use a Raspberry go to the official website and download the Raspbian lite version (non-desktop version).
Download Etcher, it's an image flashing tool. Run Etcher as administrator, then select the image file (.img) while the Micro SD disk is connected, and click on ‘Flash’.
After the flashing process terminated successfully, eject the Micro SD and insert it into the SBC.
Make sure the micro SD card is inserted into the SBC. Then connect:
- the LAN cable to your home router.
- the monitor + the usb Keyboard.
- last but not least, connect the power cable.
After turning on your SBC, you will see the system boot and you will be presented with a login prompt, use the Armbian default credentials:
user: root
password: 1234
Once you're logged in for the first you will be requested to change the default root password, this is a sample output of the process:
[ OK ] Reached target Multi-User System.
[ OK ] Reached target Graphical Interface.
Starting Update UTMP about System Runlevel Changes...
[ OK ] Started Update UTMP about System Runlevel Changes.
Debian GNU/Linux 9 orangepiprime ttyS0
orangepiprime login: root
Password:
You are required to change your password immediately (root enforced)
Changing password for root.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
___ ____ _ ____ _
/ _ \ _ __ __ _ _ __ __ _ ___ | _ \(_) | _ \ _ __(_)_ __ ___ ___
| | | | '__/ _` | '_ \ / _` |/ _ \ | |_) | | | |_) | '__| | '_ ` _ \ / _ \
| |_| | | | (_| | | | | (_| | __/ | __/| | | __/| | | | | | | | | __/
\___/|_| \__,_|_| |_|\__, |\___| |_| |_| |_| |_| |_|_| |_| |_|\___|
|___/
Welcome to ARMBIAN 5.65 stable Debian GNU/Linux 9 (stretch) 4.14.78-sunxi64
System load: 0.29 0.16 0.06 Up time: 1 min
Memory usage: 3 % of 2002MB IP: 192.168.100.23
CPU temp: 22°C
Usage of /: 8% of 15G
[ General system configuration (beta): armbian-config ]
New to Armbian? Check the documentation first: https://docs.armbian.com
Thank you for choosing Armbian! Support: www.armbian.com
Creating a new user account. Press <Ctrl-C> to abort
Please provide a username (eg. your forename):
This is a prompt to create a new user, do it so if you like but please notice that you can abort it by hitting Ctrl+C
and simply continue with using the root account.
You will to login again after changing the root user password whether you created another user account or not.
Note: Please observe that the network manager has already configured your eth0 interface, see the sample output above.
You are ready to go, continue with step 3.
Log into the system, the default user credentials are:
user: pi
password: raspbian
Once you're logged in, to change the password of user pi
, just type in the console:
sudo passwd pi
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Warning: From this point forward users of Raspbian must make a sudo bash
to switch to root and run all following commands as root.
We will start tinkering with the network now, in the process we may lose connectivity so we will get all needed files prior to that. You can either:
- create the files which are necessary by copy pasting them.
- cloning a git repository.
Change to the root user directory via cd /root
, now you need to create three files hostapd, hostapd.conf
and interfaces
.
Create the hostapd file via nano hostapd
and then paste the following content. Save via ctrl+x
and yes
.
# Defaults for hostapd initscript
#
# See /usr/share/doc/hostapd/README.Debian for information about alternative
# methods of managing hostapd.
#
# Uncomment and set DAEMON_CONF to the absolute path of a hostapd configuration
# file and hostapd will be started during system boot. An example configuration
# file can be found at /usr/share/doc/hostapd/examples/hostapd.conf.gz
#
DAEMON_CONF="/etc/hostapd/hostapd.conf"
# Additional daemon options to be appended to hostapd command:-
# -d show more debug messages (-dd for even more)
# -K include key data in debug messages
# -t include timestamps in some debug messages
#
# Note that -B (daemon mode) and -P (pidfile) options are automatically
# configured by the init.d script and must not be added to DAEMON_OPTS.
#
#DAEMON_OPTS=""
Create the hostapd.conf file via nano hostapd.conf
and then paste the following content. Save via ctrl+x
and yes
.
interface=wlan0
bridge=br0
ssid=OPP-hotspot
country_code=ES
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=123password
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
wpa_group_rekey=86400
ieee80211n=1
wme_enabled=1
Create the interfaces file via nano interfaces
and then paste the following content. Save via ctrl+x
and yes
.
# loopback interface
auto lo
iface lo inet loopback
# wireless wlan0
allow-hotplug wlan0
iface wlan0 inet manual
# eth0 connected to the ISP router
allow-hotplug eth0
iface eth0 inet manual
# Setup bridge
allow-hotplug br0
iface br0 inet dhcp
bridge_ports wlan0 eth0
cd /root
git clone http://github.com/stdevPavelmc/armbian-hostpot-bridge.git
At the end you will have a folder named armbian-hostpot-bridge in your /root
folder with all the data you will need.
Raspbian users need to install some additional packages:
apt update
apt install hostapd bridge-utils -y
By default all interfaces in Armbian are managed by the Network Manager. For the simple bridge we would like to setup we don't need it. Thus, we will disable the Network Manager and remove it from the system. Execute the following commands as root:
systemctl stop network-manager
systemctl disable network-manager
systemctl disable NetworkManager-wait-online
apt purge network-manager -y
These commands are disabling & removing the services and purging the Network Manager.
Just copy the template file you have either created manually or downloaded:
cd /root
cp -f interfaces /etc/network/interfaces
cd /root/armbian-hostpot-bridge
cp -f interfaces /etc/network/interfaces
If you use the default WiFi on the Orange Pi Prime (Or other with onboard WiFi) you are set and there is no need to edit the file, but if you like to use a USB dongle, you have to tweak some things.
Execute the following to get the name of your new USB WiFi dongle:
ifconfig -a
The output will be something like this:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 02:01:55:da:4c:95 txqueuelen 1000 (Ethernet)
RX packets 1536 bytes 146188 (142.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 283 bytes 29946 (29.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 25
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::e8c:24ff:fe2c:50be prefixlen 64 scopeid 0x20<link>
ether 0c:8c:24:2c:50:be txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 442 bytes 57130 (55.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan1: flags=56163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 12af::a105:eff:feaa:5011e prefixlen 64 scopeid 0x20<link>
ether 80:e1:00:16:e1:92 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 642 bytes 157130 (155.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
There you can spot wlan0
and wlan1
devices (this is for a Orange Pi Prime + USB WiFi dongle). wlan0
is the onboard WiFi module and wlan1
is the USB dongle.
Now use nano
to setup your WiFi device as wlan1
. Execute:
nano /etc/network/interfaces
An editor will open with content of the interfaces
file. Sweep trough it and change any occurence of wlan0
to wlan1
. Save it via ctrl+x
and yes. (Hint: there are four (4) occurences that need to be changed, one of them is a comment).
If everything went fine you can now active the bridge and test the connection:
ifup br0
If all worked you just enabled the ethernet connectivity again. Try to ping a host in your home network or the a website on the internet to verify it.
ping google.com
Just copy the template file you have either created manually or downloaded:
cd /root
cp -f hostapd /etc/default/
cp -f hostapd.conf /etc/hostapd/
cd /root/armbian-hostpot-bridge
cp -f hostapd /etc/default/
cp -f hostapd.conf /etc/hostapd/
Now we need to edit the WiFi hotspot details. Execute:
nano /etc/hostapd/hostapd.conf
This command opens an editor. You need to change just three (3) lines:
- Wireless device
interface=wlan0
- Wireless SSID
ssid=OPP-hotspot
- Wireless password
wpa_passphrase=123password
The interface option refers to the device you identified, if it's a SBC with onboard WiFi like the Orange Pi Prime you don't have to change anything. If your SBC has no onboard Wifi or you are using a USB dongle you need to use the same wlan interface as in step 5.
The SSID is the name of the wireless network, in this case "OOP-hotspot" and "123passwd" is the password.
Warning: You can't use any spaces in this file, i.e. no spaces for or after the equal sign.
That's it, you're done. Good job! Please power cycle the SBC and enjoy your new WiFi hotspot!
If you care about the RF spectrum usage and good links, you can move the WiFi channel by editing the [channel=6].
Some curious ones may spot also the option of the WiFi network type hw_mode=g
. If your device supports other modes you can play with that, for example the 5GHz WiFi (802.11a). You can switch the hw_mode to hw_mode=a
to enable 5GHz, or force mode 802.11b for old devices via hw_mode=b
.
Some types of network may need tweaks on other options to make it work, take a peek on hostapd tutorials online for some guidelines.