Медленный Wi-Fi в Windows: полное руководство по диагностике и оптимизации
Пошаговое руководство на основе реального случая: диагностика и исправление медленного или нестабильного Wi-Fi в Windows — замеры, управление питанием, настройки адаптера, TCP/IP, фоновый трафик, band steering и сторона роутера.
Прочитали: 10 · Помогло: 1 · обновлено 9 августа 2026 г.
Смотреть
Размер видеофайла: 83 KB — на медленных соединениях загрузка может занять некоторое время.
Шаг за шагом
- 1
Обзор
Медленный Wi-Fi в Windows: полное руководство по диагностике и оптимизации
Случай: ноутбук ASUS (Windows 11 Pro), адаптер Realtek 8852CE WiFi 6E, роутер Huawei HG8145V5 GPON. Жалоба: «На этом ноутбуке интернет медленный, а второй ноутбук на том же роутере работает намного быстрее». Дата: 07.08.2026
Это руководство шаг за шагом описывает, что именно было сделано в этом случае. Рядом с каждой командой указано, зачем она запускалась — чтобы процесс можно было повторить на другой машине.
Краткий итог: весь выигрыш пришёл со стороны ноутбука. Средняя скорость загрузки выросла с 199 до 263 Мбит/с, но настоящая победа не в скорости, а в стабильности: разброс между замерами упал с 3,14× до 1,08×. Корневой причиной была не скорость роутера, а перескакивание ноутбука между диапазонами.
• Золотые правила
• Подготовка
• Шаг 1 — Базовый замер
• Шаг 2 — Чтение данных: диагноз
• Шаг 3 — Управление питанием
• Шаг 4 — Расширенные свойства адаптера
• Шаг 5 — Уровень TCP/IP
• Шаг 6 — Фоновый трафик
• Шаг 7 — Поимка корневой причины
• Шаг 8 — Сторона роутера
• Шаг 9 — Проверка
• Уроки этого случая
• Справочник команд
---
- 2
1. Золотые правила
Правила, которые нужно навязать себе на время работы. Именно благодаря им в этом случае ничего не сломалось.
• 1: Читай и записывай до изменения — Не делай изменений, которые не сможешь откатить. Старое значение каждой настройки должно быть записано.
• 2: Сначала измеряй, потом меняй — Без базового замера нельзя утверждать, что стало лучше.
• 3: По одной переменной за раз — Изменишь две настройки сразу и что-то сломаешь — не узнаешь, какая виновата.
• 4: Создай точку восстановления — Бесплатная страховка.
• 5: Зафиксируй условия замера — Тот же сервер, то же место, тот же диапазон. Иначе примешь шум за выигрыш.
• 6: При ошибке остановись и разберись — Пропустить ошибку — значит поставить под сомнение все последующие замеры.
• 7: Не отрежь себя — Меняя настройки канала, через который работаешь, оставь путь к восстановлению.
---
- 3
2. Подготовка
2.1 Права администратора
Почти все операции записи требуют повышения прав. Проверка:
$id=[Security.Principal.WindowsIdentity]::GetCurrent() (New-Object Security.Principal.WindowsPrincipal($id)).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
Если вернулось `False` — перезапусти терминал от имени администратора. В этом случае первая сессия была без прав: `Checkpoint-Computer` выдал «Access denied», а `Get-NetAdapterPowerManagement` — обманчивое «A device attached to the system is not functioning», что на самом деле было ошибкой прав.
2.2 Службы геолокации
В Windows 11 это обязательно. При выключенной геолокации `netsh wlan show interfaces` не возвращает ничего:
Network shell commands need location permission to access WLAN information.
Диапазон, канал, уровень сигнала, RSSI, скорость подключения — все ключевые диагностические данные приходят из этой команды. `Параметры > Конфиденциальность и защита > Расположение` → включить.
2.3 Точка восстановления
Checkpoint-Computer -Description "Wi-Fi tuning baseline" -RestorePointType MODIFY_SETTINGS Get-ComputerRestorePoint | Select-Object SequenceNumber,Description,CreationTime
Может завершиться неудачей молча. Обязательно проверь второй командой. Если защита системы отключена, точка не создастся — включи её в `Параметры > Система > О системе > Защита системы`.
По умолчанию Windows создаёт не более одной точки в сутки. Если последняя точка свежая, новая не создастся.
2.4 Заведи файл журнала
Для каждого изменения веди такие колонки:
| Настройка | Старое значение | Новое значение | Команда применения | Команда отката |
В конце эта таблица превратится в скрипт отката.
---
- 4
3. Шаг 1 — Базовый замер
Измеряй до того, как что-либо менять. Эти числа — твой ориентир.
3.1 Тест скорости
winget install --id Ookla.Speedtest.CLI --scope user --accept-source-agreements --accept-package-agreements
PATH не обновляется, используй полный путь:
$exe="$env:LOCALAPPDATA\Microsoft\WinGet\Packages\Ookla.Speedtest.CLI_Microsoft.Winget.Source_8wekyb3d8bbwe\speedtest.exe" & $exe --accept-license --accept-gdpr -f json | ConvertFrom-Json
Запусти минимум 3 раза. Один замер не говорит ни о чём.
⚠️ Критическая ловушка: если оставить выбор сервера автоматическим, каждый запуск уйдёт на другой сервер, и источник разброса станет неразличим. В этом случае базовый замер попал на три разных сервера (275,5 / 87,8 / 233,8 Мбит/с), и стало невозможно понять, какая часть этого трёхкратного разброса от сервера, а какая от Wi-Fi.
>
Правильно: получи список серверов, выбери один и всегда подключайся к нему.
& $exe -L # список серверов & $exe -s 70970 -f json # фиксированный сервер
3.2 Задержка, джиттер, потери пакетов
foreach ($t in '192.168.100.1','1.1.1.1','8.8.8.8') { "=== $t ==="; ping -n 50 $t | Select-Object -Last 4 }
Три цели означают разное:
• IP роутера: Только канал Wi-Fi. Потери или задержки здесь — проблема точно в Wi-Fi.
• 1.1.1.1: Wi-Fi + ближний пиринг провайдера
• 8.8.8.8: Wi-Fi + провайдер + длинный маршрут
В этом случае: 1 мс / 0 % потерь до роутера → канал Wi-Fi был чистым. 75 мс до 8.8.8.8 — это маршрутизация провайдера, к ноутбуку отношения не имеет.
Смотри на `Maximum`, а не на среднее. Если среднее хорошее, а пик высокий (в этом случае 1 мс среднее / 16 мс максимум до роутера) — это обычно подпись управления питанием: адаптер засыпает между пакетами.
3.3 Состояние подключения Wi-Fi
netsh wlan show interfaces
Вывод этой команды — центр всей диагностики:
SSID : Elirehim AP BSSID : 7c:00:4d:1b:88:b4 <- к какому радиомодулю подключён Band : 5 GHz Channel : 36 Radio type : 802.11ac <- не ax? значит роутер не Wi-Fi 6 Authentication : WPA2-Personal Cipher : CCMP Receive rate (Mbps) : 585 Signal : 74% Rssi : -71 <- САМОЕ ВАЖНОЕ ЧИСЛО
3.4 Как читать RSSI
• −30…−50 дБм: Отлично — Максимальный MCS, полная скорость
• −50…−60 дБм: Хорошо — Высокий MCS
• −60…−70 дБм: Средне — MCS падает, скорость может упасть вдвое
• −70…−80 дБм: Слабо — Низкий MCS, обрывы
• Ниже −80 дБм: Непригодно — —
Не доверяй «Signal %», смотри RSSI. Процент считается по-разному у разных производителей. В этом случае «74 %» выглядели прилично, но стоящие за ними −71 дБм были слабым сигналом.
3.5 Адаптер и драйвер
Get-NetAdapter | Select-Object Name,InterfaceDescription,Status,LinkSpeed,MacAddress,ifIndex netsh wlan show drivers
`netsh wlan show drivers` даёт теоретический потолок адаптера:
Radio types supported : 802.11b 802.11g 802.11n 802.11ac 802.11ax 802.11a Number of supported bands : 3 (2.4 / 5 / 6 GHz)
Сравни это с реальным `Radio type` из `netsh wlan show interfaces`. В этом случае адаптер поддерживал `ax` и 6 ГГц, а подключение было на `802.11ac` → узкое место — роутер.
3.6 Сканирование соседних сетей
netsh wlan show networks mode=bssid
Два критичных показателя:
• Channel Utilization — насколько занят эфир. 2–10 % = свободно, 50 %+ = переполнено.
• Количество видимых сетей — плотность соседей.
В этом случае: единственной видимой сетью был собственный роутер, загрузка канала 2 %. Это сразу отбросило совет «канал переполнен, смени канал». Помех не было; единственной причиной низкой скорости было расстояние.
💡 Сканирование даёт мгновенный снимок. Если роутер двухдиапазонный, одно сканирование может показать BSSID 2,4 ГГц, а следующее — 5 ГГц. Запусти несколько раз.
---
- 5
4. Шаг 2 — Чтение данных: диагноз
Замеры сделаны. Теперь подумай. Ответь на эти вопросы, прежде чем писать новые команды:
Вопрос 1: проблема в Wi-Fi или в интернете?
• Пинг до роутера чистый (нет потерь, низкая задержка) → канал Wi-Fi исправен
• Speedtest низкий, а скорость подключения высокая → узкое место у провайдера или на WAN роутера
В этом случае подключение было 585 Мбит/с, а пропускная способность 254 Мбит/с → Wi-Fi не был узким местом, им был потолок провайдера.
Вопрос 2: разброс или низкое среднее?
Это различие меняет всё.
• Низко, но стабильно → проблема ёмкости (провайдер, расстояние, железо)
• Скачет → что-то меняется: перескок диапазона, управление питанием, фоновый трафик
В этом случае показатели прыгали между 87,8 и 275,5 Мбит/с. Настоящая жалоба была не «медленно», а «нестабильно».
Вопрос 3: каков теоретический потолок?
• 802.11n: 2x2, 40 МГц — 300 Мбит/с
• 802.11ac: 2x2, 80 МГц — 867 Мбит/с
• 802.11ac: 2x2, 160 МГц — 1733 Мбит/с
• 802.11ax: 2x2, 80 МГц — 1201 Мбит/с
Где твоя скорость подключения относительно потолка? В этом случае 585/520 Мбит/с против потолка ac в 867 → примерно MCS7, а не MCS9 → недостаточный RSSI. Для MCS9 нужно около −55 дБм.
---
- 6
5. Шаг 3 — Управление питанием
Это самая частая программная причина медленного Wi-Fi. Адаптер засыпает ради экономии энергии, и его пробуждение стоит задержки.
5.1 Прочитай текущее состояние
Get-NetAdapterPowerManagement -Name 'Wi-Fi'
Многие поля могут вернуться как `Unsupported` — значит, эти функции уже отключены. В этом случае:
ArpOffload : Unsupported <- уже отключено NSOffload : Unsupported D0PacketCoalescing : Disabled <- уже в целевом значении SelectiveSuspend : Unsupported
5.2 «Разрешить отключение этого устройства для экономии энергии» — выключить
Это тот самый флажок в Диспетчере устройств. В реестре — `PnPCapabilities`:
$key='HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0001' # БЕЗОПАСНОСТЬ: тот ли это адаптер? (Get-ItemProperty $key).DriverDesc # записать старое значение (Get-ItemProperty $key -Name PnPCapabilities -ErrorAction SilentlyContinue).PnPCapabilities # применить New-ItemProperty -Path $key -Name PnPCapabilities -Value 24 -PropertyType DWord -Force
⚠️ `0001` — это разный адаптер на каждой машине. Проверь через `DriverDesc` перед записью. Запись в неверный раздел сломает Ethernet или Bluetooth.
>
Как найти нужный раздел: ```powershell $net='HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}' Get-ChildItem $net | ForEach-Object { $p=Get-ItemProperty $.PSPath -ErrorAction SilentlyContinue if ($p.DriverDesc -match 'Wi-Fi|Wireless|WiFi') { "$($.PSChildName) = $($p.DriverDesc)" } } ```
Значение: `24` (0x18) = управление питанием отключено. Если параметра нет, значение по умолчанию — включено. Для отката удали параметр, не пиши `0`.
Вступает в силу только после перезапуска адаптера (Шаг 9).
5.3 powercfg — энергосбережение беспроводного адаптера
Классический совет:
powercfg /setacvalueindex SCHEME_CURRENT 19cbb8fa-5279-450e-9fac-8a3d5fea2145 12bbebe6-58d6-4636-95bb-3217ef867c1a 0
⚠️ На машинах с Modern Standby этой подгруппы не существует. Проверка: ```powershell powercfg /a ``` Если написано `Standby (S0 Low Power Idle)` — Microsoft убрала эту настройку. Даже `-ATTRIB_HIDE` её не вернёт. Именно это произошло в нашем случае — вместо неё использовали `PnPCapabilities`.
5.4 Схема электропитания
На машинах с Modern Standby `powercfg /list` показывает только `Balanced`. Остальные скрыты, но их можно создать:
powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61 # Ultimate Performance powercfg -duplicatescheme 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c # High Performance powercfg /setactive 175ba1eb-c0bc-4204-aed1-6a6cc85736ce
💡 `/list` может их по-прежнему не показывать, но `/query` докажет их существование, а `/setactive` сработает.
⚠️ На ноутбуке Ultimate Performance заметно сокращает время работы от батареи, а вклад в Wi-Fi обычно близок к нулю. Настоящую работу делает `PnPCapabilities`. Если ты не от сети — пропусти этот пункт.
5.5 Селективная приостановка USB
$g = '381b4222-f694-41f0-9685-ff5bb260df2e' # Balanced powercfg /setacvalueindex $g 2a737441-1930-4402-8d77-b2bebba308a3 48e6b7a6-50f5-4782-a5d4-53bb8f07e226 0 powercfg /setdcvalueindex $g 2a737441-1930-4402-8d77-b2bebba308a3 48e6b7a6-50f5-4782-a5d4-53bb8f07e226 0 powercfg /setactive $g
⚠️ Ловушка: когда создаёшь и активируешь новую схему, она несёт собственную настройку USB. В этом случае настройку применили к Balanced, затем активировали Ultimate — и в Ultimate она всё ещё была `Enabled`. Примени и к активной схеме, и проверь.
Имеет смысл только при использовании внешнего USB-адаптера Wi-Fi; для встроенного PCIe бесполезно.
---
- 7
6. Шаг 4 — Расширенные свойства адаптера
Get-NetAdapterAdvancedProperty -Name 'Wi-Fi' | Select-Object DisplayName,DisplayValue,RegistryKeyword | Sort-Object DisplayName
Сначала выясни, какие настройки вообще существуют. Руководства в интернете предполагают адаптеры Intel; Realtek/Qualcomm/MediaTek открывают гораздо меньше параметров.
В этом случае Realtek 8852CE открыл всего 13 свойств, и большей части классического списка просто не было:
• Preferred Band: ✅ есть — уже `5G first`
• Channel Width / Bandwidth: ✅ есть — уже `Auto`
• 802.11n/ac/ax Mode: ✅ есть — уже максимум
• Roaming Aggressiveness: ✅ есть — уже `Medium`
• Transmit Power: ❌ нет
• MIMO Power Save Mode: ❌ нет
• Fat Channel Intolerant: ❌ нет
• Throughput Booster: ❌ нет
• Packet Coalescing: ❌ нет
• ARP/NS Offload: ❌ нет
• Large Send Offload v2: ❌ нет
• Interrupt Moderation: ❌ нет
Урок: большинство руководств со словами «поменяй эти 10 настроек» неприменимы к твоему железу. Сначала проведи инвентаризацию.
Как увидеть допустимые значения
Перед изменением настройки проверь, какие значения она принимает:
$p = Get-NetAdapterAdvancedProperty -Name 'Wi-Fi' -RegistryKeyword 'WifiBandwidth_phy0' $p.DisplayValue $p.ValidDisplayValues
В этом случае `Bandwidth` принимал только `20MHz Only | Auto` — то есть совет «зафиксируй 80/160 МГц» на этом железе был невозможен, а `Auto` уже был лучшим доступным вариантом.
Изменение
Set-NetAdapterAdvancedProperty -Name 'Wi-Fi' -RegistryKeyword 'WifiProtocol_2g' ` -DisplayValue 'Disabled' -NoRestart
Используй `-NoRestart`, чтобы внести несколько изменений и перезапустить адаптер один раз в конце.
---
- 8
7. Шаг 5 — Уровень TCP/IP
7.1 Прочитай текущее состояние
netsh int tcp show global netsh int tcp show supplemental
Целевые значения:
• Receive Window Auto-Tuning: `normal` — ✅ уже normal
• Receive-Side Scaling (RSS): `enabled` — ✅ уже enabled
• Congestion Provider: `cubic` — ✅ уже cubic
• ECN Capability: `disabled` — ✅ уже disabled
В Windows 11 все четыре уже правильные. В этом случае ни одна не менялась. Большинство руководств по «твикам TCP» относятся к эпохе Windows 7 и сегодня устарели. Тем не менее прочитай и проверь — кто-то мог их испортить.
Если `show global` показывает `Add-On Congestion Control Provider : default`, не пугайся; реальное значение показывает `show supplemental` (`cubic`).
7.2 MTU — эмпирический подбор
Это одна из немногих настроек TCP, которая действительно может помочь.
ping -f -l 1472 1.1.1.1
• `-f` = запрет фрагментации (Don't Fragment)
• `-l 1472` = размер данных. MTU = данные + 28 (20 IP + 8 ICMP заголовок)
Выполни бинарный поиск:
foreach ($sz in 1472,1464,1452,1420) { $r = ping -f -l $sz -n 2 1.1.1.1 | Out-String "$sz (MTU $($sz+28)) -> $(if($r -match 'Reply from' -and $r -notmatch 'fragmented'){'ПРОШЛО'}else{'НЕ ПРОШЛО'})" }
Найди наибольшее прошедшее значение и прибавь 28.
💡 Проверяй роутер и интернет отдельно. В этом случае до роутера проходило 1500, а в интернет — только 1492. Разница в 8 байт = PPPoE. Адаптер при этом оставался на 1500.
netsh interface ipv4 set subinterface "Wi-Fi" mtu=1492 store=persistent
Типичные значения MTU:
• Ethernet / DHCP: 1500
• PPPoE: 1492
• PPPoE + некоторые VPN: 1400–1460
7.3 DNS
Измеряй, не угадывай:
$hosts='google.com','cloudflare.com','github.com','wikipedia.org' foreach ($dns in '1.1.1.1','8.8.8.8','9.9.9.9','192.168.100.1') { $tot=0 foreach ($h in $hosts) { Clear-DnsClientCache $sw=[Diagnostics.Stopwatch]::StartNew() Resolve-DnsName -Name $h -Server $dns -Type A -DnsOnly -ErrorAction SilentlyContinue | Out-Null $sw.Stop(); $tot+=$sw.ElapsedMilliseconds } "{0,-16} среднее={1:N1} мс" -f $dns, ($tot/$hosts.Count) }
⚠️ Абсолютные числа здесь раздуты накладными расходами `Clear-DnsClientCache` (600–750 мс в этом случае). Смотри только на ранжирование, а не на абсолютное значение.
Смена DNS:
Set-DnsClientServerAddress -InterfaceAlias 'Wi-Fi' -ServerAddresses '1.1.1.1','1.0.0.1' ipconfig /flushdns
Скорость DNS влияет на время открытия страницы, а не на скорость загрузки. Не жди, что она изменит результат speedtest.
7.4 Резервируемая полоса QoS
$q='HKLM:\SOFTWARE\Policies\Microsoft\Windows\Psched' if (-not (Test-Path $q)) { New-Item -Path $q -Force | Out-Null } New-ItemProperty -Path $q -Name NonBestEffortLimit -Value 0 -PropertyType DWord -Force
Будем честны: миф о том, что «Windows забирает 20 % полосы», неверен. Windows резервирует эти 20 % только если приложение реально запрашивает QoS. Безвредно, но не строй на этом ожиданий.
---
- 9
8. Шаг 6 — Фоновый трафик
8.1 Оптимизация доставки (P2P-раздача обновлений)
$do='HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization' if (-not (Test-Path $do)) { New-Item -Path $do -Force | Out-Null } New-ItemProperty -Path $do -Name DODownloadMode -Value 0 -PropertyType DWord -Force
`0` = P2P полностью отключён. Windows перестаёт раздавать обновления другим.
8.2 Флаг лимитного подключения
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\DefaultMediaCost' | Select-Object Ethernet,WiFi
`1` = Unrestricted (не лимитное) ✅ · `2` = Fixed · `4` = Variable
8.3 Найди процессы, потребляющие полосу
Get-NetTCPConnection -State Established | Where-Object { $_.RemoteAddress -notmatch '^(127\.|::1|0\.0\.0\.0)' } | Group-Object OwningProcess | Sort-Object Count -Descending | Select-Object -First 15 | ForEach-Object { $p = Get-Process -Id $_.Name -ErrorAction SilentlyContinue "{0,-30} соединений={1}" -f $(if($p){$p.ProcessName}else{"PID $($_.Name)"}), $_.Count }
В этом случае Steam возглавлял список с 15 соединениями. Клиент, качающий обновление игры в фоне, обесценивает любой замер скорости. Закрой его перед измерением или хотя бы зафиксируй факт.
8.4 Лишние привязки протоколов
Get-NetAdapterBinding -Name 'Wi-Fi' | Select-Object DisplayName,ComponentID,Enabled
Что безопасно отключить в домашней сети:
Disable-NetAdapterBinding -Name 'Wi-Fi' -ComponentID ms_lldp # LLDP Disable-NetAdapterBinding -Name 'Wi-Fi' -ComponentID ms_rspndr # LLTD Responder Disable-NetAdapterBinding -Name 'Wi-Fi' -ComponentID ms_lltdio # LLTD Mapper
Никогда не отключай: `mstcpip` (IPv4), `mstcpip6` (IPv6), `ms_pacer` (планировщик QoS). Влияние на скорость пренебрежимо мало; это уборка, а не чудо.
---
- 10
9. Шаг 7 — Поимка корневой причины
Это самый важный раздел всего случая. Всё сделанное до этого было верным, но не решало настоящую проблему.
9.1 Симптом
Первый проверочный замер после всех изменений оказался хуже базового:
Run 1 : DL 178,7 | UL 66,1 Мбит/с | 3,2 % потерь пакетов Run 2 : DL 57,7 | UL 51,6 Мбит/с Run 3 : {"error":"Cannot open socket"} <- полный провал
9.2 Рефлекс: паника и откат
Это было бы ошибкой. Сначала проверь, был ли замер вообще корректным.
netsh wlan show interfaces | Select-String 'BSSID|Band|Channel|Radio type|Receive rate'
AP BSSID : 7c:00:4d:1b:88:b0 <- b0, а не b4! Band : 2.4 GHz Channel : 3 Radio type : 802.11n Receive rate (Mbps) : 144.4 <- не 585
9.3 Корневая причина
Роутер вещал один SSID в обоих диапазонах (band steering):
• `7c:00:4d:1b:88:b4` → 5 ГГц, канал 36, 802.11ac, 585 Мбит/с, RSSI −71
• `7c:00:4d:1b:88:b0` → 2,4 ГГц, канал 3, 802.11n, 144 Мбит/с, RSSI −66
BSSID различаются только последним символом → это два радиомодуля одного роутера.
Клиент выбирал более сильный, но более медленный диапазон 2,4 ГГц. Настройка Windows «Preferred Band = 5G first» не спасала, потому что разница в сигнале составляла 5 дБ.
Это и объяснило скачки 87,8 ↔ 275,5 Мбит/с в базовом замере. И это же — вероятная причина, почему второй ноутбук был быстрее: он оставался на 5 ГГц.
9.4 Решение: зафиксировать диапазон
# Отключаем радиомодуль 2,4 ГГц -> клиент вынужден оставаться на 5 ГГц Set-NetAdapterAdvancedProperty -Name 'Wi-Fi' -RegistryKeyword 'WifiProtocol_2g' ` -DisplayValue 'Disabled' -NoRestart Restart-NetAdapter -Name 'Wi-Fi' -Confirm:$false
Альтернативы:
• Отключить 2,4 ГГц на клиенте: Детерминированно, не затрагивает другие устройства — Нет запасного 2,4 ГГц в дальних комнатах
• Разделить SSID на роутере (`-2G` / `-5G`): Постоянное, чистое решение, запас сохраняется — Все устройства 2,4 ГГц в доме придётся переподключить
• Отключить band steering на роутере: Просто — Без гарантий — клиент всё равно выбирает по сигналу
Здесь выбрали первый метод: проблемным был только ноутбук, беспокоить весь дом было незачем.
9.5 Урок
Когда замер ухудшается, первый вопрос не «какую настройку откатить», а «был ли замер корректным». Он не был — диапазон сменился. Начав откатывать настройки, я удалил бы верные изменения.
---
- 11
10. Шаг 8 — Сторона роутера
Сторона ноутбука закончена. Теперь роутер.
10.1 Определи модель (без входа в систему)
$r = Invoke-WebRequest -Uri 'http://192.168.100.1' -UseBasicParsing [regex]::Match($r.Content,"ProductName\s*=\s*'([^']+)'").Groups[1].Value
Вернулось `HG8145V5`.
⚠️ Искать название бренда в содержимом страницы опасно. Первая попытка нашла «ZTE», но это пришло из списка брендов `DNZTELECOM2WIFI` на самой странице. Устройство было Huawei. Переменная `ProductName` и имена изображений `hwlogo_*` стали решающим доказательством.
10.2 Прочитай и сравни настройки
В Huawei HG8145V5 путь: `Advanced > WLAN > ...`
• 2.4G / 5G Basic: SSID, Authentication Mode, Encryption Mode, WPS
• 2.4G / 5G Advanced: TX Power, Regulatory Domain, Channel, Channel Width, Mode, Band Steering
10.3 Ключевая находка: TKIP
Authentication Mode : WPA/WPA2 PreSharedKey Encryption Mode : TKIP&AES <- ПРОБЛЕМА
TKIP нельзя использовать вместе с 802.11n/ac. Стандарт это запрещает. В смешанном режиме `TKIP&AES` точка доступа может ограничивать собственный BSS. К тому же TKIP криптографически взломан.
Исправление: `Encryption Mode` → `AES` → `Apply`
💡 Эта прошивка разделяла настройку безопасности между обоими радиомодулями — AES, применённый к 2,4 ГГц, появился и на 5 ГГц. Перезагрузи страницу с нуля для проверки.
⚠️ Честное ожидание: в этом случае изменение не дало измеримого прироста скорости, потому что клиент и так согласовывал CCMP (AES). Это верное и необходимое исправление, но не решение по производительности.
10.4 Частые советы, которые могут оказаться НЕВЕРНЫМИ
Три «стандартные» рекомендации рассыпались, как только устройство было реально осмотрено:
• «Зафиксируй ширину канала на 80 МГц»: Вредно при слабом сигнале. Канал 80 МГц даёт примерно на 6 дБ меньше SNR на поднесущую, чем 20 МГц. При RSSI −76 правильным является `Auto` — он умеет сужаться при ухудшении сигнала.
• «Перейди на канал 149/157»: Regulatory Domain был `United Kingdom`. По ETSI в 5 ГГц есть только 36–64 и DFS 100–140; 149–165 отсутствуют.
• «Отключи 20/40 Coexistence»: Такой настройки в этой прошивке нет.
Урок: не давай советов, не увидев устройство. Увидев — будь готов их отозвать.
10.5 Band steering — отключать или нет?
Зависит от ситуации, автоматического «да» здесь нет:
• Если клиент уже привязан к диапазону на уровне адаптера → отключение ничего не даст
• Если в доме много устройств → отключение может согнать их на 2,4 ГГц
• Если проблемное устройство одно → чище решать на стороне клиента
В этом случае функцию оставили включённой, потому что ноутбук уже был привязан, а эффект для остальных 10 устройств был неясен.
10.6 Что ещё проверить
Security > IPv4 Filtering -> есть ли правила Security > MAC Filtering -> не заблокировано/ограничено ли это устройство Application > QoS -> есть ли ограничение скорости по устройству WLAN Advanced > TX Power -> стоит ли 100 % WLAN Advanced > Regulatory Domain -> соответствует ли твоему местоположению
Ни в одном из них ограничений не нашлось → потолок в 254 Мбит/с не был установлен роутером.
⚠️ Если Regulatory Domain не соответствует твоему местоположению (`United Kingdom` при нахождении в Баку, как здесь) — это вопрос регулирования радиочастот. Выбрать правильную страну — корректная настройка, но выбирать произвольную страну ради прироста мощности передатчика создаёт юридические проблемы.
10.7 Работа в веб-интерфейсе роутера
• Правило одной сессии: ONT Huawei допускают только одну админ-сессию одновременно. Вход с
другой вкладки или устройства выбивает текущую.
• Тайм-аут сессии: выходит сам примерно через 5 минут простоя.
• Блокировка входа: после нескольких неудачных попыток блокирует на 1 минуту.
• Диапазон, через который ты подключён, меняй последним. Сначала проверь на неиспользуемом
диапазоне — некоторые прошивки перезагружают всё устройство при `Apply`.
---
- 12
11. Шаг 9 — Проверка
11.1 Перезапусти адаптер
Restart-NetAdapter -Name 'Wi-Fi' -Confirm:$false foreach ($i in 1..30) { Start-Sleep -Seconds 2 if ((Get-NetAdapter -Name 'Wi-Fi').Status -eq 'Up' -and (Get-NetIPConfiguration -InterfaceAlias 'Wi-Fi').IPv4Address.IPAddress) { "Подключено ($($i*2) с)"; break } }
Изменения реестра вроде `PnPCapabilities` вступают в силу только после этого.
11.2 Повтори замер — с зафиксированными условиями
$exe="$env:LOCALAPPDATA\Microsoft\WinGet\Packages\Ookla.Speedtest.CLI_Microsoft.Winget.Source_8wekyb3d8bbwe\speedtest.exe" foreach($i in 1..4){ $band = (netsh wlan show interfaces | Select-String 'Band\s+:').ToString().Split(':')[1].Trim() $rssi = (netsh wlan show interfaces | Select-String 'Rssi').ToString().Split(':')[1].Trim() $j = & $exe -s 70970 -f json | ConvertFrom-Json "Run {0} [{1}, RSSI {2}] : DL {3,6:N1} | UL {4,6:N1} | loss {5}" -f ` $i,$band,$rssi,($j.download.bandwidth*8/1MB),($j.upload.bandwidth*8/1MB),$j.packetLoss }
Записывай диапазон и RSSI при каждом замере. Без этого перескок диапазона в нашем случае так и не был бы обнаружен.
11.3 Тест с одной переменной: IPv6
Disable-NetAdapterBinding -Name 'Wi-Fi' -ComponentID ms_tcpip6 # сделать 3 замера Enable-NetAdapterBinding -Name 'Wi-Fi' -ComponentID ms_tcpip6
В этом случае: выключен 259,7 / 183,5 · включён 254,3 / 180,5 → разница 2 % = шум → включили обратно.
Не считай выигрышем ничего меньше 5 %. Естественный разброс замеров Wi-Fi больше этого.
11.4 Интерпретируй результат честно
Реальная таблица этого случая:
• Средняя загрузка: 199,0 Мбит/с — 263,0 Мбит/с — +32 %
• Разброс загрузки: 3,14× — 1,08× — настоящая победа
• Средняя отдача: 143,5 Мбит/с — 185,3 Мбит/с — +29 %
• Пинг до роутера, макс.: 16 мс — 4 мс — −75 %
• Потери пакетов: 0 % — 0 % — —
Бо́льшая часть роста среднего значения объясняется исчезновением провалов до 88 Мбит/с. Потолок не поднялся — поднялся пол.
---
- 13
12. Уроки этого случая
12.1 Методологические
• Ставь жалобу под сомнение. Сообщили «медленно», а настоящей проблемой было «нестабильно».
На этом различии изменился весь диагноз.
• Когда замер портится, сначала сомневайся в замере, а не в настройках.
• Прикрепляй контекст к каждому замеру (диапазон, RSSI, сервер). Число без контекста бесполезно.
• Не применяй советы, не проведя инвентаризацию. Половины настроек может не быть на твоём железе.
• Будь готов отозвать свой совет, увидев устройство. В этом случае четыре рекомендации ушли
в корзину.
12.2 Технические
• В Windows 11 настройки TCP уже корректны. Руководства по «TCP optimizer» устарели.
• Modern Standby обесценивает половину руководств по управлению питанием. Проверяй через
`powercfg /a`.
• MTU нужно находить эмпирически. На PPPoE это 1492, и находится он пингом в интернет, а не
до роутера.
• RSSI — самое важное число. «Signal %» вводит в заблуждение.
• Широкий канал вредит при слабом сигнале. 80 МГц не всегда лучше.
• Один SSID, вещаемый в двух диапазонах — самая коварная проблема производительности, и
распознаётся она по последнему символу BSSID в `netsh wlan show interfaces`.
• TKIP несовместим с 11n/ac — увидев `TKIP&AES` на роутере, ставь `AES`.
12.3 Управление ожиданиями
Программные настройки не побеждают физику. Итоговые узкие места в этом случае:
• Роутер — Wi-Fi 5: `Radio type: 802.11ac`, при этом адаптер поддерживает `ax` — Замена роутера
• RSSI −71…−77: Загрузка канала 2 %, видна одна сеть → помех нет, причина — расстояние — Смена расположения
• Провайдер ~260 Мбит/с: Подключение 520 Мбит/с, пропускная способность упирается в 263 — Смена тарифа
Когда программная часть закончена — скажи об этом прямо. Поиск новых «твиков» — потеря времени.
---
- 14
13. Справочник команд
Диагностика (только чтение, безопасно)
netsh wlan show interfaces # состояние связи, RSSI, диапазон, BSSID netsh wlan show drivers # теоретические возможности адаптера netsh wlan show networks mode=bssid # соседи, загрузка канала netsh int tcp show global # настройки TCP netsh int tcp show supplemental # congestion provider netsh interface ipv4 show subinterface # MTU Get-NetAdapter # список адаптеров Get-NetAdapterAdvancedProperty -Name 'Wi-Fi' # расширенные свойства Get-NetAdapterPowerManagement -Name 'Wi-Fi' # управление питанием Get-NetAdapterBinding -Name 'Wi-Fi' # привязки протоколов Get-NetIPConfiguration # IP, шлюз, DNS powercfg /a # возможности сна (Modern Standby?) powercfg /getactivescheme # активная схема питания
Измерение
ping -n 50 <цель> # задержка, джиттер, потери ping -f -l <размер> <цель> # подбор MTU speedtest -L # список серверов speedtest -s <id> -f json # тест на фиксированном сервере Resolve-DnsName -Name <host> -Server <dns> # время отклика DNS
Изменение (требуются права администратора)
Set-NetAdapterAdvancedProperty -Name 'Wi-Fi' -RegistryKeyword <kw> -DisplayValue <val> -NoRestart Disable-NetAdapterBinding -Name 'Wi-Fi' -ComponentID <id> Enable-NetAdapterBinding -Name 'Wi-Fi' -ComponentID <id> Set-DnsClientServerAddress -InterfaceAlias 'Wi-Fi' -ServerAddresses '1.1.1.1','1.0.0.1' netsh interface ipv4 set subinterface "Wi-Fi" mtu=<n> store=persistent Restart-NetAdapter -Name 'Wi-Fi' -Confirm:$false
Откат
Checkpoint-Computer -Description "..." -RestorePointType MODIFY_SETTINGS Get-ComputerRestorePoint Restore-Computer -RestorePoint <SequenceNumber> # перезагружает машину
---
- 15
Приложение: как писать скрипт отката
Собери все изменения в один скрипт. На что обратить внимание:
1. Если в файле есть не-ASCII символы, сохраняй его в UTF-8 с BOM. PowerShell 5.1 читает UTF-8 без BOM как ANSI и выдаёт синтаксические ошибки на не-ASCII символах.
$txt = [System.IO.File]::ReadAllText($path, [System.Text.Encoding]::UTF8) [System.IO.File]::WriteAllText($path, $txt, (New-Object System.Text.UTF8Encoding($true)))
2. Проверь синтаксис, не запуская скрипт:
$err=$null [System.Management.Automation.PSParser]::Tokenize((Get-Content $path -Raw),[ref]$err) | Out-Null if ($err.Count) { $err | ForEach-Object { "строка $($_.Token.StartLine): $($_.Message)" } } else { "OK" }
3. Проверь цель перед записью в реестр:
$d = (Get-ItemProperty $key).DriverDesc if ($d -notmatch 'Realtek 8852CE') { throw "Неверный адаптер: $d" }
4. Сохраняй разницу между «параметра не было» и «параметр был равен 0». Если параметра не было — используй `Remove-ItemProperty`, не пиши `0`. Это разные вещи.
5. Отметь в комментарии, что изменения на роутере скриптом не откатываются.
---
- 16
Связанные файлы
• `network-tuning-log.md` — все исходные данные этого случая, старые и новые значения
• `rollback-network.ps1` — исполняемый скрипт, откатывающий все изменения
• `wifi-optimizasyon-rehberi.md` — турецкая версия этого руководства
• `wifi-optimization-guide-EN.md` — английская версия этого руководства
Нужные вам файлы
Всё здесь безопасно скачивать и использовать бесплатно.
rollback-network.ps1
9 KB
Это было полезно?
Вход не требуется — это просто помогает понять, о чём писать больше.
Застряли на шаге? Спросите здесь
Спрашивайте о чём угодно — нет слишком простых вопросов.