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

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

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


Системное API




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

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



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

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



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

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

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

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



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

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


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

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




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

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




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

Больше GPIO



Переделали распиновку GPIO. Добавилось ещё два контакта GND — их много не бывает.

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




Ресурсоемкие задачи вроде криптографических атак нельзя выполнить напрямую на Флиппере. Для некоторых недостаточно даже 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 Девкит




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

Flipper Lab



За кулисами Flipper Lab

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

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


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

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

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


Live-апдейты в Discord




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

Сейчас на сервере более 6 тысяч участников!

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


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


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





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

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

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