LinuxForum.Fans
Тема

WiFi в Slackware

Автор: booidea 41 сообщений 2625 просмотров
31.10.2019 20:08 · отредактировано #433289

Здравствуйте, товарищи, это снова я :)

Раньше, я никогда не озадачивался относительно WiFi соединения, есть провода и ладно. А тут вдруг решил — есть же этот самый WiFi, почему бы и не воспользоваться возможностью.

Я вообще не понимаю, как это работает, но я понимаю, что должны присутствовать WiFi-адаптер, драйвер на него, некий конфиг с настройками сети и утилита для указания параметров подключения (наличие которой, видимо не обязательно, если всё можно указывать в конфиге).

Просветите, пожалуйста! :)

31.10.2019 21:07 #433290

Для удовлетворения любопытства про общую теорию беспроводных сетей и про то, как оно обычно устроено в Linux-ах, предлагаю воспользоваться поиском самостоятельно.

Здесь же сосредоточимся на том, как это выглядит применительно к Slackware.

Для настройки способа управления сетью традиционно предназначен сценарий netconfig. Если вы в процессе установки ответили утвердительно на вопрос о настройке сети, то вы его уже видели, при установке запускается тоже он.

text

# netconfig
text

┌───────────────────────ENTER HOSTNAME──────────────────────────┐
│ First, we'll need the name you'd like to give your host.      │
│ Only the base hostname is needed right now. (not the domain)  │
│                                                               │
│ Enter hostname:                                               │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │                                                           │ │
│ └───────────────────────────────────────────────────────────┘ │
├───────────────────────────────────────────────────────────────┤
│                 <  OK  >         <Cancel>                     │
└───────────────────────────────────────────────────────────────┘

┌──────────────ENTER DOMAINNAME FOR 'sw-cur-64'────────────────┐ │ Now, we need the domain name for this machine, such as: │ │ │ │ example.org │ │ │ │ Do not supply a leading '.' │ │ │ │ Enter domain name for sw-cur-64: │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ │ │ │ └──────────────────────────────────────────────────────────┘ │ ├──────────────────────────────────────────────────────────────┤ │ < OK > <Cancel> │ └──────────────────────────────────────────────────────────────┘

text

┌───────────CONFIGURATION TYPE FOR '            '────────────────────┐
│ Now we need to know how your machine connects to the network.      │
│ If you have an internal network card and an assigned IP address,   │
│ gateway, and DNS, use the 'static IP' choice to enter these        │
│ values. If your IP address is assigned by a DHCP server (commonly  │
│ used by cable modem and DSL services), select 'DHCP'. If you do    │
│ not have a network card, select the 'loopback' choice. You may     │
│ also select 'NetworkManager' if you would like to have the         │
│ NetworkManager daemon automatically handle your wired and wireless │
│ network interfaces (this is simple and usually works). Which type  │
│ of network setup would you like?                                   │
│ ┌────────────────────────────────────────────────────────────────┐ │
│ │ static IP       Use a static IP address to configure ethernet  │ │
│ │ DHCP            Use a DHCP server to configure ethernet        │ │
│ │ loopback        Set up a loopback connection (modem or no net) │ │
│ │ NetworkManager  Autoconfigure network using NetworkManager     │ │
│ └────────────────────────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────────────────────┤
│                   <  OK  >          <Cancel>                       │
└────────────────────────────────────────────────────────────────────┘

Первые три варианта предполагают настройку сети (и WiFi) сценариями /etc/rc.d/rc.inet1 на основе файла конфигурации /etc/rc.d/rc.inet1.conf.
Четвертый вариант предполагает настройку сети при помощи NetworkManager-а (или wicd из /extra).

Варианты на основе rc.inet1 требуют прав root для смены настроек, что в случае, например, ноутбука, подключающегося в различных местах, не очень удобно.
Варианты с NM или wicd этим недостатком не страдают -- сетью управляет запущенный от root демон, а управление им производится от имени обычного пользователя при помощи клиентского приложения.
Если установлен wicd, то он перекрывает NM полностью (подробности см. в стартовых сценариях).

