Рубрики
openwrt

openwrt / mikrotik / прошивка / 60Ghz / ad / firmware / wi-fi / iw / wpa_supplicant / hostapd / ifconfig

Ссылки:

https://openwrt.org/toh/mikrotik/common
https://openwrt.org/toh/mikrotik/common#saving_mikrotik_routerboard_license_key_using_winbox_and_windows
https://openwrt.org/toh/mikrotik/common#saving_mikrotik_routerboard_license_key_without_using_winbox

https://downloads.openwrt.org/releases/22.03.0-rc1/targets/ipq40xx/mikrotik/
https://downloads.openwrt.org/releases/22.03.0-rc3/targets/ipq40xx/mikrotik/
https://openwrt.org/ru/toh/mikrotik/common
https://wiki.archlinux.org/title/Preboot_Execution_Environment_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)
https://github.com/klukonin/Mikrotik-researcher-tools

https://habr.com/ru/post/315960/


https://wiki.archlinux.org/title/Network_configuration_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)/Wireless_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)#%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC_%D1%81_%D0%B4%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80%D0%B0%D0%BC%D0%B8_%D0%B8_%D0%BF%D1%80%D0%BE%D1%88%D0%B8%D0%B2%D0%BA%D0%B0%D0%BC%D0%B8

https://wiki.archlinux.org/title/Network_configuration_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)/Wireless_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)

https://wiki.archlinux.org/title/Wpa_supplicant

https://wiki.archlinux.org/title/Network_configuration_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)/Wireless_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)

http://linux-wless.passys.nl/

https://wireless.wiki.kernel.org/en/users/drivers

https://en.wikipedia.org/wiki/Wi-Fi

https://wiki.mikrotik.com/wiki/Manual:Interface/Wireless

Сохранение файла с лицензией MikroTik RouterOS

0. Подключаемся на микротик и выполняем в терминале:
/system license output
/file print
1. Любым доступным способом забираем файл лицензии с микротика

mikrotik подготовка

0. Подключаемся к микротику и открываем его терминал
1. Выполняем следующие
/system routerboard settings set boot-device=try-ethernet-once-then-nand
2. Выключаем микротик
/system shutdown

dnsmasq подготовка DHCP+TFTP

0. Устанавливаем dnsmasq и останавливаем его демон
apt install dnsmasq
systemctl stop dnsmasq && systemctl disable dnsmasq

2. скачиваем прошивки
!!! initramfs нужна для загрузки по tftp (эта прошивка загружается в оперативную память и ничего не ломает)
!!! sysupgrade установка прошивки (заменяет прошивку микротика)
cd /srv/tftp
wget https://downloads.openwrt.org/releases/22.03.0-rc1/targets/ipq40xx/mikrotik/openwrt-22.03.0-rc1-ipq40xx-mikrotik-mikrotik_lhgg-60ad-initramfs-kernel.bin
wget https://downloads.openwrt.org/releases/22.03.0-rc1/targets/ipq40xx/mikrotik/openwrt-22.03.0-rc1-ipq40xx-mikrotik-mikrotik_lhgg-60ad-squashfs-sysupgrade.bin

3. Запускаем tftp
dnsmasq -i enp0s20f0u2 --dhcp-range=192.168.88.64,192.168.88.128 --dhcp-boot=openwrt-22.03.0-rc1-ipq40xx-mikrotik-mikrotik_lhgg-60ad-initramfs-kernel.bin --enable-tftp --tftp-root=/srv/tftp/ -d -u nobody -p0 -K --log-dhcp --bootp-dynamic --dhcp-host=DC:2C:6E:68:AF:B9

4. На микротике: 
   0) вытаскиваем питание
   1) Зажимаем кнопку reset
   2) Включаем питание
   3) Ждем 3 сек и отпускаем кнопку reset

Установка постоянной прошивки на openwrt:

0. Любым способом копируем на openwrt прошивку 
wget:
cd /tmp

wget https://downloads.openwrt.org/releases/22.03.0-rc1/targets/ipq40xx/mikrotik/openwrt-22.03.0-rc1-ipq40xx-mikrotik-mikrotik_lhgg-60ad-squashfs-sysupgrade.bin

