Flipper Zero — прогресс за сентябрь

py5i3bttspsri_tolayrfgqdd_4.jpeg
Flipper Zero — проект карманного мультитула для хакеров в формфакторе тамагочи, который я разрабатываю с друзьями. Предыдущие посты [1],[2],[3],[4],[5]

В этом выпуске: Системное API, Набор для разработчиков, Улучшения в механике и электронике, Обновления в GPIO, Новая функция в NFC, Удаленный тестовый стенд.

В сентябре мы почти ничего не писали о проекте, и сейчас пришло время объяснить, почему. Мы приостановили всю маркетинговую деятельность, чтобы сосредоточиться на разработке и других задачах: контракты на поставку и производство, юридические вопросы, поиск новых сотрудников и многое другое. Все это отнимало силы настолько, что у нас даже не было времени опубликовать обновление. Теперь мы готовы поделиться с вами новостями.

Системное API


f8ikzkkygbtsmratzhwyll0ollu.jpeg

За этот месяц мы разработали архитектуру прошивки и системные API-интерфейсы, абстракции для взаимодействия с железом, управление потоками и многозадачность. Это работа под капотом, которую мы не показываем, но это важная часть разработки.

Наша главная цель при разработке прошивки — сделать ее максимально удобной и понятной для разработчиков, чтобы они могли легко писать свои программы для Flipper Zero. Поэтому после завершения кампании мы выбросили весь грязный код и начали разработку архитектуры с нуля.

v_4hhvuz7r6umex0xojavbdtvzs.png

За это время мы активно работали над внутренностями: писали бутлоадер, рефакторили код операционной системы, писали драйвера периферии, проектировали API пользовательских приложений. Также рефакторинг затронул систему сборки и зависимостей, переработан код пользовательского интерфейса. Наиболее важные изменения произошли в стеке нашей разработки: мы обновили используемый CMSIS RTOS до второй версии и привели наш код к использованию единого API. Новый API пользовательских приложений сделал большой шаг в сторону беты и мы надеемся открыть его публично в ближайшем будущем.

Улучшения механики и электроники


mmwjoe1evfcgh770r-oltgsefoy.jpeg
Новые комплектующие и дизайн корпуса

Корпус сильно изменился по сравнению с первым прототипом. Мы полностью переработали расположение кнопок и компонентов внутри, чтобы Флиппер не разваливаясь, был прочным и мог выдерживать интенсивное использование.

Мы перенесли модули RFID и NFC на отдельную плату под аккумулятором. Она подключена к материнской плате кабелями FPC.

Новый кнопочный механизм


cglcq7uz0xccqchhnno3vsc67pq.png
Новые подпружиненные кнопки

Мы добавили 3 пружины к крестовине для лучшего тактильного отклика.

Your browser does not support HTML5 video.


Как проходят тесты механики кнопок

Сменный аккумулятор


3ftc_w_tfnxlka8oejxzcxexevk.png

Несъемные аккумуляторы — это бич современных устройств. Мы решили не использовать запаянную батарею и взяли батарею с трехконтактным разъемом, чтобы пользователи могли поменять батарею самостоятельно. Для большей ремонтопригодности мы планируем продавать отдельные компоненты Флиппера, в том числе и батарею, прямо на сайте.

InfraRed переместился на угол


1p_ne5dygxotkay9jmsyrh7cuze.jpeg

После некоторых тестов мы обнаружили, что предыдущее размещение ИК-порта было не очень удобным: он перекрывался указательным пальцем и внешним модулем. В итоге было решено передвинуть его на угол.

Больше GPIO


mbbunr8k26wl8vsdcluexv8afjm.png
Переделали распиновку GPIO. Теперь есть три контакта заземления вместо одного — ее никогда не бывает слишком много.

Новая фича: USB NFC Reader


mb5zdl7ppktwsiteuyczkzlisos.png

Ресурсоемкие задачи, вроде криптографических атак требуют гигагерцы процессора. Их нельзя запустить напрямую на Флиппере. Для некоторых даже недостаточно raspberry pi, а нужен полноценный мощный десктопный процессор. Например:

  • Атаки на Mifare classic: mfoc (nested), mfcuk (Dark Side)
  • Атака на Mifare Plus: Hard Nested

Для этого мы решили добавить возможность использовать Флиппер в качестве обычного USB NFC-адаптера вместе с библиотекой LibNFC. В итоге все существующие программы, работающие через LibNFC, будут работать сразу из коробки без модификаций. В этом режиме все команды с ПК будут проксироваться непосредственно на NFC-чип ST25R3916 через USB-интерфейс.

Главная проблема этой задачи в том, что библиотека LibNFC жестко прибита гвоздями к чипам NXP PN5xx, и в новом драйвере придется по сути эмулировать поведение чипа PN53ххх, но это не так страшно.

Flipper Zero Девкит


bl0eorszzlksasyzivdnsnqrd84.png

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

Flipper Lab


e3_hmtl_imuvgyhi1itypklkrja.png
За кулисами Flipper Lab

Пока пишется код, его нужно постоянно тестировать. Задача осложняется тем, что тесты нужно выполнять на реальном железе и взаимодействовать с реальным миром. Для этого был сделан удаленный тестовый стенд, который интегрируется с CI-скриптами через github workflow и после каждого коммита в прошивку, она автоматически заливается в девайс и выполняются тесты, по ходу выполнения девайс выплевывает результат в UART и можно понять какие тесты как завершились. Пока это работает криво, но в дальнейшем мы будем проверять так все функции: принимать/отправлять радио, считывать/записывать NFC карты, передавать/принимать ИК-сигнал и т.д.

Это такой же dev kit для разработчиков. Физические подключены через реле, что позволяет управлять устройством удаленно. Изображение с экрана снимается камерой и транслируется на сайте в режиме реального времени. Через веб-морду можно залить прошивку вручную и потыкать на кнопки, если даже у разработчика нет устройства под рукой.

ldl0uljixbducbexl1xuyeysr5s.png
Макет интерфейса испытательного удаленного стенда Flipper Zero

Лаборатория в настоящее время находится на стадии альфа версии, но позже мы откроем ее публично, чтобы любой разработчик мог:

  • Загрузить собственную прошивку или плагин на настоящий образец Flipper Zero
  • Просматривать логи в режиме реального времени и даже отправлять сообщения UART на Flipper
  • Нажимайть все кнопки удаленно
  • Тестировать периферийные устройства с помощью физических карт RFID и тегов iButton

Live-апдейты в Дискорде


uxatp8mncqn2tf11e7leyhopxys.png

На нашем сервере в дискорде мы добавили прямую трансляцию обновлений внутри проекта. Вы можете узнать, как идут дела у разработчиков в режиме реального времени с новым каналом #updates, видеть какие коммиты отправляют в репозиторий.

Наш сервер Discord превысил 4000 участников!

Присоединяйтесь к нашему серверу Discord, чтобы:


  • Общаться с нашими инженерами и бекерами
  • Следить за ходом разработки в реальном времени с каналом #updates
  • Обсудить варианты использования Flipper Zero
  • Познакомьться с тысячами гиков
  • Получить доступ к секретному каналу только для спонсоров (свяжитесь с @Backers Bot в личных сообщениях, чтобы получить особую роль)

— Алло, мы ищем таланты!

hzkqpvfjvsm-nvghdqexsrholsu.png

Два месяца назад мы запустили программу Flipper Developer Program и получили около тысячи откликов. Несколько разработчиков мы пригласили в полузакрытый репозиторий с прошивкой.

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

Все открытые вакансии мы публикуем здесь: flipperdevices.com/jobs

© Habrahabr.ru