Содержание

BPI-M1+ включение WI-FI

1. Загрузка WI-FI драйвера.

Настройка Banana Pi M1+ с ОС Вananian

uname -a
Linux bananapi 3.4.108-bananian #2 SMP PREEMPT Thu Aug 13 06:08:25 UTC 2015 armv7l GNU/Linux

В Banana Pi M1+ используется WI-FI чип AP6181. Для этого чипа подходит драйвер от чипа AP6210. Драйвер загружается командой:

modprobe ap6210
root@bananapi /mnt # iwconfig 
lo        no wireless extensions.

tunl0     no wireless extensions.

eth0      no wireless extensions.

root@bananapi /mnt # modprobe ap6210
root@bananapi /mnt # iwconfig       
lo        no wireless extensions.

tunl0     no wireless extensions.

wlan0     IEEE 802.11  ESSID:""  
        Mode:Managed  Frequency:2.412 GHz  Access Point: Not-Associated   
        Bit Rate:65 Mb/s   Tx-Power:32 dBm   
        Retry min limit:7   RTS thr:off   Fragment thr:off
        Power Managementmode:All packets received
        Link Quality=5/5  Signal level=0 dBm  Noise level=0 dBm
        Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
        Tx excessive retries:0  Invalid misc:0   Missed beacon:0

eth0      no wireless extensions.

Посмотреть загруженные модули можно командой:

root@bananapi /etc/network # lsmod
Module                  Size  Used by
ap6210                584108  0 
cfg80211              173441  1 ap6210
cpufreq_conservative     5966  0 
cpufreq_powersave       1197  0 
cpufreq_userspace       3294  0 
cpufreq_stats           5901  0 
8021q                  18594  0 
garp                    6114  1 8021q
stp                     1993  1 garp
llc                     5491  2 stp,garp

Если нужно, чтобы драйвер загружался автоматически при запуске системы, то в файл /etc/modules нужно добавить строку «ap6210».

root@bananapi /etc/network # cat /etc/modules 
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

# VLAN support for BPI-R1
8021q
ap6210

В линуксе Armbian используется драйвер brcmfmac и он уже есть в системе

uname -a
Linux BPI 5.10.60-sunxi #21.08.2 SMP Tue Sep 14 16:28:44 UTC 2021 armv7l GNU/Linux
lsmod | grep brcmfmac
brcmfmac              176128  0
brcmutil               16384  1 brcmfmac
cfg80211              495616  1 brcmfmac

НО!!! Оказывается, по умолчанию M1+ думает, что это просто M1, у которого нет Wi-Fi, это можно проверить командой

cat /proc/device-tree/model
LeMaker Banana Pi

Если это действительно так, можно добавить следующую строку к своему /boot/armbianEnv.txt и перезагрузиться, и система должна показать правильно определить модель устройства и появится сетевой интерфейс wlan0 и т. Д.

fdtfile=sun7i-a20-bananapi-m1-plus.dtb
cat /boot/armbianEnv.txt
verbosity=1
bootlogo=false
console=both
disp_mode=1920x1080p60
overlay_prefix=sun7i-a20
rootdev=UUID=42fa45e0-b41c-4985-8257-b549c8bd7070
rootfstype=ext4
fdtfile=sun7i-a20-bananapi-m1-plus.dtb
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u
cat /proc/device-tree/model
Banana Pi BPI-M1-Plus

2. Подключение в роли клиента.

Сканирую доступные WI-FI сети.

root@bananapi /etc # iwlist wlan0 scan             
wlan0     Scan completed :
          Cell 01 - Address: 40:4A:03:78:B1:5D
                    ESSID:"My-WI-FI"
                    Mode:Managed
                    Frequency:2.422 GHz (Channel 3)
                    Quality:3/5  Signal level:-69 dBm  Noise level:-92 dBm
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : TKIP CCMP
                        Authentication Suites (1) : PSK
                    IE: Unknown:    DDA80050F204104A0001101044000102103B000103104700102880288028801880A880404A0378B15D1021001A5A7958454C20436F6D6D756E69636174696F6E7320436F72702E10230014486F6D6520496E7465726E65742043656E7465721024000F4B45454E4554494320736572696573104200046E6F6E651054000800060050F2040001101100155A7958454C20496E7465726E65742043656E746572100800020084103C000101
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 9 Mb/s
                              18 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 12 Mb/s
                              24 Mb/s; 48 Mb/s