ssh openwrt:
ssh root@192.168.1.1
cd /tmp
scp user@192.168.1.10:/home/user/file.bin . 

ssh:
scp sysupgrade.bin root@192.168.1.1:/tmp

1. устанавливаем прошивку

/sbin/sysupgrade sysupgrade.bin

Примеры конфигов hostapd \ wpa_supplicant

cd /etc
wget https://raw.githubusercontent.com/klukonin/Mikrotik-researcher-tools/master/files/etc/wpa_supplicant.conf 
wget https://raw.githubusercontent.com/klukonin/Mikrotik-researcher-tools/master/files/etc/hostapd.conf

Клиент Client:
wpa_supplicant -D nl80211  -i wlan0 -c /etc/wpa_supplicant.conf -B

Точка доступа AP:
hostapd -B /etc/hostapd.conf

openwrt regenerate configuration wifi / сброс wifi

rm -f /etc/config/wireless
wifi config

ip / ifconfig

ifconfig wlan0 192.168.2.1 # Set an IP
ifconfig wlan0 down
ifconfig wlan0 up

ip link set wlan0 up

iwconfig

!!! iwlist - команда устарела и рекомендуется использовать iw вместо ее

Сканировать wifi и вывести имена сетей:
iwlist wlan0 scan | grep ESSID

Сканирование сети:
iwlist  scan

Получить инфу по wlan0:
iwconfig wlan0

Если вы можете получить IP для проводного интерфейса, но не можете для беспроводного, попробуйте отключить энергосберегающие функции вашей беспроводной карты:
iwconfig wlan0 power off


Ели вы получаете timeout ошибку из-за waiting for carrier проблемы, возможно вам понадобится установить канал в auto для конкретного устройства:
iwconfig wlan0 channel auto

iwconfig wlan0	- получение состояния соединения
iwlist wlan0 scan - сканирование доступных точек доступа
iwconfig wlan0 mode ad-hoc - установка режима работы ad-hoc
iwconfig wlan0 essid ваш_essid - подключение к открытой сети
iwconfig wlan0 essid ваш_essid freq 2432M - подключение к открытой сети с указанием канала
iwconfig wlan0 essid ваш_essid key ваш_ключ - подключение к сети с WEP шифрованием шестнадцатеричным ключом
iwconfig wlan0 essid ваш_essid key s:ваш_ключ - подключение к сети с WEP шифрованием ASCII-ключом
iwconfig wlan0 power on	- включение режима энергосбережения

iw / iwinfo / iwlist

!!! iwlist - команда устарела и рекомендуется использовать iw вместо ее
Сканирование сети:
iw dev  scan

iw dev wlan0 link - получение состояния соединения
iw dev wlan0 scan - сканирование доступных точек доступа
iw dev wlan0 set type ibss - установка режима работы ad-hoc
iw dev wlan0 connect ваш_essid - подключение к открытой сети
iw dev wlan0 connect ваш_essid 2432 - подключение к открытой сети с указанием канала
iw dev wlan0 connect ваш_essid key 0:ваш_ключ - подключение к сети с WEP шифрованием шестнадцатеричным ключом
iw dev wlan0 set power_save on - включение режима энергосбережения

iw phy phy0 interface add moni0 type monitor

iw dev
iw dev wlan0 link
iw dev wlan0 scan

iw phy0 info
iw wlan0 info
iw reg get

iwinfo


Подключение к сети wi-fi с помощью iw:

iw dev wlan0 del
iw phy phy0 interface add wlan0 type ibss
ifconfig wlan0 up
iw dev wlan0 scan                                            
iw dev wlan0 ibss join AdHocNetworkName 2412 

rfkill

Во многих ноутбуках присутствует аппаратный переключатель (или кнопка) питания беспроводной карты, однако она может быть также заблокирована и ядром.

Используйте rfkill, чтобы посмотреть текущий статус:
rfkill list

Если карта заблокирована аппаратно (hard blocked), используйте переключатель (кнопку), чтобы разблокировать её. 
Если же карта заблокирована не аппаратно, a программно (soft blocked), используйте следующую команду:
rfkill unblock wifi

hostapd


