Meshtastic: повесть о двух городах

Перевод статьи Meshtastic: A Tale Of Two Cities — Tom Nardi, Hackaday.
Если честно с самим собой, мне на самом деле не нужен доступ к автономной, отказоустойчивой mesh-сети вроде Meshtastic. Погода здесь, в Нью-Джерси, не настолько буйная, чтобы был серьёзный шанс, что местная инфраструктура вдруг отключится, и хотя я ценю приватность не меньше любого уважающего себя хакера, в моих переписках нет ничего настолько секретного, чтобы это требовалось вести вне интернета.
Но, чёрт возьми, до чего же мне этого хочется. Сама идея, что обычные граждане самых разных занятий организуются и строят собственную сеть связи на самодельном железе и открытом ПО, невероятно меня будоражит. Это как лучшие моменты киберпанк-романа — только без кибернетических имплантов, загрязнения и всевластных мегакорпораций. Ну, последние две вещи у нас как раз есть, но вы поняли, о чём я.

Карты Meshtastic никогда не бывают полными, но эта даёт представление о плотности узлов в Филадельфии по сравнению с окрестностями.
Хотя концепция Meshtastic и казалась мне привлекательной, мой, кажется, бесконечный список отложенных проектов не давал мне взяться за неё вплоть до относительно недавнего времени. Только когда мне в руки попал Hacker Pager, мой мимолётный интерес превратился в полноценную одержимость. Но, возможно, не по той причине, о которой вы подумали. Разъезжая с этим устройством в сумке по разным мероприятиям на Восточном побережье, оно радостно пищало, попадая в зону действия Филадельфии или Нью-Йорка, но затем снова умолкало, стоило мне вернуться домой. Хотя мне и приходили редкие уведомления о ближайшем узле, в моём районе не было ничего похожего на мощные и активные mesh-сети, что есть в тех городах.
Что ж, говорят, ты должен сам стать тем изменением, которое хочешь видеть в мире, — так что я решил что-то с этим сделать. Очевидно, построить целую сеть в одиночку мне не под силу, но я рассудил, что если начну поднимать узлы, то другие могут это заметить и последовать примеру. Примерно в это время Seeed Studio выпустила узел SenseCAP Solar, который выглядел неплохим способом начать. Так что я купил два — с идеей поставить один у себя дома, а другой у родителей на побережье.
Результаты вышли не совсем такими, как я ожидал, но это, безусловно, был интересный опыт, и сегодня я даже сильнее рвусь развивать mesh-сеть, чем в самом начале.
Начало на лёгком уровне#
Я не то чтобы осознанно решил начать эксперимент с дома родителей. Он расположен примерно в 60 милях (96 км) от меня, так что любые успехи в развёртывании mesh-сети там никак не помогли бы мне дома. Но было начало лета, у них есть бассейн, а мои дочери обожают плавать. Поэтому мы проводили там почти каждые выходные, что давало мне уйму времени на возню.
Для тех, кто не знаком с районом Южного побережья Нью-Джерси: сама береговая линия усыпана курортными местами вроде Уайлдвуда, Атлантик-Сити и Лонг-Бич-Айленда. Сюда едут туристы наслаждаться пляжами, набережными, сахарной ватой и дорогими съёмными домами. Но стоит чуть отойти вглубь материка — и попадаешь в болотистую местность, пронизанную обширной сетью заливов, ручьёв и притоков. У каждого водоёма, достаточно большого, чтобы прошла лодка, найдётся городок или даже некорпорированный посёлок, который в начале 1900-х кишел бы устричными и охотничьими домиками, а сегодня примечателен разве что наличием собственного Wawa.