Для системы без графической оболочки рекомендуется использовать supplicant tool для подключения к закрытым WI-FI сетям.
Установка пакета:

apt-get install wpasupplicant

Необходимо отредактировать файл /etc/wpa_supplicant/wpa_supplicant.conf. Если файла нет, то необходимо создать.

root@bananapi /etc/network # cat /etc/wpa_supplicant/wpa_supplicant.conf 
ap_scan=1
network={
        ssid="My-WI-FI"
        psk="*************"
}
root@bananapi /etc/network #

Где ssid - имя WI-FI сети, psk - пароль сети.

В файл /etc/network/interfaces дописываю следующее:

auto wlan0

# dhcp configuration
iface wlan0 inet dhcp
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Активирую WI-FI интерфейс.

root@bananapi /etc/network # ifup wlan0  
Internet Systems Consortium DHCP Client 4.2.2
Copyright 2004-2011 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/wlan0/98:3b:16:c6:3e:ad
Sending on   LPF/wlan0/98:3b:16:c6:3e:ad
Sending on   Socket/fallback
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 20
DHCPREQUEST on wlan0 to 255.255.255.255 port 67
DHCPOFFER from 10.215.130.1
DHCPACK from 10.215.130.1
bound to 10.215.130.179 -- renewal in 37933 seconds.

Проверяю, что получилось.

root@bananapi /etc/network # iwconfig    
lo        no wireless extensions.

tunl0     no wireless extensions.

wlan0     IEEE 802.11  ESSID:"My-WI-FI"  
          Mode:Managed  Frequency:2.412 GHz  Access Point: 40:4A:03:78:B1:5D   
          Bit Rate=39 Mb/s   Tx-Power:32 dBm   
          Retry min limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=2/5  Signal level=-70 dBm  Noise level=-92 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

eth0      no wireless extensions.

root@bananapi /etc/network # ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 98:3b:16:c6:3e:ad  
          inet addr:10.215.130.179  Bcast:10.215.130.255  Mask:255.255.255.0
          inet6 addr: fe80::9a3b:16ff:fec6:3ead/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1646 (1.6 KiB)  TX bytes:3662 (3.5 KiB)

3. Подключение в роли точки доступа.

Проверяю какие паке установлены в сиситеме

bananapi# dpkg -l | grep ssl
ii  libgnutls-openssl27:armhf      3.3.8-6+deb8u4             armhf        GNU TLS library - OpenSSL wrapper
ii  libio-socket-ssl-perl          2.002-2+deb8u2             all          Perl module implementing object 
oriented interface to SSL sockets
ii  libnet-ssleay-perl             1.65-1+deb8u1              armhf        Perl module for Secure Sockets Layer 
(SSL)
ii  libssl1.0.0:armhf              1.0.1t-1+deb8u6            armhf        Secure Sockets Layer toolkit - shared 
libraries
ii  openssl                        1.0.1t-1+deb8u6            armhf        Secure Sockets Layer toolkit - 
cryptographic utility
bananapi# dpkg -l | grep libnl
ii  libnl-3-200:armhf              3.2.24-2                   armhf        library for dealing with netlink sockets
ii  libnl-genl-3-200:armhf         3.2.24-2                   armhf        library for dealing with netlink sockets - generic netlink

Устанавливаю hostap

bananapi# git clone git://w1.fi/srv/git/hostap.git
Cloning into 'hostap'...
remote: Counting objects: 78515, done.
remote: Compressing objects: 100% (14137/14137), done.
remote: Total 78515 (delta 64276), reused 78373 (delta 64180)
Receiving objects: 100% (78515/78515), 15.86 MiB | 927.00 KiB/s, done.
Resolving deltas: 100% (64276/64276), done.
Checking connectivity... done.
bananapi# cp defconfig .config

Дополнительно устанавливаю

bananapi# apt-get install libnl-3-dev
bananapi# apt-get install libnl-genl-3-dev
bananapi# apt-get install libnl-dev
bananapi# apt-get install libssl-dev