WiFi обеспечивает среду передачи, поверх которой работают протоколы более высокого уровня (см. 7-и уровневая модель OSI).
Для работы в режимах WPA/WPA2 необходим wpa_supplicant.

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

Из предыдущих ваших сообщений нам известно, что ваш беспроводной адаптер:

text

# lspci -nn | grep Network
03:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8723DE 802.11b/g/n PCIe Adapter [10ec:d723]

Давайте глянем на вывод

text

# lspci -knns 3:0.0
31.10.2019 21:12 #433291

Вывод lspci -knns 3:0.0:

text
03:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. RTL8723DE 802.11b/g/n PCIe Adapter [10ec:d723]
        Subsystem: Hewlett-Packard Company Device [103c:8319]
31.10.2019 21:14 #433292

А также:

text

# rfkill
# iwconfig
31.10.2019 21:16 #433293
text
bash-5.0# rfkill
ID TYPE      DEVICE      SOFT      HARD
 0 bluetooth hci0   unblocked unblocked

bash-5.0# iwconfig lo no wireless extensions.

eth0 no wireless extensions.

31.10.2019 22:12 #433294

Ну что ж, у меня для вас две новости.
1) В составе ядра linux 5.4 пока нет готового драйвера для устройства RTL8723DE [10ec:d723].
2) На просторах Интернета такой драйвер опубликован:
https://github.com/lwfinger/rtlwifi_new.git#branch=extended

Начать стоит с загрузки и подготовки исходников ядра (т.к. пакета с исходниками 5.4_rc5 я вам не давал):

text

# cd /tmp
# wget https://git.kernel.org/torvalds/t/linux-5.4-rc5.tar.gz
# cd /usr/src
# tar xf /tmp/linux-5.4-rc5.tar.gz
# ln -sf linux-5.4-rc5 linux
# cd linux-5.4-rc5
# cat /boot/config-generic-5.4.0-rc5 > .config
# make modules_prepare

Внимательно читаем README там:
https://github.com/lwfinger/rtlwifi_new/tree/extended

Загрузить исходники драйвера, собрать драйвер:

text

# cd /usr/src
# git clone -b extended --single-branch https://github.com/lwfinger/rtlwifi_new.git
# cd rtlwifi_new
# make && make install && make clean

Убеждаемся, что собралось без ошибок.
Загружаем

text

# modprobe -r rtl8723de
# modprobe rtl8723de

Убеждаемся, что при загрузке не ругнулось на отсутствующую фирмварь.
Проверяем, что устройство появилось в выводе команды

text
# iwconfig

Вспоминаем прочитанное ранее:


The ONLY option you are likely to need is "ant_sel". The penny-pinchers at some laptop vendors,
mostly HP, decided to save a few cents to install only one antenna. That would not have been a
problem as the driver contains the logic necessary to handle this case; however, the idiots
failed to correrctly encode that information in the devices ROM. Accordingly, the driver follow
the ROM setting and uses the WRONG antenna. Effectively, the device has NO usable antennas.
To test if this is the case on your system, please run the following commands (set 1):

# DEVICE=$(iw dev | grep Interface | cut -d " " -f2)
# iw dev $DEVICE scan | egrep "SSID|signal|\(on"

If the signal for the AP to which you wish to connect is -60 or less, then you have this problem.
The fix is to supply the "ant_sel" option. Run the following commands (set 2):

# echo "options rtl8723de ant_sel=2" > /etc/modprobe.d/50-rtl8723de.conf

