Когда-то я был крестоносцем, борющимся с проводами. Я ненавидел хаос из кабелей и мою склонность бессознательно жевать их, когда они окажутся рядом с лицом. Но столкнувшись со сложным багом беспроводных систем в процессе улучшения качества видеозвонков, я стал отступником. Чем больше я узнавал о WiFi, Bluetooth и других протоколах, тем сильнее убеждался, что в сети они часто хуже, чем провода.
Например, большинство людей при торможении видеозвонков винят в этом провайдера Интернета. И это понятно, ведь большинство провайдеров — это олигополисты с дикими ценами, почти неработающим ПО и ужасной техподдержкой. Однако каждый раз, когда я помогал кому-то разобраться в источнике его проблем со связью, виновником оказывался его WiFi. И часто проще всего было решить проблему, проложив кабель.
WiFi (Bluetooth и т. п.) притягивают нас иллюзией того, что «всё просто работает». Но если покопаться, то часто можно выяснить, что беспроводной линк работает со сниженным качеством и его показатели гораздо хуже, чем у проводного аналога. Так как снижение качества происходит незаметно, часто оказывается неочевидным, что проблема в беспроводном подключении; вместо этого мы обычно виним устройство, программное обеспечение или себя.
Я постоянно вижу, как люди решают какую-то связанную с беспроводной связью проблему и говорят, что понятия не имели, насколько хорошо всё может быть.
Кабели на моём столе в порядке.
Кабели под столом чуть в меньшем порядке.
Недавно меня это наконец выбесило и я заменил все беспроводные устройства на столе проводными. Хотя мне пришлось вложить немного труда в кабель-менеджмент (и расстаться с привычкой жевать провода наушников), удалось достичь примерно того же уровня порядка с гораздо более высоким уровнем надёжности, качества и скорости. Мне больше не нужно беспокоиться, что моё оборудование не сможет установить сопряжение, разрядится или внезапно превратит мой голос в металлическое звучание робота во время видеозвонка. Это существенно снизило уровень моих страданий, связанных с оборудованием.
Чтобы проиллюстрировать уровень страданий, о котором я говорю, ниже я опишу мелкие, малозаметные, но серьёзные проблемы, с которыми я сталкивался при использовании беспроводных протоколов. Если вас это убедит, попробуйте использовать провода, так вы тоже сможете проверить, являетесь ли вы жертвой беспроводной ловушки.
WiFi
Помехи. Если в одном «канале» (радиочастотном диапазоне) работает несколько устройств, их сигналы могут мешать друг другу. Когда такое происходит, вашему устройству нужно заново отправить ту же информацию, что замедляет WiFi.
Вы можете подумать, что эту проблему можно решить, заставив роутеры автоматически определять наименее подверженный помехам канал, но, похоже, большинство из них довольно плохо с этим справляется. (Кроме того, старому протоколу WiFi на 2,4 ГГц разрешалось использовать только три непересекающихся канала.)
Это означает, что в густонаселённых местах (например, в многоквартирных домах) роутеры часто выбирают плохой канал и мешают друг другу. Роутер или устройство никак не может сообщить вам, что испытывает помехи, поэтому вы узнаете об этом, только сравнив максимальную скорость роутера с тем, что он выдаёт.
Мёртвые зоны. Если вы слишком далеко от роутера, то компьютер может и не получать надёжный передаваемый роутером сигнал, или наоборот. На параметр «слишком далеко» могут влиять (иногда очень странным образом) находящиеся на пути стены или потолки. Если вы не знаете, как радиоволны взаимодействуют со строительными материалами, то вам сложно будет предсказать, где будут находиться мёртвые зоны.
Хуже всего то, что многие мёртвые зоны мертвы не полностью: прежде чем сдаться, компьютер и роутер будут пытаться повторно передавать каждый пакет данных, и частенько им рано или поздно удаётся это сделать. Если такое происходит чаще всего, то вместо мёртвой зоны вы получаете «медленную зону», в которой Интернет работает, но ужасно плохо.
Разумеется, если вы не следите внимательно за статистикой скорости сети и её связью с вашим местоположением, то вы ни за что не заметите медленную зону. Если вы что-то и заметите, так это то, что иногда ваш Интернет случайным образом становится хуже, чем обычно.
Опросы. Любая программа в вашем компьютере может попросить плату беспроводной связи перечислить все близкие сети. Это заставляет её перейти в «режим опроса», при котором она тратит меньше времени на передачу данных и больше времени слушает роутеры, передающие свою сетевую информацию (плата не может передавать и получать данные одновременно). Это может привести к внезапному скачку сетевых задержек, из-за которых, например, видеозвонок может несколько секунд тормозить или «заикаться».
Большинство программистов не осознаёт, что опросы беспроводных сетей влияют на скорость сети, поэтому просят ОС выполнять опросы с большой частотой. Я обжигался на этом много раз.
Самый вопиющий пример: однажды я заметил, что видеозвонки иногда «заикаются» со странно равномерной частотой. Вот каким был мучительный процесс выявления виновника:
- Я пинговал свой роутер каждую секунду в течение 10 минут, затем составил из результатов график в Excel и убедился, что медленные пинги повторяются ровно через каждые 30 секунд. Поэтому я предположил, что проблема программная.
- Я попросил на Facebook помощи в отладке, и кто-то посоветовал мне включить логгинг отладки беспроводной связи macOS.
- Я включил логгинг и заметил, что многие приложения после их запуска запрашивали сканирование сети в моменты, совпадающие со временем увеличения задержек пингов.
- Сузив рамки проблемы до этих нескольких приложений, я спросил на AskDifferent, как заставить их перестать это делать.
- Какой-то пользователь AskDifferent отследил проблему до Qt — фреймворка программирования для создания пользовательских интерфейсов, используемого в приложениях с миллионами пользователей.
В Qt есть компонент, опрашивающий сети каждые 30 секунд, если запущен network access manager, поэтому практически все Qt-приложения пользуются сетью, чтобы ухудшать скорость вашего WiFI в течение примерно пяти из каждых 30 секунд.
Уже есть множество отчётов об этом баге, один из них объявлен «закрытым» инженером, поскольку разработчики позволили пользователям задавать переменную среды для отключения опросов.
Разумеется, это невероятно бесполезное «решение», потому что большинство пользователей даже не знает, что скорость WiFi ухудшается; те, кто знает, не понимают, что это вина Qt; а те, кто и это понимает, с трудом смогут загуглить и найти, как всё исправить (не говоря уж о реализации решения без знания кодинга).
Это поведение настолько недружественно к пользователю, а «исправление» настолько смехотворно, что, похоже, разработчики Qt вообще не поняли серьёзность проблемы — они испортили видеозвонки миллионам людей, потому что, например, проблема коснулась qBittorrent, который скачали 75 миллионов раз. Большинство из этих миллионов людей, скорее всего, недостаточно знакомы с техникой, чтобы понимать, как «присвоить переменной среды QT_BEARER_POLL_TIMEOUT
значение -1
».
(К счастью, похоже, в 2017 году — три года спустя после первого отчёта о баге — разработчики наконец поняли, что нужно просто прекратить опросы и устранили баг правильно.)
Qt был самой худшей проблемой, но далеко не единственной. Даже в macOS какое-то время существовал баг, при котором то же самое происходило, когда пользователь открывал Spotlight (что я часто делаю во время видеозвонков, когда меня просят посмотреть какой-то файл или я хочу посмотреть котиков в Интернете параллельно заняться другой задачей). Мне пришлось устранять проблему вручную, отключая отдельные типы результатов Spotlight, пока я не нашёл тот, который вызывал проблему. То есть, похоже, даже собственные разработчики Apple не осознают, что опросы WiFi вредят.
Bluetooth-аудио
Высокая латентность. Большинство Bluetooth-наушников добавляют задержку примерно в 150-300 мс (время между получением аудио из Интернета и воспроизведением звука из наушников). Это значит, что когда я болтаю с другом из Нью-Йорка, аудиоданным нужно около 50 мс, чтобы добраться от него до моего компьютера и, допустим, 200 мс (в 4 раза больше), чтобы долететь от моего компьютера до ушей. Так как высокая латентность препятствует естественному течению беседы, мне бы хотелось максимально её устранить.
Можно найти Bluetooth-наушники с меньшей латентностью, если они поддерживают нужный кодек, например AptX Low Latency. Разумеется, кроме теоретической поддержки кодека они должны согласовать его использование с компьютером, что иногда сделать не удаётся. (Опция просмотра используемого кодека, конечно же, погребена в различных скрытых меню и параметрах.)
Низкое качество. Эта проблема тоже связана с кодеками: многие Bluetooth-устройства воспроизводят звук высокого качества при отключенном микрофоне, но существенно снижают качество, если он включен. Если у вас есть Bluetooth-наушники, вы можете проверить это самостоятельно: включите в них музыку, а затем откройте настройки микрофона на той странице, где показана громкость на входе микрофона. Вы, скорее всего, заметите, что звук на секунду прервётся, а потом вернётся в более низком качестве. (Это происходит даже с устройствами, которые считают качественными, например, с моими Airpods Pro и Macbook Air 2018 года.)
Bluetooth в целом
Баги Bluetooth. Несмотря на то, что у всех компьютеров сегодня есть встроенный Bluetooth, многие Bluetooth-аксессуары поставляются с проприетарными донглами, использующими другой протокол. (Например, наушники Jabra, клавиатуры и мыши Logitech, этот головной микрофон.) Очевидно, эти донглы используют другие виды беспроводной передачи, поскольку Bluetooth тратит много энергии, добавляет задержку и менее надёжен.
Например, во встроенном Bluetooth моего Mac мышь (Logitech MX Master) демонстрирует заметные колебания — курсор сначала останавливается, потом скачет, а не движется плавно. Такое повторялось на трёх разных Mac, поэтому, вероятно, это программная проблема. Когда я стал использовать донгл Logitech, проблема исчезла.
Аналогично, при подключении к Bluetooth моего Mac в наушниках Jabra Evolve 75 часто пропадает микрофон или звук. С собственным донглом они (чаще всего) работают хорошо.
Я не знаю, кого в этом винить — Jabra/Logitech или Apple (а может, и организацию по стандартизации Bluetooth). Но как бы то ни было, когда производители устройств отказываются от стандарта в пользу протоколов, требующих отдельного донгла для каждого устройства, мы понимаем, что Bluetooth не справляется.
Изначальная цель Bluetooth заключалась в объединении различных беспроводных устройств в единственный беспроводной протокол, как Харальд Синезубый объединил Данию. Однако в реальности мне недавно пришлось купить USB-хаб для донглов моей клавиатуры, мыши, наушников и микрофона.
Надёжность. Даже с проприетарными донглами беспроводные устройства намного ненадёжнее проводных. Например, выше я писал о том, что после подключения проприетарного донгла мышь Logitech MX Master стала работать нормально, но это не совсем правда: она какое-то время работала нормально, но однажды снова начала двигаться рывками без каких-либо выраженных причин. (Именно в тот день я стал отступником и выбросил всё беспроводное оборудование со стола.)
Я сталкивался с другими багами Bluetooth, заставлявшими меня несколько раз в неделю разрывать и устанавливать сопряжение. Например, мои AirPods иногда «рассинхронизируются» и один наушник воспроизводит аудио на несколько миллисекунд раньше второго, создавая странный и очень неприятный эффект эхо.
Помехи. Вероятная причина низкой надёжности заключается в том, что Bluetooth и WiFi на 2,4 ГГц создают друг другу помехи. Как и в других случаях возникновения помех, ваши устройства никогда не предупреждают, что они столкнулись с помехами, и вы заметите это только по снижению качества.
Зарядка. Это не вина самого Bluetooth, но недостаток использования большого количества беспроводных устройств заключается в том, что тебе приходится постоянно не забывать их заряжать. Мои помирали в самый неподходящий момент, например, во время видеозвонков.
Вывод
Большинство этих проблем имеет общие черты:
- Работа устройств не нарушается полностью, а лишь частично снижается её качество. Вероятно, это хороший признак проблемы, но ты не сразу замечаешь, что она существует.
- Кроме того, я понятия не имел, насколько качественно устройство «должно» работать, поэтому поздно замечал, что качество упало.
- И даже когда я узнавал о существовании проблемы, было сложно, а порой и невозможно понять её первопричину и устранить её, потому что я не знал, как её правильно диагностировать (или таких способов просто не существует).
Я хочу, чтобы мои инструменты были предсказуемыми — имели стабильные показатели и ломались понятным мне образом. Беспроводные протоколы, по сути, сложнее (потому что множество устройств делит одно и то же помещение) и могут сломаться по гораздо большему количеству причин, поэтому они гораздо непредсказуемее проводов. Лично для меня их удобство часто не оправдывает таких трудностей.
Я по-прежнему пользуюсь беспроводным оборудованием, когда это того стоит. Например, я включаю WiFi ноутбука, когда он часто перемещается, и использую беспроводную зарядку телефона, потому что мне не важно, насколько быстро он зарядится. Но в случае серьёзной работы я уделяю время прокладке кабелей и подключению всего проводами.
Это заставляет меня задуматься о том, каким бы был мир, если бы мы тратили 10% усилий, которые мы сейчас тратим на избавление от проводов повсюду, и вложили бы их в разработку изобретательных решений по прокладке кабелей. Мне кажется, многие зависящие от беспроводных технологий действия наподобие видеозвонков были бы гораздо более приятным процессом.