Привет!
Моя работа – разработка продуктов в Yota Devices. Мы выпустили новый LTE-роутер, в котором отшлифовали всё до мелочей.
Осторожно, под катом трафик — много фотографий
Думаю, вам будет интересно узнать, как шла разработка. Начну с описания устройства. Во-первых, это роутер, который принимает сигнал 4G, 3G или 2G и раздаёт Wi-Fi. Во-вторых, Ruby (так называется устройство) может вставляться в USB и работать как привычный LTE-модем. В-третьих, роутер может работать и без внешнего питания. Внутри есть аккумулятор, который позволяет работать в машине, в парке, на даче или просто раздавать интернет из рюкзака при прогулке.
Раньше именно батарея была самым проблемным модулем LTE-модемов и роутеров прошлого поколения. Обычно заряда хватало на 2-3 часа, что совершенно невыносимо: большинство современных ноутбуков, все планшеты и телефоны работают от аккумулятора гораздо дольше. Поэтому основной и самой сложной нашей задачей стало оптимизировать питание нового устройства.
Но я немного забегаю вперёд. К вопросу питания вернусь чуть позже, а пока давайте посмотрим как выглядит Ruby.
На картинке новое устройство – Ruby – и ещё один сегодняшний релиз
Поставляется роутер в прочной жесткой коробке с кабелем и инструкцией. Порядок укладки соответствует порядку использования: сначала само устройство, чтобы взять и подключить. Остальное в большинстве случаев уже и не нужно. Но, если вдруг захочется что-нибудь почитать, то следующим слоем идет инструкция. Под ней кабель — на случай, если нужно будет использовать micro-USB.
Вот так устройство выглядит воткнутым в USB. Сейчас 0 подключений сети, а зарядка только началась:
USB-коннектор наш фирменный, уходящий в корпус:
Вот так он выглядит на собранном устройстве:
А вот так (ниже) при открытом корпусе. Мы очень любим прорабатывать все мелочи, поэтому у коннектора появилось несколько особенностей. Во-первых, он скрывает отсек для SIM-карты. Во-вторых, коннектор сделан из прочного металла, поэтому выломать его голыми руками не получится, понадобятся большие плоскогубцы и минут пять работы. Когда мы разрабатывали конструкцию, мы представляли себе, что кому-то понравится играть с разъёмом, открывая и закрывая его раз двадцать в день на протяжении 3 лет. В-третьих, у коннектора есть небольшие выступы на краях, которые не дадут воткнуть устройство в USB-порт вверх ногами. И, в-четвёртых, планка пластика сверху защищает от случайного заземления на корпус (случай редкий, но реальный).
Если разъём полностью закрыть, то откроется micro-USB-вход, куда тоже можно подключить кабель для зарядки или доступа к модему напрямую.
С торца дисплей с индикацией (показывает заряд, количество подключений и тип сети) плюс трёхпозиционный переключатель.
В среднем положении устройство в аналоге гибридного сна – «выключено» для пользователя. Сдвигаем влево – получаем одну Wi-Fi сеть с установленным ранее паролем, всё как на привычных роутерах. При этом видно синюю точку – это не только напоминалка о режиме, но и reset.
Сдвигаем направо – устройство создаёт (или продолжает поддерживать) приватную сеть и открывает ещё одну без пароля (с другим SSID) для ваших друз.jpg"/>
Теперь полезем внутрь.
Корпус, который мы сейчас уже полностью снимем, из прочного пластика, поверх которого – UV-покрытие для защиты от мелких царапин. Вот устройство без корпуса:
А вот отдельно корпус и торцевая планка. Над ней тоже пришлось поработать. Сначала мы хотели использовать для планки прочный конструкционный пластик. Но на прототипе убедились, что устройство не получается собрать так, чтобы оно сразу создавало ощущение целостности в руках. Получалось, как с некоторыми телефонами из Китая — пробуете скрутить, а оно поскрипывает. Поэтому мы заменили материалы, и сейчас планка сделана из полиамида со стекловолокном. Встаёт на место как влитая.
Переключатель тоже очень хитро устроен внутри. Мы долго подбирали схему, которая точно выдержит тысячи переключений. Получилось.
Теперь вернёмся к разобранному устройству. Вот отсек для SIM-карты:
Сбоку – антенны. Кстати, разработка антенн — это отдельная история. В Ruby мы продумали их самостоятельно, опираясь на опыт лучших отечественных радиотехников и инженеров нашего финского офиса, которые раньше делали радиоэлектронику для телефонов по всему миру. В общем, приём и передача теперь на порядок увереннее. Да, устройство одинаково хорошо работает с сигналом при любом положении в пространстве: диаграмма направленности практически ровная.
Антенны разных диапазонов в разных частях корпуса. Ruby умеет делать вот так, выбирая самый быстрый из доступных канал.jpg"/>
При переключении между 4G и 3G/2G индикатор на крышке градиентом меняет цвет, что смотрится очень красиво. На фото ниже видно светодиоды, которые освещают индикатор на крышке и их подключение поверх аккумулятора. Сами светодиоды за чёрными плёнками:
А вот так выглядит «дышащий» индика.jpg"/>
Параметры
Размеры 97 x 66 x 13 миллиметров.
Чипсет Qualcomm MDM 9215.
Индикация — сегментированный E-Ink и lightguide на фронтальной стороне устройства.
Связь: Wi-Fi – 802.11b/g/n, LTE: 800 (B20), 1800 (B3), 2100 (B1), 2600 FDD (B7 — в РФ только B7/B20) и 2600 TDD (B38), UMTS: 900/2100 Mhz, GSM: QuadBand (800/900/1800/1900MHz).
Аккумулятор (2100 mAh) — 10 часов потокового видео, 20 часов обычного серфинга, 60 часов ожидания или 39 дней аналога гибридного сна.
Тесты батареи
Часто производители заявляют показатели работы от аккумулятора по синтетическим тестам в лаборатории, где всё идеально. Нас же интересовала реальная жизнь, поэтому мы провели испытания в обычном офисе в Москве:
— Первый раунд.
Мы взяли iPhone 5, выставили яркость экрана на 70%, отключили Bluetooth, но оставили включенными 3G и Wi-Fi. Полностью зарядили и стабилизировали и Ruby и iPhone, затем одновременно сняли их с зарядки. Включили Ruby, iPhone соединился с ним по Wi-Fi, а затем мы запустили HD-видео с Youtube и стали ждать. Первым через 8 часов марафона сдался смартфон, у Ruby на тот момент осталось ещё 12% заряда, которого хватило ещё на 2 часа работы.
Посмотрев логи, мы поняли, что загрузка роутера была неполная, потому что видео умеет кэшироваться, что позволяет быстро загружать большие фрагменты, а затем несколько минут фактически не пользоваться внешним каналом. Это стандартный профиль потребления видео, но нам хотелось посмотреть на поведение роутера именно с высокой нагрузкой. Поэтому мы приступили ко второму раунду.
— Второй раунд.
Мы взяли live-трансляцию в HD (она требует постоянного соединения и сильно грузит сеть) и стали смотреть её на MacBook Pro с диагональю экрана 13 дюймов. Ноутбук сдался через три с половиной часа, а у роутера ещё оставалось 53% заряда. Мы подключили MacBook к розетке и «добили» заряд роутера — его хватило на 8 часов.
— Третий раунд.
Следующим на ринг вышел Huawei E5776. К нему и к Ruby мы подключали два айфона, которые сначала звонили через Скайп друг на друга, а потом смотрели карты, Facebook, браузили и так далее. В общем, делали то, что обычно делают люди в кафе или машине. Huawei закончил работу через 10 часов 30 минут, использовав свои 3000 миллиампер. Ruby продержался 15 часов, используя 2100 миллиампер — это очень наглядно показывает результат оптимизации, описанной ниже: можно сказать, что Huawei потреблял энергию на 70% менее рационально.
Что же мы сделали с питанием?
Прошлись по всем уровням архитектуры:
- На корпусе есть экран. Нужно было снизить его потребление питания до минимума. Поэтому мы поставили сегментированный E-ink (чем-то отдалённо напоминающий своего предка в советской игре «Ну погоди!»), который в сравнении с другими модулями использовал так мало энергии, что её расходом можно было просто пренебречь. Аналогично мы поработали со всеми светодиодами, выбирая наиболее экономичные по потреблению варианты.
- Затем нужно было убедиться, что энергопотребление нормально настроено. Мы используем чип Qualcomm MDM 9215 с Linux собственной сборки, потому что кроме множества модификаций непосредственно по работе с сетью, в нем ещё и очень продуманное управление питанием.
- Теперь остались самые главные потребители — радиомодули. Чтобы снизить потребление питания от них, нужно убедиться, что когда сеть не используется, они отключаются. Мы разработали и запатентовали ряд решений, которые позволяют сохранять соединение, но почти полностью «усыплять» железо. И это дало огромный выигрыш в энергосбережении. Насколько я знаю, аналогов такому решению пока нет, и это реальный повод для гордости за отечественных разработчиков. Итог — на уровне драйвера с питанием тоже разобрались.
- На уровне пользователя мы решили сделать ещё одну важную вещь. При любом подключении Ruby к USB-порту начинается зарядка. Это значит, что если вы используете устройство дома или в офисе с подключенным питанием, к моменту выхода на улицу оно будет полностью заряжено.
При этом важна скорость заряда. Иногда я просыпаюсь и уже через 10-15 минут выбегаю из дома, успев только почистить зубы. Поэтому очень хотелось, чтобы разряженный вечером роутер не стал неприятным сюрпризом с утра (как это иногда бывает с телефоном). Для этого кроме качественного аккумулятора мы поставили в Ruby ещё и умный контроллер, который обычно используется только в дорогих смартфонах.
Дело в том, что обычно устройство при зарядке через USB берёт 500 миллиампер, и даже если источник готов дать больше, контроллер не повышает ток заряда. У нас же схема иная: заряд начинается на 450 мА и делается замер напряжения. Затем контроллер повышает ток заряда на 100 мА и снова измеряет напряжение. В тот момент, когда напряжение падает (например, стандартной 1А зарядке это случается при переходе от 900 мА до 950 мА), контроллер откатывается к последнему шагу со стабильным напряжением и останавливается на нём. В результате от ноутбука Ruby заряжается до 70% за 1 час. Для меня как для пользователя это значит, что за те 10-15 минут после подъёма, в течение которых Ruby подключен к USB, я получаю более часа автономной работы.
Еще я упоминал выше, что устройство «засыпает» когда соединение с внешним каналом (например, 4G) есть, но в сети Wi-Fi нет пользователей. Так вот, в этом режиме Ruby спокойно продолжает рассылать beacon'ы, даёт подключиться к сети — и при этом работает на полном аккумуляторе до пары дней. Если устройство выключить, оно перейдёт в аналог hibernate — отключится всё радио, процессор уйдёт в сон, но память продолжит питаться. Нужно это, чтобы устройство включалось и загружалось за 2-3 секунды, а не за пару минут, как разные LTE-роутеры раньше. В таком режиме устройство работает без подзарядки до 39 дней. Потом при низком заряде контроллер выключает питание и роутер с фактическими 2-3% (на индикации — 0% заряда) продолжает лежать ещё около года-двух без глубокого разряда.
Вообще, тут бы нам пора было остановиться, но мы хотели сделать действительно хорошее устройство. И на этой стадии нас стал мучить вот такой вопрос: а что, если пользователь всё-таки добьётся глубокого разряда? Понятно, что наш умный контроллер умеет очень точно снимать показания с батареи (ведь нам нужен индикатор заряда в процентах), умеет отключать устройство, если аккумулятор близится к глубокому разряду, умеет следить за тем, чтобы следующее включение произошло только при внешнем питании. Но ведь даже все это не исключает вероятность того, что глубокий разряд всё равно может случиться. Устройство можно забыть где-нибудь на полке на пару месяцев, взять с собой в полярную экспедицию или <sить с ним ядерную войну. И я бы не хотел, чтобы моё устройство подвело меня даже в такой ситуации. Поэтому у контроллера аккумулятора есть ещё один аварийный режим: когда он определяет глубокий разряд, то при первом подключении питания начинает подавать trickle charge — минимальный ток зарядки, позволяющий «вытянуть» и реанимировать аккумулятор. То есть роутером можно пользоваться и дальше.
Разумеется, нам было важно не только сделать так, чтобы Ruby долго работал, но и чтобы его было просто и удобно заряжать. Для этого мы сразу избавились от всех возможных зарядок — устройство просто включается в стандартный USB или же, если вдруг он занят, или вы не хотите держать роутер на столе, присоединяется по micro-USB.
Когда на устройство подаётся питание, оно переходит в режим «я дома» и раздаёт Wi-Fi примерно на 60 метров по прямой. Когда внешнее питание отключается, устройство раздаёт Wi-Fi примерно на 5-10 метров по прямой. Это, кстати, тоже часть управления питанием.
Младший брат
Тут всё просто, ещё мы выпустили традиционный модем + Wi-Fi, только в новой сборке и с новой антенной.
А вот ссылка на Ruby и новый модем на сайте Yota. Коммерческое название роутера у этого оператора – Yota Many.
С удовольствием отвечу на ваши вопросы и, если интересно, позже расскажу, как мы делали антенны для новых устройств — это целый отдельный IT-детектив.
Автор: YotaDevices