This document describes how to configure a BananaPi R1 with a switch configuration and an additional bridge interface for wireless connectivity.

OS version

Linux 3.4.108-bananian armv7l GNU/Linux

Additional packages to install

||/ Name             Version      Architecture      Description
+++-================-============-=================-==========================================================
ii  bridge-utils     1.5-9        armhf             Utilities for configuring the Linux Ethernet bridge
ii  hostapd-rtl      2.4-4        armhf             IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
ii  vlan             1.9-3.2      armhf             user mode programs to enable VLANs on your ethernet devices

Switch config

In my case I used:
eth0.101 = WAN (single port)
eth0.102 = LAN (4 port switch)

/etc/network/if-pre-up.d/swconfig

ifconfig eth0 up
swconfig dev eth0 set reset 1
swconfig dev eth0 set enable_vlan 1
swconfig dev eth0 vlan 101 set ports '3 8t'
swconfig dev eth0 vlan 102 set ports '4 0 1 2 8t'
swconfig dev eth0 set apply 1

Network config

/etc/network/interfaces

auto lo
iface lo inet loopback

# static ip configuration
auto eth0.101
iface eth0.101 inet static
        address 10.0.0.1
        netmask 255.255.255.252
        gateway 10.0.0.2

# eth0.102 will be managed by bridge interface
allow-hotplug eth0.102

allow-hotplug wlan1

auto br0
iface br0 inet static
      address 192.168.241.93
      netmask 255.255.255.0
      bridge_ports eth0.102 wlan1
      bridge_waitport 0

Wireless config

/etc/default/hostapd

DAEMON_CONF="/etc/hostapd/hostapd.conf"

/etc/hostapd/hostapd.conf

The following 5 lines has to be adapted. All others can be used from the original installed file.

wpa_passphrase=MySecretPassword
bridge=br0 		# same name as defined in file /etc/network/interfaces
channel=6		# look for a free channel 
ssid=MySSID		# find a useful name 
country_code=XY 	# where you are living 

Troubleshooting tools


# ping 

# tcpdump -i wlan1 

# brctl show br0
bridge name     bridge id               STP enabled     interfaces
br0             8000.024c05c2f439       no              eth0.102
                                                        wlan1
# ip ( previously ifconfig ) 

Beware the fact a local firewall could run and block some protocols or the complete traffic.

Example output

# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether 02:4c:05:c2:f4:39 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.1/30 brd 10.0.0.3 scope global eth0
    inet 192.168.241.93/24 brd 192.168.241.255 scope global eth0
    inet6 fe80::4c:5ff:fec2:f439/64 scope link
       valid_lft forever preferred_lft forever
3: tunl0:  mtu 1480 qdisc noop state DOWN group default
    link/ipip 0.0.0.0 brd 0.0.0.0
4: wlan1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 20:f4:1b:07:83:18 brd ff:ff:ff:ff:ff:ff
5: eth0.101@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:4c:05:c2:f4:39 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.1/30 brd 10.0.0.3 scope global eth0.101
    inet6 fe80::4c:5ff:fec2:f439/64 scope link
       valid_lft forever preferred_lft forever
6: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:4c:05:c2:f4:39 brd ff:ff:ff:ff:ff:ff
    inet 192.168.241.93/24 brd 192.168.241.255 scope global br0
    inet6 fe80::4c:5ff:fec2:f439/64 scope link
       valid_lft forever preferred_lft forever
7: eth0.102@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP group default
    link/ether 02:4c:05:c2:f4:39 brd ff:ff:ff:ff:ff:ff
</pre>