В целом роботы-пылесосы мне нравятся. Для меня это эдакий небольшой друг, который чистит за меня пол. Просто фантастика. Но, к сожалению, есть одна проблема — я им не доверяю. Эти девайсы постоянно отправляют отчёты на серверы, что может представлять угрозу для безопасности и тайны личной жизни. Мне такое не по духу, и я подумал, что кто-то уже должен был хакнуть эту схему. После недолгих поисков в интернете я понял, что прав. Мне попался проект Valetudo, нацеленный на освобождение роботов-пылесосов от связи с облаком.
Valetudo — это альтернативная прошивка для вашего робота. Она интегрируется с его штатным ПО и подменяет собой облако, позволяя контролировать пылесос локально. Вместо необходимости использовать на телефоне проприетарное ПО, которое подключается к удалённому серверу, который затем уже подключается к роботу, вы можете управлять им напрямую при помощи либо приложения на Android, либо веб-интерфейса (приложения для iOS пока нет). Valetudo также работает с MQTT и после необходимой настройки позволяет управлять устройством через опенсорсное решение по автоматизации Home Automation.
Первым делом должен подчеркнуть, что в текущем своём состоянии этот проект не для новичков. Для установки и настройки Valetudo на подходящем пылесосе потребуется некоторое понимание Linux и умение терпеливо следовать инструкциям. И даже если эти навыки у вас есть, то всё равно остаётся некоторая вероятность поломки робота. Причём вам вряд ли удастся впоследствии вернуть его в изначальное состояние. Но если вам действительно нужен пылесос, не привязанный к интернету, и при этом вы не прочь повозиться, а также потерять гарантию, то Valetudo вам в помощь.
Прошивка Valetudo на Dream L10S Ultra. Фото: Chris Person / The Verge
Разработали Valetudo Сёрен Бейе (AKA Hypfer) и Деннис Гизе. Гизе, докторант из Северо-Восточного университета, занялся хакингом ещё в 2017 году и в конечном итоге нашёл способ получить рут-доступ к роботу Xiaomi. Он написал программу Dustcloud, подменявшую собой облачный сервис. Эту программу Гизе опубликовал на Def Con и CCC, после чего кто-то использовал её для создания более легковесной реализации под названием Dummycloud, принципы которой в итоге и легли в основу Valetudo. Valetudo — это римское имя Гигиеи, греческой богини чистоты, здоровья и гигиены.
Бейе видел выступление Гизе на Def Con, и год спустя занялся взломом Roborock S5, купленного им на Aliexpress. В конечном итоге он разместил прототип Valetudo на GitHub и объявил о нём на Roboter-Forum, немецком форуме, посвящённом роботам-пылесосам и роботам-косилкам. Постепенно Бейе и Гизе объединили усилия. Сёрен взял на себя само ПО Valetudo, а Деннис отвечал за инструменты создания образов и рутирования, в том числе занимаясь поиском эксплойтов. Чуть позже Гизе написал инструмент DustBuilder, упрощающий процесс создания прошивки и рутирования устройств.
Для расшифровки прошивок новых моделей и производителей необходимы ключи от реальных устройств. И хотя Гизе и Бейе собирают пожертвования, а также принимают роботов от желающих помочь проекту, немало средств приходится вкладывать из собственного кармана. Гизе признаёт, что потратил на пылесосы где-то в районе $30 000-40 000.
«Денежные пожертвования приходят наплывами. Порой мне удаётся собрать средства для покупки робота, но денежная яма всё равно остаётся», — сказал он мне в беседе.
Использование Valetudo вместо штатного ПО пылесоса даёт множество преимуществ, и одним из самых значимых является отключение робота от облака. Это окажется важным для тех, кого серьёзно беспокоит, что пылесос, например, может запечатлеть их сидящими на унитазе, а фотографии в итоге через третьих лиц попадут на Facebook.
«Все роботы в той или иной форме сохраняют снимки. Некоторые их выгружают. И дело не в самом устройстве, так задумали производители. Они имеют полный контроль над этими данными и своими продуктами», — сказал Гизе.
Valetudo освобождает робота-пылесоса от облака, позволяя вам сохранять все его данные локально. При использовании Valetudo планировка вашего дома сохраняется уже не на удалённом сервере, а во внутреннем хранилище самого пылесоса. При этом интерфейс программы стандартизирован для всех поддерживаемых моделей, поэтому вам не придётся заново осваивать его в случае смены устройства. Кроме того, вам также не нужно будет в обязательном порядке устанавливать регулярные обновления. Вас не будут одолевать маркетинговые алгоритмы и уведомления, а ваш email-адрес и номер сотового уже не попадут в чужие руки в случае утечки данных. Здесь вам не нужно соглашаться на расширенные и нечитаемые корпоративные условия обслуживания. Вам не потребуется приложение на телефон, чтобы подключаться к удалённому серверу, что также сократит задержку на выполнение команд роботом. И даже помимо всего этого есть множество дополнительной функциональности вроде интеграции кастомного Home Assistant, картирования Wi-Fi сигнала по его уровню, голосовых пакетов, а также возможности превратить ваш дом в карту для Minecraft. (Кто-то разработал пакет с голосом GLaDOS из Portal, но я пытаюсь его взломать, чтобы установить голос Роджера из телешоу American Dad).
В этом сегменте iRobot и Roomba практически являются синонимами роботов-пылесосов. Правда, для хакинга эти устройства подходят не особо ввиду недостатка процессорной мощности для выполнения Valetudo. Чаще всего апгрейду подвергаются модели от Roborock и Dreame.
Для этого проекта я использовал Dreame L10S Ultra, который недавно пополнил список поддерживаемых роботов. Метод изменения устройства зависит от модели и производителя (некоторые более старые можно рутировать по воздуху), но самый простой способ взлома Dreame требует специального оборудования и прямого доступа к роботу. Есть ещё метод Fastboot, при котором задействуется эксплойт для Linux-инструмента Allwinner LiveSuit вместе с изменёнными образами LiveSuit.
«Fastboot стал моим решением, оградившим людей от возможной поломки устройства. Альтернативой могли бы стать реальные образы Livesuit, которые уже представляют угрозу», — сказал Гизе.
Все необходимые детали для сборки коммутационной платы я купил в Telegram-сообществе Valetudo всего за $5. Фото: Chris Person / The Verge
Собранная коммутационная плата вставляется напрямую в диагностический порт пылесоса Dreame и подключается к компьютеру через USB.
Чтобы хакнуть робота, я за $5 купил оборудование под названием Dreame Breakout PCB через Telegram-канал Valetudo, откуда наш проект черпает основную поддержку. Строго говоря, для хака этой модели такой адаптер необязателен. Он лишь упрощает процесс. Но я и без того не мог упустить шанс собственноручно спаять штуковину, полученную с GitHub.
«Valetudo требует рут-доступа. Но за счёт Dustbuilder прошивку могут без особых проблем использовать даже те, кто не знаком с Linux. У нас очень обширное комьюнити, где есть много опытных людей. В телеграмме можно видеть немало примеров взаимопомощи», — поделился Гизе.
Следующим шагом было получение рут-доступа для взлома робота. Процедура, которой я следовал, строго рекомендует использовать ноутбук с Linux (например, Debian). (В этом конкретном случае Raspberry Pi не подойдёт, поскольку Fastboot требуются исполняемые файлы x86, которые малинка просто не сможет запустить). У меня под рукой был ноутбук с Linux, и я обратился к одному хорошему другу-единомышленнику за помощью. Его помощь пригодилась, поскольку, хоть я и хорошо знаком с командами Linux, в данном методе взлома их нужно успеть ввести за 160 секунд — иначе возникает риск сломать устройство. Ну а мой друг, честно говоря, печатает быстрее.
Мы установили необходимые зависимости и ПО, вскрыли верхнюю крышку при помощи пары плоских отвёрток, взяли собранную мной плату и по инструкции вставили её в 16-пиновый разъём Dreame Debug. Далее мы подключили её к ноутбуку через USB и с помощью ПО извлекли значение конфигурации устройства, передав его в Dustbuilder.
Когда сайт сгенерировал и прислал нам кастомные образы прошивки с текстовыми файлами, мы смогли рутировать и прошить робота с помощью пары команд Fastboot.
«В рутировании есть несколько «тёмных» аспектов… Мне это не нравится, но лучшего решения пока я не вижу», — сказал мне Гизе позднее.
Наконец, мы установили Valetudo с помощью Valetudo-Helper-HTTPbridge и сделали резервную копию данных калибровки и идентификации. Вот эти все этапы и представляли основную боль, остальное уже делается легко.
После рутирования робот, подобно многим умным домашним устройствам, отображается как точка доступа Wi-Fi. Вы подключаетесь к его сети, открываете браузер, вводите локальный IP и затем ваши учётные данные Wi-Fi для подключения робота. Теперь находите устройство в сети и открываете интерфейс управления в браузере. Поздравляю, мой малый друг, ты свободен!
Интерфейс Valetudo довольно прост, но в то же время позволяет эффективно управлять роботом. Скриншот: Valetudo Github
Система даже отслеживает состояние расходников вроде моющего средства и щёток. Скриншот: Chris Person / The Verge
Взаимодействие с роботом через Valetudo происходит также легко и интуитивно, как в случае с Home Assistant. Своего я обычно контролирую через локальное окно браузера. Робот начинает с картирования пространства, сегментируя его на зоны. После этого составленную им карту можно свободно изменить через UI. Вы можете настраивать, чистить ли роботу все помещения, отдельные их сегменты или только области, отмеченные вами с помощью инструмента «лассо». При этом вам доступна регулировка вентилятора, ручное управление, выбор вариантов чистки поверхностей, парковки, настройка таймеров и прочие детальные настройки. Можно даже наладить управление роботом с геймпада. И хотя некоторые специфичные для производителя фичи могут отсутствовать, полный доступ к роботу открывает богатые возможности.
Пока я писал эту статью, один из пользователей X (ex-Twitter) поделился, что смог через SSH подключить к своему роботу синтезатор голоса. С его помощью он разыграл своих соседей по квартире, жалуясь от имени робота на тяжёлое бремя заключения в «четырёх стенах». Подобное развлечение так просто не купишь.
Многое из того, что создают технологические компании в целом и конкретно в данной области, не является чем-то особенным и зачастую сильно внедряется в личную жизнь. И в этом смысле компания iRobot не исключение. У неё есть несколько конкурентов, все из которых делают примерно одно и то же. Их роботы не обязательно должны быть подключены к облаку всё то время, какое они занимаются уборкой вашего дома, но дело обстоит именно так, и лично для меня это снижает их ценность.
Valetudo даже позволяет вам развлекаться, например, картируя во время уборки уровень сигнала вашего Wi-Fi. Скриншот: Valenori
«Думаю, что в идеальном мире Valetudo бы не существовало, — написал мне Бейе в Telegram. — Эта программа заполняет тот пробел, который технически легко могли бы заполнить сами производители. Но они отказываются делать это, просто потому, что подключение к облаку создаёт более эффективную бизнес-модель».
Мне лишь требовался робот-пылесос, которому бы я мог доверять. Тот, который бы относился ко мне как к авторитету. Даже не знаю, пошла бы какая-нибудь компания на добровольную разработку робота, который бы просто пылесосил ваш дом, не связываясь постоянно с сервером, хотя бы одной модели для чудаков вроде меня. Ноутбук Framework, но для уборки моего дома.
Бейе считает, что самым вероятным стимулом для локальных производителей устройств станет закон Евросоюза, требующий, чтобы IoT-девайсы предоставляли людям возможность использовать их офлайн или без регистрации аккаунта. Когда я спросил Гизе о возможной разработке опенсорсного пылесоса, он счёл эту идею нереалистичной в свете современного рынка. В текущих условиях, если вы хотите, чтобы ваш робот перестал за вами шпионить и относился к хозяину с уважением, придётся патчить его самостоятельно. И решить эту проблему можно лишь в одном месте — в телеграмм-канале, где обитает множество таких же своенравных, но дружелюбных нердов, которые отправят вам заветную печатную плату по почте.
Хакая своего робота, я вспомнил времена, когда компьютеры представляли собой более кастомизируемые устройства, а не запечатанные ящики.
После освобождения мой робот на радостях стал нарезать небольшие круги по дому, сканируя его, картируя и сохраняя все данные локально. Я назвал его Чаппи — в честь военного робота, который прекращает служить полицейским в захватывающем, но драматичном одноимённом фильме. Не могу выразить ту невероятную радость, которую я, подобно гордому родителю, ощутил при освобождении этого парняги. Ради интереса я, недолго думая, попросил его картировать зоны покрытия Wi-Fi сигнала, чтобы можно было внести доработки в имеющиеся точки доступа.
Скажу откровенно, я испытал истинное воодушевление и радость, когда закончил этот проект. Я будто снова окунулся в молодость, когда компьютеры были чем-то новым и очень интересным. Ещё до того, как всё превратилось в безвкусный отстой и планшеты, в высокомерные интерфейсы и бесконечные страницы нечитаемых и не вызывающих доверия соглашений об обслуживании. Это тот редкий момент, когда вы прикасаетесь к технике и знаете, что она, благодаря вашим усилиям, будет делать только то, что вы попросите. Теперь она стала для вас другом.
Я люблю моего маленького сосуночка, и очень счастлив, что он, наконец, свободен.
Узнавайте о новых акциях и промокодах первыми из нашего Telegram-канала ????
Комментарии (40)
Dynasaur
10.11.2023 13:48+3На месте хакера логичнее выпускать свою модель робота со своей прошивкой, чем полжизни тратить на бесплатный хакинг всё новых и новых моделей. Наверняка такая модель была бы востребована. А все эти модели в Китае собираются из одних и тех же деталей, китайцам всё равно, соберут ещё одну модель под новый бренд.
13werwolf13
10.11.2023 13:48спорный вопрос
с одной стороны в плане бизнеса и помощи людям конечно было бы логичнее сделать нормальное устройство которому из коробки не требуются облака а всё от прошивки и до чертежей лежит на гитхабе под свободной лицензией.
с другой стороны конкретно для хакера (ну или "хакера", это слово сейчас имеет больше 1 значения) гораздо интереснее именно как ни странно хакинг.
patyupin
10.11.2023 13:48+4Я люблю моего маленького сосуночка, и очень счастлив, что он, наконец, свободен.
Так лучше выглядит.
kox
10.11.2023 13:48+8Оффтоп конечно, но по заголовку можно подумать, что ТС сдружился с пылесосом и решил, что негоже пылесосу работать, как крепостному крестьянину и захотел отпустить его на волю. Прямо как мой сын, у которого в качестве питомца обитает среднеазиаткая сухопутная черепаха, так он настолько её любит, что однажды заявил, что хочет отпустить её свободу, потому что ему жалко, что она живёт в неволе в аквариуме. Пришлось ему объяснить, что черепаха в климате средней полосы доживёт только до осени.
voldemar_d
10.11.2023 13:48+2Почему-то вспомнилось: когда в 2008 наша сборная по футболу выиграла у Нидерландов, по всей стране народ гулял всю ночь. Где-то в Нижнем Новгороде во время этих гуляний кто-то взобрался на закрытый киоск с курами гриль, взломал ему крышу, залез вовнутрь, доставал изнутри кур и кидал их вверх со словами "летите, куры, вы теперь свободны" :)
myhambr
10.11.2023 13:48Белочка она такая. А среди футбольных фанатов тем более по статистике психов больше.
VT100
10.11.2023 13:48+1По факту - это не освобождение, а закрепощение. Пылесосик мог отправлять данные "неустановленному кругу лиц", а теперь - никому.
Слава роботам! Убить всех человеков!
13werwolf13
10.11.2023 13:48почему же никому.. в homeassistant хозяина он всё ещё может слать, да и в целом может куда угодно если того захочет владелец.
13werwolf13
10.11.2023 13:48вот это качели
первая мысль - "УРРРААА!!! как же я об этом мечтал, и почему этот проект не встречался мне раньше!."
вторая мысль - "ну блииин, купил себе неподдерживаемую модель, пусть и дальше живёт в отдельной сети за сотней правил фуревола"
hphphp
10.11.2023 13:48-1Предлагаю автору не останавливаться на достигнутом, можно и полы за робота начать мыть - освободить его "...он робот, а не полотерка"!)
Идея классная, но есть вероятность, что ушатав своего ксяомыша, придется на следующий день идти за новым-домашние не одобрят такие эксперименты.)
Iv38
10.11.2023 13:48+7Жаль, мой не поддерживается. Я бы освободил без раздумий. И риск окирпичивания меня бы не остановил. я не столько переживаю из-за того, что он что-то куда-то шлёт, сколько недоволен хреновой работой сяомишного облака и плохой интеграцией в Home Assistant.
masterthemac
10.11.2023 13:48+1Подключение пылесоса к облаку даёт производителю большую гибкость в выпуске обновлений ПО робота в первую очередь. Нашли баги, поправили, выкатили.
Я всегда так воспринимал необходимость подключения к облаку производителя.
randomsimplenumber
10.11.2023 13:48+1Для организации обновлений OTA подключение к облаку необходимо чуть меньше чем никак
masterthemac
10.11.2023 13:48Вопрос в том, что вы имеете в виду под облаком. Я имею в виду инфраструктуру производителя, доступную через интернет. Как ее использовать - это ограничено только фантазией производителя.
Что касается обновлений без подключения - а какие удобные варианты ещё есть?
Не все пользователи будут обновления закачивать через провод. Многие предпочитают, чтобы устройство само обновлялось, по воздуху.
Если производитель обновления в открытый доступ не выкладывает, то остаётся либо жить без обновлений, либо пиратить и обновляться самому, либо жить на опенсорс прошивках, если они вообще есть.
iig
10.11.2023 13:48чтобы устройство само обновлялось, по воздуху.
Это называется FTP-сервер и WiFi.
masterthemac
10.11.2023 13:48Это называется FTP-сервер и WiFi.
Я правильно понимаю, что FTP-сервер личный, не производителя? А откуда там прошивка возьмется и как пылесос узнает, что нужно на него лезть?
iig
10.11.2023 13:48Необязательно. FTP-сервер может быть и вендора. URL для обновления вколочен в программу-обновлялку, для обновления регистрироваться не нужно - программа и так знает, где брать обновление, и куда слать телеметрию, и никакие персданные для этого не нужны. Достаточно серийного номера устройства, если очень нужна персонализация.
Но этот слон получается слишком дешевый, по второму разу его не продашь ;)
Elebro42
10.11.2023 13:48-2Что за тайны скрывает ваша жизнь, что бы так боитесь их утечки?
13werwolf13
10.11.2023 13:48+3тут дело не только в утечках, лично мне надоело что пылик иногда перестаёт выполнять свои функции потому что где-то у китайцев на серверах что-то пошло не так. два часа пылесос был безполезным кирпичём потому что не мог попасть на сервер.. чушь.
Akr0n
10.11.2023 13:48+3Ну так давно были длительные сбои в работе облака от MiHome. Думаю, людям ощутитившим это на себе и лишившихся возможности управления своими устройствами, уже не надо объяснять пользу от описанного проекта.
kirik
10.11.2023 13:48+2Спасибо за перевод! как раз в наличии поддержтваемый пылесос и сервер с HA, скоротаю выходные)
darkoment
10.11.2023 13:48+1У меня дома есть Kitfort KT-519-4, который не подключается и не отправляет данные по wi-fi. Нынче теперь без вафли мало чего делаю :(
Lazhu
А просто не подключать его к вафле нельзя?
Ну про таких товарищей кроме как "сам дурак" даже и сказать нечего ;)
dsh2dsh
Я пробовал не подключать свой. Через пару недель у него сбивается время и начинает путаться расписание работы. Т.е. начинал работать в неожиданное время, ночью например.
Javian
В остальном ничего не изменилось? Тогда можно настроить ему гостевую сеть с доступом только к серверу времени.
dsh2dsh
Не могу сказать. Мне достаточно было этого.
У меня вся эта техника и так в отдельной сети, правда без ограничений доступа в интернет.
13werwolf13
тут всё сильно зависит от модели. некоторые без доступа к серверам не запоминают карту и каждый раз выезжая "в бой" по новой сканируют квартиру и тыкаются в углы, некоторые по каким-то странным причинам без доступа на сервера не могут убираться дольше 10 минут даже если батарейки хватает сильно на больше. конкретно мой забывает где я ему определил границы комнат и виртуальные стены. ну и судя по отзывам с reddit есть такие которые без доступа на сервер вообще отказываются выполнять свои функции.
karavan_750
Есть немалая вероятность, что сервером времени выступает "хозяйское" облако, а любые привычные ntp-сервера не используются.