Создаю ссылку

bananapi# ln -s  /usr/include/libnl3/netlink netlink

Устанавливаю

bananapi# make

bananapi#

cp hostapd /usr/sbin
cp hostapd_cli /usr/sbin
mkdir -p /etc/hostapd
cd /etc/hostapd
cat >> hostapd.conf
interface=wlanx
driver=nl80211
ssid=ap6210_ap_test
channel=6
hw_mode=g
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Проверяю

cat /etc/hostapd/hostapd.conf
interface=wlan0
driver=nl80211
ssid=banana
channel=10
hw_mode=g
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
hostapd -B /etc/hostapd/hostapd.conf
Configuration file: /etc/hostapd/hostapd.conf
nl80211: Could not re-add multicast membership for vendor events: -2 (No such file or directory)
Using interface wlan0 with hwaddr 98:3b:16:c6:3e:ad and ssid "banana"
wlan0: Could not connect to kernel driver
Interface initialization failed
wlan0: interface state UNINITIALIZED->DISABLED
wlan0: AP-DISABLED
wlan0: Unable to setup interface.
wlan0: interface state DISABLED->DISABLED
wlan0: AP-DISABLED
wlan0: CTRL-EVENT-TERMINATING
hostapd_free_hapd_data: Interface wlan0 wasn't started
nl80211: deinit ifname=wlan0 disabled_11b_rates=0

Смотрю, что получилось

bananapi# ifconfig
eth0      Link encap:Ethernet  HWaddr 02:17:02:01:d0:e8
          inet addr:10.215.130.6  Bcast:10.215.130.255  Mask:255.255.255.0
          inet6 addr: fe80::17:2ff:fe01:d0e8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:329 errors:0 dropped:0 overruns:0 frame:0
          TX packets:275 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:42062 (41.0 KiB)  TX bytes:52593 (51.3 KiB)
          Interrupt:117 Base address:0xc000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:16 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1200 (1.1 KiB)  TX bytes:1200 (1.1 KiB)

wlan0     Link encap:Ethernet  HWaddr 98:3b:16:c6:3e:ad
          inet addr:192.168.100.1  Bcast:192.168.100.255  Mask:255.255.255.0
          inet6 addr: fe80::9a3b:16ff:fec6:3ead/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:492 (492.0 B)

bananapi# iwconfig
lo        no wireless extensions.

tunl0     no wireless extensions.

wlan0     IEEE 802.11  ESSID:"banana"
          Mode:Master  Frequency:2.457 GHz  Access Point: 98:3B:16:C6:3E:AD
          Bit Rate=65 Mb/s   Tx-Power:32 dBm
          Retry min limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Managementmode:All packets received

eth0      no wireless extensions.
bananapi#

/ etc / init.d / hostapd
#!/bin/sh

### BEGIN INIT INFO
# Provides:		hostapd
# Required-Start:	$remote_fs
# Required-Stop:	$remote_fs
# Should-Start:		$network
# Should-Stop:
# Default-Start:	2 3 4 5
# Default-Stop:		0 1 6
# Short-Description:	Advanced IEEE 802.11 management daemon
# Description:		Userspace IEEE 802.11 AP and IEEE 802.1X/WPA/WPA2/EAP
#			Authenticator
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON_SBIN=/usr/sbin/hostapd
DAEMON_DEFS=/etc/default/hostapd
DAEMON_CONF=
NAME=hostapd
DESC="advanced IEEE 802.11 management"
PIDFILE=/var/run/hostapd.pid

[ -x "$DAEMON_SBIN" ] || exit 0
[ -s "$DAEMON_DEFS" ] && . /etc/default/hostapd
[ -n "$DAEMON_CONF" ] || exit 0

DAEMON_OPTS="-B -P $PIDFILE $DAEMON_OPTS $DAEMON_CONF"

. /lib/lsb/init-functions

case "$1" in
  start)
  log_daemon_msg "Starting $DESC" "$NAME"
	start-stop-daemon --start --oknodo --quiet --exec "$DAEMON_SBIN" \
	--pidfile "$PIDFILE" -- $DAEMON_OPTS >/dev/null
log_end_msg "$?"
;;
  stop)
	log_daemon_msg "Stopping $DESC" "$NAME"
