Разработка приложения-компаньона с Bluetooth для Flipper Zero
Vložit
- čas přidán 16. 08. 2024
- Взял интервью у Никиты Куликова, разработчика open source Android приложения-компаньона для Flipper Zero, которое активно использует Bluetooth Low Energy (BLE)
🔗 Telegram канал "Android Broadcast" ttttt.me/andro...
💰 Поддержать проект на Boosty boosty.to/andr...
🔗 Чат сообщества в Telegram ttttt.me/andro...
🔗 Telegram канал "Kotlin Broadcast" ttttt.me/kotli...
🔗 Flipper Zero Android GitHub github.com/fli...
🔗 Flipper Kickstarter www.kickstarte...
🔗 Купить Flipper Zero amperka.ru/pro...
🔗 Nordic Semiconductor Android BLE Library github.com/Nor...
00:00 Про Flipper Zero
00:34 Тамагочи для исследователей безопасности
05:05 Гаджет для хакера
06:56 Как происходит коммуникация по Bluetooth между устройствам
10:08 Разница между Bluetooth и BLE
12:11 Насколько важен BLE
14:04 Формат данных для передачи
16:42 Безопасность соединения
17:32 Особенности архитектуры приложения с Bluetooth
19:00 Оптимизация
21:47 Почему не обычный Bluetooth
23:02 Развитие Bluetooth
26:32 Передача данных по Bluetooth умерла
29:46 Проблемы на устройствах разных вендоров
35:36 Развитие Bluetooth в Android
45:44 Что стоит улучшить в Bluetooth API
47:47 Как изучить работу с Bluetooth
#androiddev #android #программирование #kotlin #КириллРозов #андроид #AndroidBroadcast - Věda a technologie
🔗 Telegram канал "Android Broadcast" ttttt.me/android_broadcast
💰 Поддержать проект на Boosty boosty.to/androidbroadcast
🔗 Чат сообщества в Telegram ttttt.me/android_broadcast_talks
🔗 Telegram канал "Kotlin Broadcast" ttttt.me/kotlin_broadcast
Вот это ностальгия для меня :) Когда-то начинал свой путь в андроид-разработке с подобного приложения-компаньона с BLE. Ох уж этот гигантский коллбэк, ох уж эти байтовые массивы, адвертайзинг и всё прочее...)
Отличный контент, спасибо, Кирилл!
Наверное, немного не хватило более подробной информации о месте BLE в архитектурном плане. Но Никита упомянул про сервисы. Значит, есть направление, куда копать)))
Видел Никиту в видео несколько раз в различные периоды его карьеры. Очень приятно смотреть, как человек растёт, развивается и продолжает исследовать. Так держать!
Исходники открыты, лучше посмотрите их
А мы, когда перекидывали файлу по ИК-порту, телефоны просто на лавочку клали. Держать 2 часа два телефона в хитром положении довольно неудобно 🤪. Беседа просто отличная! Большое спасибо, очень информативно!
О, крутая тема. Спасибо большое что затронули. Никита - красавчик, раньше часто виделись на офлайн митапах до ковида, не знал что он в флиппере сейчас работает.
Очень много работал с интеграцией мобильных приложений, и через обычный bluetooth (RFCOMM socket и вот это всё) и через BLE (GATT сервисы и иже с ними).
BLE - хороший годный протокол, но апи для работы с ним в андроиде - чистая боль и страдание. Жуткие колбэки к которым невозможно толком подвязаться, необходимость делать простые операции типа подписки на NOTIFY уведомления от gatt характеристики путём низкоуровневых операций, когда в ios это делается в одну строчку. У каждого вендора какие-то свои приколы, типа невозможности отправить или принять данные в первую 1-2 секунды, необходимость выжидать паузу между передачей фреймов. Никакой обратной связи и индикации ошибок, операция может просто не выполниться и никакое исключение не будет выброшено.
Ограничение в 20 байт полезной нагрузки на передаваемый фрейм. Расширение размера пейлоада предусмотрено в протоколе но не работает на практике в большинстве устройств, и вообще не работает в ios, поэтому, для унификации используют фреймы по 20 байт. Заявленная пропускная способность BLE в 2 мбит/сек - чушь полная. Это расчёт для сферической идеальной ситуации в вакууме. В действительности фреймы передаются по радио в специальные окна, которые зависят от многих параметров и буферы с кадрами должны быть подготовлены заранее. На практике это просто не работает в мобилках (которые КМК используют и реализуют так мало возможностей блютус как можно было) и несколько килобайт в секунду, это то что вы реально получите. Загрузка обновления прошивки на устройство по 20 минут и прочие прелести прилагаются.
ИМХО, главная причина по которой все пользуются этими жуткими костылями для постоянного соединения через BLE, это то что только через него можно сделать полноценное приложение компаньон. Android поддерживает и bluetooth и BLE. ios - только BLE, apple имеет готовое апи для работы с bluetooth classic, но не релизит его публично (впрочем можно им воспользоваться на джейлбрейкнутых устройствах), отсюда и весь этот цирк с конями. Хотя для подобных сценариев BLE подходит значительно хуже стандартного сокета.
Безопасность блютус периферии - это вообще атас. Ничего более удивительного в жизни не видел. Да, есть стандартный пейринг, но во-первых, вся работа процесса пейринга скрыта как чёрный ящик, и возможности посмотреть реально передаваемые байты у нас нет, а атаки понижающие защиту с шифрования на ничего с помощью специального оборудования уже всплывали, а во-вторых, логика аутентификации мастер устройства и приём команд только от него НЕ (!) встроена в протокол пейринга, в результате к доброй половине устройств можно просто подклбчиться когда спаренный с ним телефон не в зоне радио и не держит с ним активного соединения, и передавать свои команды. К тому же, для передачи важных данных нельзя доверять защиту встроенному пейрингу, необходим отдельный слой шифрования и подписи данных на прикладном уровне, а такое я видел в жизни ровно один раз - это был платёжный терминал, ко всем остальным устройствам можно было подключиться любому мимокрокодилу и отправить им что угодно (например текст на экран с бегущей строкой, это не шутка, я такое лично видел), исправить это практически невозможно, а производителям периферии в большей части случаев просто пофиг. Только отсутсвие широкого интереса со стороны исследователей к этим проблемам удерживает скандалы которые могут разжечься по этому поводу
В общем, блютус - это весело. Спасибо за отличный выпуск!)
Расширение MTU таки работает, на ios стабильно как часы, на андроид как пойдет, но в большинстве случаев тоже работает. 1мбит/с для BLE реальная скорость, у нас есть прототипы BLE устройства которое выдает такую скорость - на нашем устройстве этого нельзя сделать из-за ограничений со стороны STM. Снифать ble/bluetooth довольно легко, мы такое делали в микроволновке. Защита от MITM тоже встроена в протокол и стандарт, правда реализованная не на всех чипах эмбедеда - мы имеем у себя "trust zone" куда пускаем только запейренные устройства и не доверенную зону, которую могут считывать все.
Хотя по остальному было почитать очень интересно, если вдруг меня увидите где-то, я бы пообщался)
Благодарю, полезный комментарий. тоже сейчас делаю железку с мобильным управлением по БТ. пока придумал при спаривании передавать токен, и потом авторизовываться им после очередного подключения.
Спасибо за обзор, очень интересно =)
3:35 очень много "типа"
По поводу блютуза - работал с почти всем стэком, адвертайзинг, комуникации по бле и по обычному бт в основном через сериал. Как отметил гость, для того чтобы сделать контракт нужно наворачивать свой RPC + протобаф. Вообще это довольно не сложно, просто специфика. Адвертайзинг позволяет делать довольно интересные вещи, мы на нем соц сеть строили
Кстати как универсальный регулировщик для умного дома удобно. А то не хочется ставить "левые" приложения, а тут опенсорс одно приложение и все работает.
С 47:59 я порвался. Отличное интервью
отличный девайс, спасибо вам 👍
Очень интересно, спасибо!!
Кирилл, спасибо за интервью
Контент 🔥
Спасибо за интервью парни!
В новостях пишут, что PayPal заблокировал их счёт с деньгами .... и это те люди, которые оплачивали Flipper (
Это же парень, который у АйТи бороды был , приятно видеть его и тут
О да, только сейчас вспомнил. Выпуск про Kotlin, но говорили про Android. В тот момент от компетентности интервьювера меня бомбануло
@@AndroidBroadcast а что не так говорил))) Вроде сейчас смотрю и не сказал бы что не так. А сам айтиборода специально притворялся что ничего не знает, чтобы я разжевывал очевидные вещи и ребятам не из айти было интересно слушать
Почему на Андроиде всё ещё нет аналога airDrop?
Nearby Share
У всех есть NFC - тоже эмулятор всего
Так и не удалось купить этот девайс. Сайт отправляет в Joom, а там только чехол для этого устройства, защитные плёнки, и еще что-то, но самого устройства нет...
Посмотри на Авито
@@AndroidBroadcast В Беларуси нет Авито, я даже телефон продавца не могу посмотреть, не имея SIM карты, с номером, начинающимся на +7....
Даже, если попрошу кого, то квест с конвертацией денег в RUR, сделает это, и без того не особо дешевое устройство, стоящим как чугунный мост.
Никита, что можете сказать про библиотеку blessed-android и blessed-android-coroutines?
Выглядит хорошо, я бы попробовал. Удивительно что пропустил когда ресерчил ещё год назад
Извините, что вклиниваюсь, но эта blessed-android чем-то концептуально лучше, чем rxBLE?
Пока думаю выбрать от Nordic или blessed
Так а как купить то его ? :) на сайте "We're busy updating the Flipper Shop for you and will be back soon."
Надо. ждать. обещают скоро открыть продажи
На сайте амперки можно оформить предзаказ
У меня смарм спокойно вместо пульта работает. Смарт флагманский если что
Что там у флиппера с пейпалом кстати? Зарплаты платят или уже стоки дают? А с сертификацией в Украине?
Это деньги на будущие партии, не говоря уж о том что это далеко не все деньги. Просто неприятно, но для бизнеса не фатально. Флипперы в Украину уже поедут 12 сентября, вы вроде должны были email получить об этом
по ходу я параноик, ибо сливать ключи доступа на какую-то штуку, которая потом может их слить с привязкой по жпс... можем получить еще один "кто звонит" или базу паролей вифи вашего города, только последствия куда плачевнее
Все опенсорс же
@@LionZXY есть вариант проверить прошивку и приложение? Есть вариант залить свою прошивку? Передает ли девайс инфу по ключам на телефон?
@@ViktorYakunin Конечно, есть вариант - и прошивка и приложение reproducable, собирается из исходников одной командой на любом компьютере
@@LionZXY окей, как вытащить прошивку с устройства, чтобы проверить чексум с той версией, которую собрал из исходников?
@@ViktorYakunin как-то можно через dfu
Настоящая боль!
когда iOS разработчик сделал работу с BLE по подключению к другому девайсу на изи с первого раза и это заняло в три раза меньше времени без доп фиксов🤣
А ты днями штудируешь доку, юзаешь рефлексию, чтобы дотянутся до закрытых методов, накидываешь кучу кастылей, занимаешься работой с потоками и все равно ничего🤷♂️
В такие моменты вежливых слов не подбирается
Я: комментарии к ютубу не могут заставить меня плакать
Комментарии к ютубу:
Почему он не на русском
Обычный органайзер сигналов