At this point, do a complete shutdown! The device may retain the old setting with a warm reboot.
To be safe, do a power off. After the system come back up, rerun the set 1 comamands again. If
The signals are now a lot stronger, you are done. If not, repeat command set 2 with "ant_sel=1".
If that does not help, I have no idea what is wrong.
31.10.2019 22:22 #433295
text
bash-5.0# cd /usr/src
bash-5.0# tar xf linux-5.4-rc5.tar.gz
tar: linux-5.4-rc5.tar.gz: Функция open завершилась с ошибкой: Нет такого файла или каталога
tar: Error is not recoverable: exiting now

Может быть:

bash-5.0# cd /tmp ? :)

31.10.2019 22:24 #433296

# tar xf /tmp/linux-5.4-rc5.tar.gz
ну или где он там у вас лежит...

Добавлено: 31.10.2019 22:24:30
Хозяйке на заметку: root-а получайте по "su -" или "su -l" или "su -l root".
Хозяйке на заметку: перед выполнением команды "из Интернета", тем более от root, обязательно стоит разобраться, что она делает (man в помощь).

31.10.2019 22:29 #433297
text
bash-5.0# make modules_prepare
***
*** Configuration file ".config" not found!
***
*** Please run some configurator (e.g. "make oldconfig" or
*** "make menuconfig" or "make xconfig").
***
Makefile:660: include/config/auto.conf.cmd: Нет такого файла или каталога
make: *** [Makefile:669: .config] Ошибка 1

Добавлено: 01.11.2019 02:29:10

"bormant" написал:
Хозяйке на заметку: root-а получайте по "su -" или "su -l" или "su -l root".

А у меня отдельный терминал для рута, я настроил в mwm: :)

text
"Xterm Root"            f.exec "xterm su -l -fg white -bg black -name root"
31.10.2019 22:31 #433298

Ну да, что-то я в пакетики запамятовал положить в прошлый раз config-и...
https://dropmefiles.com/qGKNJ
Распакуйте в /boot, в /usr/src/linux

text

# cat /boot/config-generic-5.4_rc5 > .config
31.10.2019 22:33 #433299
bormant написал:
Ну да, что-то я в пакетики запамятовал положить в прошлый раз config-и...
https://dropmefiles.com/qGKNJ
Распакуйте в /boot, в /usr/src/linux
text

# cat /boot/config-generic-5.4_rc5 > .config

В оба каталога?

31.10.2019 22:36 #433300
"booidea" написал:
отдельный терминал для рута, я настроил в mwm

Вот только судя по форме приглашения "bash-5.0#" /etc/profile, выполняющийся внутри login shell, почему-то так и не отработал...
Добавлено: 31.10.2019 22:36:00

"booidea" написал:
В оба каталога?

распаковать в /boot:

text

# cd /boot; tar xf /tmp/config-5.4_rc5.tar.gz

Затем:

text

# cd /usr/src/linux-5.4-rc5
# cat /boot/config-generic-5.4_rc5 > .config
31.10.2019 22:37 #433301
bormant написал:
[quote="booidea"]отдельный терминал для рута, я настроил в mwm

Вот только судя по форме приглашения "bash-5.0#" /etc/profile, выполняющийся внутри login shell, почему-то так и не отработал...[/quote]

Ну вот да, странно, я только сейчас задумался. Хотя права рута, не ругается… Оно запускает терминал и сразу же требует пароль. Может надо строку отредактировать и какие-то дополнительные параметры передавать?

31.10.2019 22:56 #433302
"bormant" написал:
Ну да, что-то я в пакетики запамятовал положить в прошлый раз config-и...

Хотя, посмотрел сейчас внутрь пакетов, на месте конфиги в /boot, только называются чуть иначе, тот, что был нужен:
/boot/config-generic-5.4.0-rc5

Добавлено: 31.10.2019 22:56:08

Фирмварь уже идет в комплекте в родном пакете от Slackware kernel-firmware и для WiFi, и для Bluetooth:
/lib/firmware/rtl_bt/rtl8723d_fw.bin
/lib/firmware/rtl_bt/rtl8723d_config.bin
/lib/firmware/rtlwifi/rtl8723defw.bin

31.10.2019 23:07 #433303