Пример простой 1 802.11b/g/n with WPA2-PSK and CCMP:
vim /etc/hostapd/hostapd.conf
-----------------------------
# the interface used by the AP
interface=wlan0
# "g" simply means 2.4GHz band
hw_mode=g
# the channel to use
channel=10
# limit the frequencies used to those allowed in the country
ieee80211d=1
# the country code
country_code=FR
# 802.11n support
ieee80211n=1
# QoS support, also required for full speed on 802.11n/ac/ax
wmm_enabled=1
# the name of the AP
ssid=somename
# 1=wpa, 2=wep, 3=both
auth_algs=1
# WPA2 only
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=somepassword
-----------------------------

Пример простой 2 802.11a/n/ac with WPA2-PSK and CCMP:
/etc/hostapd/hostapd.conf
-------------------------
interface=wlan0
# "a" simply means 5GHz
hw_mode=a
# the channel to use, 0 means the AP will search for the channel with the least interferences (ACS)
channel=0
ieee80211d=1
country_code=FR
ieee80211n=1
# 802.11ac support
ieee80211ac=1         
wmm_enabled=1
ssid=somename
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=somepassword
-------------------------



Пример простой 3 802.11b/g/n triple AP:
/etc/hostapd/hostapd.conf
-------------------------
interface=wlan0
hw_mode=g
channel=10
ieee80211d=1
country_code=FR
ieee80211n=1
wmm_enabled=1
# First AP
ssid=test1
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=somepassword
# Second AP
# the name of the new interface hostapd will create to handle this AP 
bss=wlan1
ssid=test2
auth_algs=1
wpa=1
wpa_key_mgmt=WPA-PSK
wpa_passphrase=someotherpassword
# Third AP
# the name of the new interface hostapd will create to handle this AP 
bss=wlan2
ssid=test3
# since there is no encryption defined, none will be used
-------------------------



wpa_supplicant / wpa_cli

Запуск wpa_supplicant:
wpa_supplicant -Dnl80211 -iwlan0 -C/var/run -u &
wpa_cli -p/var/run

Пример минимальной настройки:
wpa_cli 
add_network
set_network 0 ssid "MYSSID"
set_network 0 key_mgmt NONE
enable_network 0

Пример:
wpa_cli 
add_network
set_network 0 ssid "name of AP"
set_network 0 key_mgmt WPA-PSK
set_network 0 pairwise TKIP
set_network 0 psk "key"
enable_network 0

Пример для закрытой WPA2 сети:
wpa_cli 
add_network
set_network 0 ssid "name of AP"
set_network 0 key_mgmt WPA-PSK
set_network 0 pairwise CCMP
set_network 0 psk "key"
enable_network 0

wpa_supplicant.conf

cat /etc/wpa_supplicant.conf
----------------------------
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
#
# home network; allow all valid ciphers
    network={
    ssid="home"
    scan_ssid=1
    key_mgmt=WPA-PSK
    psk="very secret passphrase"
 }
----------------------------

!!! Первая строка необходима, без ctrl_interface программа даже не запустится. 
!!! GROUP=wheel нужно для того, чтобы запускать из под обычного пользователя в графическом интерфейсе wpa_gui.
!!! Поэтому рекомендуется  менять на рутовый GROUP=0
!!! Каждой сети в файле настроек должен соответствовать блок network {}
!!! ap_scan=0 #драйвер сканирует точку доступа
!!! ap_scan=1 #wpa_supplicant сканирует точку доступа, используется по-умолчанию
!!! ap_scan=2 #как 0, но еще учитывает политики безопасности и SSID, работает с ndiswrapper
!!! bssid — The Basic Service Set Identifier (BSSID), физический адрес точки доступа.
!!! key_mgmt — Протоколы аутентификации.
!!! pairwise — Для WPA2 укажите CCMP, а для WPA — TKIP.
!!! proto — WPA/WPA2.
!!! psk — Хэш пароля PreShared Key.
!!! ca_cert — Абсолютный путь к CA-сертификату в формате PEM или DER, необходим для возможности подтверждения сертификата сервера.
!!! ca_path — Абсолютный путь к директории, где хранятся файлы CA-сертификатов (в формате PEM), которые вы хотите добавить в список доверенных.
!!! client_cert — Абсолютный путь к клиентскому сертификату в формате PEM или DER.
!!! eap — Разделенный пробелами список поддерживаемых методов EAP: MD5, MSCHAPV2, OTP, GTC, TLS, PEAP, или TTLS.
!!! identity — Идентификации EAP, например имя пользователя.
!!! password — Пароль EAP.


