Flipper Zero — проект карманного мультитула для хакеров в формфакторе тамагочи, который я разрабатываю с друзьями. Предыдущие посты [1],[2],[3],[4],[5]
В этом выпуске: Системное API, Набор для разработчиков, Улучшения в механике и электронике, Обновления в GPIO, Новая функция в NFC, Удаленный тестовый стенд.
В сентябре мы почти ничего не писали о проекте, и сейчас пришло время объяснить, почему. Мы приостановили всю маркетинговую деятельность, чтобы сосредоточиться на разработке и других задачах: контракты на поставку и производство, юридические вопросы, поиск новых сотрудников и многое другое. Все это отнимало силы настолько, что у нас даже не было времени опубликовать обновление. Теперь мы готовы поделиться с вами новостями.
Системное API
За этот месяц мы разработали архитектуру прошивки и системные API-интерфейсы, абстракции для взаимодействия с железом, управление потоками и многозадачность. Это работа под капотом, которую мы не показываем, но это важная часть разработки.
Наша главная цель при разработке прошивки — сделать ее максимально удобной и понятной для разработчиков, чтобы они могли легко писать свои программы для Flipper Zero. Поэтому после завершения кампании мы выбросили весь грязный код и начали разработку архитектуры с нуля.
За это время мы активно работали над внутренностями: писали бутлоадер, рефакторили код операционной системы, писали драйвера периферии, проектировали API пользовательских приложений. Также рефакторинг затронул систему сборки и зависимостей, переработан код пользовательского интерфейса. Наиболее важные изменения произошли в стеке нашей разработки: мы обновили используемый CMSIS RTOS до второй версии и привели наш код к использованию единого API. Новый API пользовательских приложений сделал большой шаг в сторону беты и мы надеемся открыть его публично в ближайшем будущем.
Улучшения механики и электроники
Новые комплектующие и дизайн корпуса
Корпус сильно изменился по сравнению с первым прототипом. Мы полностью переработали расположение кнопок и компонентов внутри, чтобы Флиппер не разваливался, был прочным и мог выдерживать интенсивное использование.
Мы перенесли модули RFID и NFC на отдельную плату под аккумулятором. Она подключена к материнской плате кабелями FPC.
Новый кнопочный механизм
Новые подпружиненные кнопки
Мы добавили 3 пружины к крестовине для лучшего тактильного отклика.
Как проходят тесты механики кнопок
Сменный аккумулятор
Несъемные аккумуляторы — это бич современных устройств. Мы решили не использовать запаянную батарею и взяли батарею с трехконтактным разъемом, чтобы пользователи могли заменять её самостоятельно. Для большей ремонтопригодности мы планируем продавать отдельные компоненты Флиппера, в том числе и батарею, прямо на сайте.
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 и получили около тысячи откликов. Нескольких разработчиков мы пригласили в полузакрытый репозиторий с прошивкой.
К сожалению, мы поняли, что горизонтальная модель управления нам не подходит, потому что большинство разработчиков, не работающих фулл-тайм, уделяют время проекту, только когда у них есть вдохновение и желание. Таким процессом сложно управлять и прогнозировать результат во времени. Поэтому сейчас мы нанимаем только разработчиков в штат на фулл-тайм. Возможно, когда основная часть низкоуровневого кода будет готова и мы откроем репозиторий, принимать вклад от сообщества будет проще.