...

text
make[1]: выход из каталога «/usr/src/linux-5.4-rc5»
make -C /lib/modules/5.4.0-rc5/build M=/usr/src/rtlwifi_new modules
make[1]: вход в каталог «/usr/src/linux-5.4-rc5»

WARNING: Symbol version dump ./Module.symvers is missing; modules will have no dependencies and modversions.

Building modules, stage 2. MODPOST 19 modules make[1]: выход из каталога «/usr/src/linux-5.4-rc5» Making backups Install rtlwifi SUCCESS

31.10.2019 23:14 #433304

Пока все отлично.

31.10.2019 23:28 · отредактировано #433305
text
bash-5.0# iwconfig
wlan0     IEEE 802.11  ESSID:off/any  
          Mode:Managed  Access Point: Not-Associated   Tx-Power=0 dBm   
          Retry short limit:7   RTS thr=2347 B   Fragment thr:off
          Encryption key:off
          Power Management:on
          
lo        no wireless extensions.

eth0 no wireless extensions.

01.11.2019 08:31 #433306

Отлично.
Проверяем гипотезу из #6 про антенну, смотрим на:

text

# iw dev wlan0 scan | egrep "SSID|signal|\(on"

Если сигнал слабый -- это меньше -60 dB (у вас же рядом есть WiFi сеть, иначе к чему бы вся эта эпопея), делаем

text
# echo "options rtl8723de ant_sel=2" > /etc/modprobe.d/50-rtl8723de.conf

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

text

# iw dev wlan0 scan | egrep "SSID|signal|\(on"

Если также или хуже:

text
# echo "options rtl8723de ant_sel=1" > /etc/modprobe.d/50-rtl8723de.conf

Выключаем/включаем, проверяем снова:

text

# iw dev wlan0 scan | egrep "SSID|signal|\(on"

Если опять все плохо -- похоже антенну на карту вообще не подключили.


PS. Моя б воля, писал бы "modprobe -r rtl8723de; modprobe rtl8723de" вместо выключения/включения. Но автор драйверов пишет, что даже при перезагрузке настройка может "залипнуть" в железке, и драйвер на это повлиять никак не сможет -- нет оснований ему не верить.
Добавлено: 01.11.2019 00:59:48

Полагаю, в каком-то виде антенна поймается, а значит вопрос с драйвером успешно закрыт. Останется выбрать вариант настройки WiFi и собственно настроить его. Начните с предлагаемого по умолчанию NetworkManager.

Выбор NM должен сделать исполняемым rc.networkmanager, убеждаемся в наличии прав на исполнение:

text

# ls -l /etc/rc.d/rc.networkmanager

Не помню, запускают ли его тут же, проверьте

text

# sh /etc/rc.d/rc.networkmanager status

Если не запущен:

text

# sh /etc/rc.networkmanager start

Затем запустите от пользователя nm-applet (в иксах) и настройте соединение сообразно параметрам точки доступа. Для NM есть также консольные CLI и TUI клиенты.
Добавлено: 01.11.2019 08:31:16

Запамятовал, в KDE свой клиент — KNetworkManager, если правильно путаю, но у вас и не KDE, насколько я понял.

01.11.2019 10:05 · отредактировано #433310

А «аппарат», это роутер? :)
Добавлено: 01.11.2019 14:05:19

"bormant" написал:
Запамятовал, в KDE свой клиент — KNetworkManager, если правильно путаю, но у вас и не KDE, насколько я понял.

,
Да, я не люблю ДЕ, у меня самый простой Motif Window Manager, но, очень кастомизированный :)

01.11.2019 10:12 #433311

Очевидно что роутер и надо выключить. :) А по поводу DE, так 4-KDE на мой вкус - идеален. *THUMBSUP* Жалко в gentoo собрать не могу. :[ Там i3 использую - просто великолепен со своими tabs *HI*

Войдите или зарегистрируйтесь, чтобы ответить.