Рекомендованный конфиг WPA-PSK:
cat /etc/wpa_supplicant.conf
----------------------------
ctrl_interface_group=0
ap_scan=1
ctrl_interface=/var/run/wpa_supplicant
network={
    proto=WPA2
    pairwise=CCMP
    key_mgmt=WPA-PSK
    priority=5
    ssid="MYSSID"
    bssid=44:b0:51:dc:ba:f8
    psk=ce55977186ae1df2dffeb571acee8dacd92f49edddbdef53623132e3c24567ae
}
----------------------------

Рекомендованный конфиг WPA-EAP:
cat /etc/wpa_supplicant.conf
----------------------------
network = {
ssid="Company WPA2 EAP"
key_mgmt=WPA-EAP
pairwise=TKIP
group=TKIP
eap=PEAP
identity="username@domain"
password="your_passphrase"
ca_cert="/etc/cert/ca.pem"
phase1="peapver=0"
phase2="MSCHAPV2"
}
----------------------------

Рекомендованный конфиг WPA2 TLS:
cat /etc/wpa_supplicant.conf
----------------------------
network = {
ssid="Company WPA2 TLS"
key_mgmt=WPA-EAP
pairwise=CCMP
group=CCMP
eap=TLS
ca_cert="/etc/cert/ca.pem"
private_key="/etc/cert/privkey.p12"
private_key_passwd="your_passphrase PKCS#12"
}
----------------------------

openwrt wi-fi


type	string	yes	(autodetected)	        The type is determined on firstboot during the initial radio device detection - it is usually not required to change it. 
                                                Used values are broadcom on brcm47xx, or mac80211 for all other platforms

band	string	no	(driver default)	Specifies the band, possible values are 2g for 2.4 GHz, 5g for 5 GHz, 6g for 6 GHz and 60g for 60 GHz. (NEW since 21.02.2, replaces hwmode)

htmode	string	no	(driver default)	Specifies the high throughput mode, used to control 802.11n (HT), 802.11ac (VHT) and 802.11ax (HE). The channel width used for these depends on this configuration. 
                                                See this section for details. Possible values are: HT20, HT40-, HT40+, HT40, or VHT20, VHT40, VHT80, VHT160, NOHT disables 11n and 11ac, HE20, HE40, HE80, HE160

txpower	integer	no	(driver default)	Specifies the maximum desired transmission power in dBm. The actual txpower used depends on regulatory requirements.

vim /etc/config/wireless
------------------------
config	wifi-device		'radio0'
	option	type		'mac80211'
	option	channel		'2'
	option	hwmode		'60g'
	option	path		'pci0000:00/0000:00:00.0'
	option	htmode		'HT20'
	option	country		'US'
 
config	wifi-iface
	option	device		'radio0'
	option	network		'lan'
	option	mode		'ap'
	option	ssid		'OpenWrt'
	option	encryption	'none'

config wifi-iface
	option device 'radio0'
	option mode 'ap'
	option ssid 'My-WiFi-Home'
	option network 'lan'
	option encryption 'psk2'
	option key 'WiFipassword'
	option ieee80211w '0'
	option wps_pushbutton '1'
------------------------

Пример wi-fi wpa_supplicant настройки в debian:

vim /etc/network/interfaces
---------------------------
auto wlan0
iface wlan0 inet dhcp
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
---------------------------

wifi логи:

Следим за логами:
logread -f

Отслеживать сообщения ядра:
dmesg -w

Проверьте сообщения ядра на предмет загрузки прошивки:
dmesg | grep firmware

Если там нет интересующей вас информации, проверьте сообщения подробного вывода, относящиеся к определённому вами ранее модулю (например iwlwifi)
dmesg | grep iwlwifi
modinfo iwlwifi

В ситуации, когда вы не можете определить ошибку, запустите wpa_supllicant напрямую с ключом -dd:
wpa_supplicant -Dnl80211 -iwlan0 -C/var/run/wpa_supplicant/ -c/etc/wpa_supplicant/wpa_supplicant.conf -dd


