Хабрахабр

[Перевод] Кнопка Amazon Dash: ретроспектива

Производство? Интернет вещей произведёт революцию везде! Перезагрузка кофемашин? Выгул собак? Питание? Вождение автомобиля? Маркетинг утверждает, что любая часть нашей жизни будет улучшена при помощи IoT. Засуньте туда датчик! Потому, что при помощи простого датчика и симфонии пустопорожней корпоративной болтовни про машинное обучение революция сродни явлению iPhone вот-вот произойдёт! Почему? И вот он: Amazon Dash, где-то 2014-й год.

перев.], которые должны были вешать его на кухне, например, при помощи магнита на холодильник. Первым продуктом семейства Dash было устройство для сканирования штрих-кода Amazon Dash Wand – его бесплатно раздавали клиентам Amazon Fresh [службы доставки еды / прим. Подозреваю, что эти устройства были довольно дорогими и достаточно сложными, чтобы их можно было использовать так, как хотела Amazon (поэтому их запуск был настолько ограниченным). Когда у клиента Fresh заканчивалось молоко, он мог просканировать пакет перед тем, как выбросить, добавив тем самым его в корзину покупок. Помните кнопку «купить сейчас за 1 клик»?
Целью Amazon было позволить потенциальным клиентам делать заказы с как можно меньшими усилиями, чтобы те в результате покупали как можно больше.

Однако Amazon возложила свои надежды на новую штуковину. И этот Wand в итоге обновили до устройства, содержащего Алексу, активируемую кнопочкой (оставив сканер штрих-кодов и магнитик на холодильник), которое доступно всем. Эта кнопка должна была стать кнопкой «покупки в 1 клик» в физическом мире. В середине 2015 года Amazon представила «сервис пополнения запасов» Dash Replenishment Service с представляющим его продуктом – кнопкой Dash Button. Слишком много шагов, слишком много возможностей сойти с коммерческих американских горок Безоса. Чтобы использовать сканер штрихкодов Wand, пользователю нужно было вспомнить, что он где-то лежит, найти штрихкод, отсканировать его, вспомнить о необходимости открыть свою корзину и заказать товар. Нажмите кнопку, получите отмеченный на ней продукт по сохранённому адресу. Кнопка Dash Button работала проще! В рекламных роликах счастливые семьи размещали их на стиральных машинах для покупки Tide, на кухонных шкафах для покупки бумажных полотенец. Каждую кнопку нужно было покупать (за $5 с купоном на скидку в $5) с привязкой к определённому бренду, а потом в онлайне настроить на покупку определённого продукта при нажатии. Довольно хитроумно – это действительно кнопка «купить сейчас за 1 клик» для физического мира.

У обоих был один и тот же интерфейс, и работали они, по сути, одинаково. У кнопок Dash было два варианта. И ещё у него был WiFi передатчик. У устройства была одна кнопка (ПО может распознавать несколько последовательностей нажатий), один RGB светодиод и микрофон (нет, оно не слушало ваши разговоры, но мы к этому ещё вернёмся). У второй версии (которую втихую выпустили в 2016) добавилось соединение по Bluetooth и полностью поменялась начинка, хотя пользователю этого не было заметно.

В феврале 2019 года Amazon прекратила продажу Dash Buttons.

Но мы пишем про железки, а не про бизнес

Кнопки Dash были прикольным хаком! В мире, знакомом с ESP8266, железки вроде Dash Button считаются стандартным проектом начального уровня для автоматизации дома. Но в 2015, когда кнопки только вышли, ESP ещё только начинала свой путь. До того времени WiFi подразумевал необычное устройство типа Electric Imp или интегральной схемы с надписью Texas. Рынок дешёвых устройств с подключением к интернету был совсем другим, и более дорогим.

Вероятно, Amazon не было смысла производить такую кнопку, если бы она стоила дороже пары долларов, поэтому при её разработке компания провернула пару трюков, чтобы снизить стоимость, не снижая потребительские качества.

Классические методы соединения с домашней сетью WiFi устройств – это кошмар с точки зрения пользователя. Прикольные хаки начинаются с подключения. И это сработает, только если ваш телефон не прибьёт приложение в фоне или не уронит WiFi сеть из-за отсутствия интернет-соединения! Загрузите устройство впервые, дождитесь, пока оно сообразит, что с сетью нет связи, зайдите в режим точки доступа, откройте приложение, вручную откройте страницу настроек и соединитесь с новой WiFi-сетью, вернитесь в приложение, введите логин/пароль, бесконечно долго подождите, когда оно как-нибудь сообщит вам об успехе. Разработчики Android в различные моменты, возможно, могли заставить переключить сеть WiFi без вмешательства пользователя, но даже в этом случае опыт переключения между платформами был ужасно непоследовательным.

Bluetooth работает неплохо, но ему нужен ещё один передатчик. Что же делать хакеру? Устройства можно запрограммировать заранее, как делает Amazon с новыми Kindle, введя туда данные из учётной записи покупателя, но это сложный производственный процесс, и всё равно нужна какая-то схема для смены сети. Упомянутый Electric Imp использовал фотоэлемент, к которому нужно было прислонять экран телефона – тот мигал в определённой последовательности, кодирующей доступ. Но вместо всех этих обходных манёвров Amazon решила использовать метод, который я встречал только в анекдотах: акустическое спаривание.


Кнопка Dash Button V1

Почему 20 кГц, а не выше? В обоих поколениях был микрофон, воспринимавший логин/пароль пользовательской сети через звуки, полученные частотной манипуляцией, на частоте чуть ниже 20 кГц. Эти требования так легко выполнить, что Amazon могла разработать процедуру спаривания так, чтобы она сработала не только в рамках собственного мобильного приложения – люди могли использовать что угодно, от Chromebook с браузером до другого устройства от Amazon. Метод акустического спаривания должен был работать везде, где есть микрофон и спикер. Учитывая всё это, частота должна была быть такой, чтобы её можно было всегда точно воспроизвести – то есть, в диапазоне, доступном человеческому уху. Мне неизвестны случаи настройки этих кнопок через расположенное неподалёку Amazon Echo, однако технически это было бы возможно, а выглядело бы как волшебство. По ссылке можно ознакомиться с подробностями разбора этого протокола.


Внутренности V1

Не какая-то «промышленная» батарея под другим брендом, а простая потребительская батарейка, без изменения бренда, просто припаянная к контактам. Заглядывая внутрь устройства, мы сталкиваемся с неожиданностью: батарейка АА! Ну, видимо, в Amazon решили, что батарейка-таблетка не обеспечит достаточно долгой продолжительности работы, возможно, из-за потребления энергии при переподключении по WiFi, а более крупная таблетка будет гораздо дороже обычной батарейки. Шта? И хотя батарейку неплохо держит корпус (чёрный овал слева), она, к сожалению, припаяна к контактам, поэтому всю сборку придётся менять, когда батарейка сядет, примерно после тысячи нажатий.

Выглядит всё максимально просто. Что насчёт остального корпуса? Формы всех пластиковых компонентов подобраны так, чтобы их было легко отливать. Винты крепят плату к верхней части корпуса, всё остальное приклеено или приварено ультразвуком. В целом устройство выглядит простым (и дешёвым) в изготовлении, что не так уж удивительно.

Взламываемость

Что можно взломать в кнопке Dash Button? Если люди начнут выкидывать эти удивительно простые устройства, сможем ли мы дать им вторую жизнь?

Между нажатиями кнопка отключается, чтобы экономить энергию. Возможно, первым хаком было использование этих кнопок не по назначению вообще безо всяких взломов как ПО, так и железа. При нажатии кнопки устройство просыпается, включает светодиод, давая понять, что живо, соединяется с WiFi, вызывает API Amazon, потом отваливается от сети и выключает светодиод. В долгосрочной перспективе даже редкие запросы для поддержания связи с WiFi значительно потребляют энергию: а кнопки Dash должны работать годами, поэтому они не остаются постоянно подключёнными. При соединении с сетью оно в обязательном порядке проходит через несколько шагов настроек, включая трансляцию запроса ARP probe, чтобы убедиться, что ни у кого больше нет такого MAC-адреса.

И из-за особенного стиля работы кнопки Dash, если мы видим запрос ARP probe, то мы знаем, что устройство только что проснулось, что означает, что кнопку только что нажали. Предприимчивые хакеры сообразили, что если отслеживать трафик LAN, эти запросы можно поймать, и в них войдёт уникальный MAC-адрес устройства. перев.]. Дальше с этим можно делать всё, что угодно [сделав так, чтобы кнопка ничего не заказывала / прим. И даже когда бэкенд Amazon когда-нибудь отключится, кнопки работать не перестанут. Впервые о таком методе я узнал из блога Теда.


Плата V1

У этих устройств и так есть процессоры, поэтому пусть они сами говорят то, что нужно. Отлов запросов ARP работает, однако мне он кажется не очень удобным. Неудивительно, что люди уже разобрались с платой, и расписали, что куда идёт. Что насчёт программирования кнопок Dash? На версии 2 стоят Atmel Microchip ATSAMG55 и Atmel Microchip ATWINC1500B, с передатчиком Cypress CYBL10563-68FNXI Bluetooth. Ни у одной из версий кнопки нет никаких особенно редких запчастей: у версии 1 стоит модуль Broadcom Cypress BCM943362WCD4 семейства WICED, что, по сути, есть просто STM32F205, скленный с передатчиком – для него есть набор разработчика. Это доступные всем процессоры ARM с подробной документацией.

Легко найти обучающие материалы по перепрограммированию устройств и миганию светодиодами или отслеживанию нажатий кнопок, но все материалы, найденные мною, заканчиваются на самом интересном месте: «а теперь надо разобраться с WiFi». И, несмотря на доступность железа и кнопок, никто, судя по всему, не продвинулся на этом фронте сколь-нибудь далеко. Так что да, их можно перепрограммировать в некие странные тестовые устройства, но пока нам ещё лишь предстоит увидеть, как кто-нибудь сумеет полностью подчинить себе эту кнопку, чтобы получить доступ ко всем скрытым в ней богатым возможностям.

Что дальше?

В конце позвольте пару слов про Amazon. Небольшие проекты по производству устройств типа Dash Button и Wand – мои любимые типы корпоративных экспериментов. Мне всегда нравится, когда компания пытается произвести необычное устройство. Это гораздо лучше, чем убивать эти проекты ещё до того, как они выйдут за пределы лаборатории.

Пусть у них ограниченный срок службы, однако никакие отметки на них не помешают выкинуть их в мусор после того, как они прекратят работать. С другой стороны, Dash Button – довольно расточительная штука. У устройства очевидно есть внутри батарейка, однако поскольку на корпусе нет чётких указаний на этот счёт, пользователи могут и не догадаться, что его нужно отправлять туда, где перерабатывают батарейки. А что ещё Amazon ожидает от клиентов? Использование обычной распространённой батарейки – хитроумная идея, однако за ней должен последовать очевидный способ её извлечения, что дало бы возможность использовать продукт без ограничений по времени, и лучше отнестись к экологии.

Когда они начнут выходить из строя, мы сможем прервать поток электронного мусора, собирая их и переделывая под другие цели. Плюсом будет то, что скоро мы сможем собирать эти кнопки мешками!

Один – найти держатель для батарейки, хорошо подходящий по размеру для платы, чтобы батарейки можно было менять, а также придумать подходящий для распечатки корпус, в который всё это влезет. После того, как мы начнём наблюдать волну проектов с этими кнопками, у нас будут два интересных пути изучения этих устройств. Тогда кнопка Dash сможет вырваться из своих оков конечного срока службы и работать так долго, как мы захотим.

По моему опыту, WiFi под брендом WICED от Broadcom бывает довольно сложным, но WINC1500 не кажется чем-то экзотическим. Второй путь очевиден – заставить работать WiFi! Можно ли в нём разобраться? Как было отмечено в 2016 году, этот модуль использовался в Arduino MKR1000 и WiFi Shield 101, а также в нескольких платах от Adafruit. Надеемся, что да!

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»