К бесконечности и дальше.
Мои родители живут в одном из тех городков, где нет Wawa. Там очень тихо, небо тёмное, а вокруг почти ничего, кроме болота и воды. Так что когда я поднял SenseCAP Solar на их 6-метровый флагшток (который в прошлой жизни был, вообще-то, мачтой парусного катамарана), результаты оказались крайне впечатляющими.
Не прошло и нескольких часов с момента установки, как мой телефон пиликнул сообщением. Мы немного пообщались, и выяснилось, что мой новый mesh-друг — радиолюбитель, живущий на Лонг-Бич-Айленде, и что он тоже совсем недавно начал экспериментировать с Meshtastic. Он, к слову, ещё и фанат Hackaday. (Привет, Леон!) Он упомянул, что его установка не сложнее платы ESP32 на подоконнике, и тем не менее мы уверенно общались на расстоянии примерно 6 миль (9 км).
Воодушевившись, я решил оставить радио онлайн на всю ночь. Утром я был потрясён, обнаружив, что оно засекло больше десятка новых узлов. Невероятно, но ему даже удалось нащупать несколько узлов, которые я узнал по Филадельфии — в 50 милях (80 км) к западу. Я начал задумываться: а вдруг я действительно смогу дотянуться до собственного дома, потенциально установив связь через весь штат?
Позже в тот же день кто-то из самолёта отправил несколько сообщений на вылете из международного аэропорта Филадельфии. Уже сам факт, что я вижу эти сообщения, был захватывающим, но благодаря магии mesh-сетей это позволило моему узлу временно увидеть сети на ещё большем расстоянии. Я поймал один узел, находившийся более чем в 100 милях (160 км) — в Абердине, штат Мэриленд.
Эти результаты меня окрылили, и мне не терпелось вернуться домой и установить второй узел SenseCAP Solar. Если такие результаты я получаю в глухомани, то уж в плотной городской застройке контактов будет наверняка ещё больше.
Реальность врывается в дом#
Дело в том, что к этому моменту я убедил себя, будто причина отсутствия результатов дома — в относительно скромной антенне, встроенной в Hacker Pager. Теперь, когда у меня был нормальный узел с антенной побольше моего мизинца, я не сомневался, что получу результаты получше. Тем более что на этот раз я разместил радио ещё выше — с армейской стеклопластиковой мачтой из излишков, закреплённой в старом креплении ТВ-антенны на моём трёхэтажном доме, узел оказался примерно в 40 футах (12 м) над землёй.

Мачта поднимает мой узел над крышами соседей, но лишь едва-едва.
Но когда на следующий день после установки домашнего узла я открыл приложение Meshtastic, меня встретило… ничего. Ни единого узла за 24 часа. Это выглядело очень странно на фоне моего опыта на побережье, но я отмахнулся. В конце концов, узлы Meshtastic лишь изредка заявляют о своём присутствии, когда не ведут активную передачу.
Не сдаваясь, я договорился с живущим неподалёку другом установить узел у него. Его дом всего в 1,2 мили (1,9 км) от моего, и с учётом непринуждённого контакта на 6 миль (9 км), который я установил у родителей, это казалось лёгким первым звеном нашей зарождающейся сети.
И всё же, когда мы подняли временный узел у него во дворе, сообщения между ним и моим домом проходили лишь изредка. Хуже того, уровень сигнала, отображаемый в приложении, был отвратительным. Стало ясно, что даже на таком коротком расстоянии для надёжной связи между нашими домами понадобится промежуточный узел.
К этому моменту я чувствовал себя довольно подавленно. Невероятные результаты, которые я получил, используя Meshtastic в глуши, явно дали мне ложное представление о возможностях технологии в городской среде. Что ещё хуже, дальнейшее расследование показало, что мой дом — едва ли не худшее из возможных мест для установки узла.
Во-первых, пока я не удосужился это проверить, я даже не подозревал, что мой дом находится в небольшой ложбине. Согласно онлайн-инструментам для оценки прямой видимости, я по сути на дне чаши. Как будто этого мало, я заметил, что приложение Meshtastic показывает непомерное число битых пакетов. Посоветовавшись с более опытными участниками проекта, я теперь знаю, что это признак зашумлённой радиообстановки. Что, возможно, заодно объясняет исключительно плохой приём, который я получаю, пытаясь полетать на своём FPV-дроне по району, — но это уже история для другого раза.
Более прагматичный подход#
Хотя я был разочарован тем, что не смог повторить дома свои приморские успехи с Meshtastic, я не унываю. Я многое узнал о технологии, особенно о её ограничениях. К тому же решение достаточно простое — нужно больше узлов, и потому началась кампания по вовлечению в проект ближайших друзей и родных. Мы уже нашли ещё одного человека в географически стратегическом месте, готового разместить узел на своей крыше, и, пока я пишу эти строки, третий Seeed SenseCAP Solar уже готов к установке.
В то же время производительность Meshtastic в более сельской местности вдохновила меня продвигаться дальше в том направлении. Я в процессе проектирования собственного узла, специально приспособленного для суровой морской среды, и присмотрел несколько потенциальных мест, где смогу развернуть их весной. Всего с горсткой удачно расположенных узлов, я думаю, должно быть возможно покрыть буквально сотни квадратных миль.
Теперь я веду борьбу на два фронта, но, к счастью, я не один. За месяцы с начала этого проекта я заметил устойчивый рост числа обнаруживаемых узлов. Даже здесь, дома, я наконец начал ловить кое-какую переписку с ближайших узлов. Отрицать нечего — mesh-сеть растёт с каждым днём.
Мой совет всем, кто хочет вникнуть в Meshtastic, прост. Хоть вы в глухомани, хоть застряли посреди мегаполиса — возьмите совместимое железо, установите его как можно выше и ждите. Возможно, это случится не за одну ночь, но рано или поздно ваше устройство пиликнет тем самым первым сообщением — и вот тогда начинается настоящая одержимость.