Если вы используете какую-то утилиту для управления сетью, то же самое можно сделать с помощью systemd:
journalctl -f
journalctl -xb


Проверка состояния драйвера:
lspci -k

Наблюдаем за событиями wi-fi:
iw event
iw event -f
iw event -t

openwrt /etc/config/network

config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'eth0'

config device
        option name 'eth0'
        option macaddr 'dc:2c:6e:68:af:b9'

config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option ip6assign '60'
        list ipaddr '192.168.1.1/24'
        list ipaddr '192.168.127.70/24'
        option gateway '192.168.1.10'
        list dns '192.168.1.1'
        list dns '192.168.16.254'


Файлы firmware для wil6210 для запуска wifi lhgg-60ad

!!! https://forum.openwrt.org/t/support-for-mikrotik-wap-60g/30752/95
!!! https://forum.openwrt.org/t/support-for-mikrotik-wap-60g/30752/7
!!! https://github.com/openwrt/openwrt/pull/2417
!!! https://forum.openwrt.org/t/solved-archer-c7-v2-wireless-died-daemon-notice-hostapd-handle-probe-req-send-failed/65837
!!! https://forum.openwrt.org/t/support-for-mikrotik-rb3011uias-rm/4064/399?page=20
!!! из ссылок выше мы узнаем что:
!!! драйвер wil6210.fw в openwrt как заглушка
!!! luci не работает с 60Ghz (не проверял, может и работает на новых прошивках)
!!! ошибка никуда не исчезнет (wil6210 0000:01:00.0: Direct firmware load for wil6210_sparrow_plus.fw failed with error -2)

Описание:
https://github.com/IMDEANetworksWNG/Mikrotik-researcher-tools
Старые прошивки на котором запустилось 60Ghz (!!! внимание на прошивку надо ставить\докидывать файл wil6210, см описание ниже):
https://github.com/IMDEANetworksWNG/Mikrotik-researcher-tools/releases
Новые прошивки openwrt 22.03.0-rc3 на котором запустилось 60Ghz (!!! внимание на прошивку надо ставить\докидывать файл wil6210, см описание ниже):
https://downloads.openwrt.org/releases/22.03.0-rc3/targets/ipq40xx/mikrotik/

Файл hosapd:
https://raw.githubusercontent.com/IMDEANetworksWNG/Mikrotik-researcher-tools/main/files/etc/hostapd.conf
Файл wpa_supplicant.conf:
https://github.com/IMDEANetworksWNG/Mikrotik-researcher-tools/blob/main/files/etc/wpa_supplicant.conf

0. Скачиваем и распаковываем
https://download.mikrotik.com/routeros/6.40.9/all_packages-arm-6.40.9.zip

1. Распаковываем all_packages-arm-6.40.9.zip
unzip all_packages-arm-6.40.9.zip

2. Переходим в каталог all_packages-arm-6.40.9 
cd all_packages-arm-6.40.9

3. Распаковываем бинарник wireless-6.40.9-arm.npk
binwalk -e wireless-6.40.9-arm.npk

4. Переходим _wireless-6.40.9-arm.npk.extracted/squashfs-root/lib/firmware/
cd _wireless-6.40.9-arm.npk.extracted/squashfs-root/lib/firmware/

5. Интересует файл wil6210-d0.fw

6. Достовляем его на openwrt с заменой файла wil6210.fw
scp wil6210-d0.fw root@192.168.1.1:/lib/firmware/wil6210.fw


7. На одном устройстве подымаем клиента STA
wpa_supplicant -D nl80211  -i wlan0 -c /etc/wpa_supplicant.conf -B

8. На втором устройстве подымаем сервер AP
hostapd -B /etc/hostapd.conf

Пример hostapd.conf без шифрования lhgg-60ad

ctrl_interface=/var/run/hostapd
interface=wlan0
driver=nl80211
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
ssid=Mikrotik
country_code=DE
hw_mode=ad
channel=2
beacon_int=100

Пример wpa_supplicant.conf без шифрования lhgg-60ad

network={
    ssid="Mikrotik"
    key_mgmt=NONE
}