start-stop-daemon --stop --oknodo --quiet --exec "$DAEMON_SBIN" \
	--pidfile "$PIDFILE"
log_end_msg "$?"
;;
  reload)
	log_daemon_msg "Reloading $DESC" "$NAME"
start-stop-daemon --stop --signal HUP --exec "$DAEMON_SBIN" \
	--pidfile "$PIDFILE"
log_end_msg "$?"
;;
 restart|force-reload)
	$0 stop
sleep 8
$0 start
;;
 status)
status_of_proc "$DAEMON_SBIN" "$NAME"
exit $?
;;
  *)
	N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload|reload|status}" >&2
exit 1
;;
esac

exit 0
/ etc / default / hostapd
# 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=""

# 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=""

Установка автоматического запуска hostapd при загрузке:

$sudo update-rc.d hostapd defaults

———— SystemD ————

$ sudo systemctl enable hostapd.service

———— SysVinit ————

$ sudo service hostapd enable

Отключение автоматического запуска hostapd при загрузке:

$sudo update-rc.d hostapd disable

———— SystemD ————

$ sudo systemctl disable hostapd.service

———— SysVinit ————

$ sudo service hostapd disable

Команда для перезапуска hostapd

$ sudo /etc/init.d/hostapd restart

———— SystemD ————

$ sudo systemctl restart hostapd.service

———— SysVinit ————

$ sudo service hostapd restart
reboot

Проверка запуска hostapd

# ps -ef | grep hostapd
root       512     1  0 20:51 ?        00:00:00 /usr/sbin/hostapd -B -P /var/run/hostapd.pid /etc/hostapd/hostapd.conf
/etc/init.d/hostapd status

———— SystemD ————

systemctl status hostapd

———— SysVinit ————

service hostapd status

Armbian

В линуксе Armbian для управления сетью используется NetworkManager и утилиты nmcli, nmtui Для нормальной работы в качестве точки доступа нужно его отключить

systemctl disable NetworkManager

Если хочется то можно и удалить

apt-get purge network-manager

Далее просто нужно настроить hostapd который уже установлен в системе. Проверить можно командой.

dpkg -l | grep hostapd
ii  hostapd                        3:2.9-102~armbian21.05.1+1     armhf        IEEE 802.11 AP and IEEE 802.1X/WPA/WPA2/EAP Authenticator

Ссылки:
http://forum.banana-pi.org/t/wifi-on-bpi-m1/246
http://wiki.lemaker.org/BananaPro/Pi:WiFi_configuration
http://geekelectronics.org/raspberry-pi/banana-pi-nastroyka-wi-fi.html
http://www.awasu.com/weblog/bpi-gateway/wifi-access-point
http://www.myhsd.net/bananapro-wifi-access-point
http://wiki.lemaker.org/BananaPro/Pi:WiFi_configuration
https://www.linux.org.ru/forum/general/9869417 https://www.apt-browse.org/browse/ubuntu/trusty/universe/i386/hostapd/1:2.1-0ubuntu1/file/etc/init.d/hostapd
https://www.apt-browse.org/browse/ubuntu/trusty/universe/i386/hostapd/1:2.1-0ubuntu1/file/etc/default/hostapd
http://www.fedora.md/2015/03/26/bpi-r1-часть-3-bananian-настройка-точки-доступа-wifi
http://hizz.livejournal.com/3817.html
http://blog.tian.it/banana-pi-pro-wlan-configuration
https://forum.banana-pi.org/t/no-wifi-on-banana-pi-m1-running-armbian-buster/9911
https://awasu.com/weblog/bpi-gateway/wifi-access-point
http://www.myhsd.net/bananapro-wifi-access-point
https://www.fedora.md/2015/03/26/bpi-r1-%d1%87%d0%b0%d1%81%d1%82%d1%8c-2-fedora-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d1%82%d0%be%d1%87%d0%ba%d0%b8-%d0%b4%d0%be%d1%81%d1%82%d1%83%d0%bf%d0%b0-wifi
https://blog.tian.it/banana-pi-pro-wlan-configuration/
https://adminblog.net.ua/raspberry/sozdanie-wi-fi-tochki-dostupa-raspberry-pi.html