Pull to refresh

Comments 35

еще бы не было в этом стандарте такого дурдома с протоколами и несовместимостью стеков друг с другом…
Помню прям пригорело, BT LE может не поддерживать BT старых поколений… они тупо выкинули весь стек до него и всё, досвидания эмулятор COM порта… если производитель девайса (например донгла-адаптера) не заморочился поддержкой старых стандартов, а реализовал вожделенные модные BT LE… всё ничего кроме него работать не будет (у вас старое устройство? ха… давайдосвидания)
А то что в природе не существует вменяемых библиотек для работы с ним… так вообще печальбеда, ни документации, ни примеров, нифига. только платные стеки.

p.s. может плохо искал?
BT LE != BT так как задачи разные
LE это вообще отдельная история и отдельный проект, в значительной степени разработанный с нуля, так что неудивительно, что он малосовместим с обычным Bluetooth.

Ну скйчас-то уже есть библиотеки для BLE примерно для всего, под какую платформу не можете найти? Но поначалу да, было все печально.

Ну вот есть либа для Java?
и «примерно для всего»… это далеко даже не для половины протоколов стека, например я вспотел в свое время искать как передавать аудио самостоятельно… в половине библиотек в лучшем случае реализован только эмулятор ком порта ну и BLE ф-ции (кстати тоже зачастую урезанные)
Или HID как сделать через него?

Вроде есть: https://github.com/intel-iot-devkit/tinyb/


Хотя конечно для джавы нужна бы поддержка Bluetooth в самой JVM — иначе как — а это мало кому нужно. Но для всех "нативных" платформ — мобильные, десктопные, встраиваемые — вроде как есть.


Я и не говорю, что весь функционал классического блютуса повторен в BLE — нет, не весь — но тот, что есть, обычно вполне доступен.


HID: вот, например: http://software-dl.ti.com/simplelink/esd/simplelink_cc2640r2_xpack/1.50.00.62/exports/examples/rtos/CC2640R2RC/bleapps/hid_adv_remote/README.html

Вроде есть: github.com/intel-iot-devkit/tinyb

1) там только BT LE
2) last commit 3 years ago
3) даже ссылки в описании на «guide for getting started with TinyB on Java is available here» протухли

есть еще либа bluecove где хотябы работают старые протоколы, но она протухла еще в конце 2000х и рабочий вариант надо собирать из dev ветки вручную

но тот, что есть, обычно вполне доступен.

эмулятора com там нет
HID: вот, например

а теперь тоже самое но для bluetooth версий 1,2,3, устройств ;) я помню много времени убил на курение мануалов… там всё начинается 'так, берете GATT профиль, он есть у всех bt4 устройств и юзаете'… а у меня железка была старенькая совсем и 'а я такого не умею'

Ну дык вы же спрашивали либу для BT LE — вот либа для BT LE.


HID: вы же спрашивали про HID на BT LE?.. Да, для старых устройств без BT LE надо будет по-другому делать. Вот официальная спека для HID для классических устройств: https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=309012.

Ну дык вы же спрашивали либу для BT LE — вот либа для BT LE.

которая уже 3 года не обновляется и врятли будет, ну такое себе
==
спека это хорошо, а вот библиотек для этого всего нет

Это, скорее, проблема экосистемы для Java, чем BLE. Ну не пишет никто на джаве что-либо для Блютуса.


То, что нет либ для Bluetooth Classic для устаревшего функционала, весьма логично..

То, что нет либ для Bluetooth Classic для устаревшего функционала, весьма логично..

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

Да такое впечатление что для него никто не пишет особо то в принципе

жизнь теплится только в андройде, в сдк которого его поддержка встроена
вот о чем я и говорю, каким блин образом часть крайне необходимого и удобного функционала стала depricated?

Ну комитет проголосовал — и стала. Bluetooth Classic умирает, да. Но для всех сервисов (насколько я знаю) есть альтернатива в BLE.


Да такое впечатление что для него никто не пишет особо то в принципе
жизнь теплится только в андройде, в сдк которого его поддержка встроена

Да вроде очень активно используется, IoT там всякое. Поддержка есть также в iOS, Linux, Windows, всякий embedded системах типа Zephyr и Mongoose, — да почти везде.

Но для всех сервисов (насколько я знаю) есть альтернатива в BLE.

RFCOMM вроде бы как оно не умеет
Легко эмулируется

да, проприетарным стеком, как кстати у него с лицензиями?

примеров в сети несть числа

вы привели пример коммерческого продукта, который совершенно не факт что будет работать с любым (не silicon labs) адаптером

так то я давно видел коммерческие стеки, с ними BT работает очень хорошо, но зачастую оно почемуто стоит денег даже для не-разработчика. помню купил (давно, еще в середине 2000х) адаптер и с ним в комплекте шел стек… море настроек, всё отлично работает (даже BT мышка не глючит), через пару лет адаптер сломался (физически), и купив другой… стек закричал «оололо чужое оборудование, введите серийник и обратитесь в отдел продаж»… и отключился… велкам ту стандартные сервисы ОС
да, проприетарным стеком, как кстати у него с лицензиями?

Это же на уровне приложение эмулируется, не стеком. Определяете две характеристики — прием и передача — в одну пишете, из другой читаете. Это пример, а не стек. Кода строк на 50, наверное, и пример показывает, как его написать.


вы привели пример коммерческого продукта, который совершенно не факт что будет работать с любым (не silicon labs) адаптером

ВСЕ современные ОС не нуждаются ни в каких доп стеках для поддержки BLE, у всех все работает из коробки. Эмуляция RFCOMM делается (как сказано выше) поверх этих самых доступных всем API.


Код от Silicon Labs, возможно, нужен, чтобы программировать сам чип и делать устройства на его основе.


Середина 2000-х годов была 15 лет назад :)

ох… я уже устал

вы же понимаете что 'simple template for SPP-like communication. ' это не SPP профиль?

Я писал соединения не между компьютерами, у меня одним из устройств был GPS навигатор который отдает NMEA через SPP, для него всякие эти заклинания типа GATT и прочие BLE — это реально что заклинания

так то понятно что можно через аттрибуты наваять передачу какихто данных, когда обе стороны под моим контролем, но я то хочу (хотел) со сторонними железками работать
так то понятно что можно через аттрибуты наваять передачу какихто данных, когда обе стороны под моим контролем, но я то хочу (хотел) со сторонними железками работать

А, извините, не понял — да, с таким кейсом все плохо, Bluetooth Classic поддержан очень по-разному, но хорошего мало. Для старых приборов мало что изменилось. Но их с каждым годом все меньше...


Собственно, BLE и был (в целом успешной) попыткой упростить разработку приложений для Bluetooth — модель с характеристиками дает ясный API для широкого спектра применений, тогда как на классике надо было либо впихиваться в RFCOMM и изобретать свой бинарный протокол, либо делать свой профиль и свой стек, его поддерживающий.


Ну и сейчас никто не будет делать новые приборы с BT Classic, так что, повторюсь, для новых приборов проблем-то нет.

Да вроде очень активно используется, IoT там всякое.

корпорациями — да, везде всё работает, встроено, заявлено. Но ни на SO, ни на гитхабе ничего на нейти дальше простеньких примеров

Эээ а что конкретно вам нужно "дальше простеньких примеров"? GATT API BLE очень простой, примеры позволяют вам с ним освоиться — а дальше делайте, что вам нужно.


Для сложных вещей типа звука, сети, Mesh примеры от производителей чипов есть.

Ну тем не менее BLE — это очень круто, благодаря нему стало возможно то, что было нереально раньше. Например, дозиметры Atom, имея на борту крошечный аккумулятор и размер чуть больше зажигалки, работают месяцами без зарядки, будучи постоянно связаны с базовым устройством (обычно смартфон), передавая на него каждые 2 секунды намерянные по радиации данные. На старых версиях блютуза пришлось бы ставить большой аккумулятор и заряжать его гораздо чаще.
Это только тот пример, который я знаю. Но наверняка ведь то же самое во всяких гарнитурах и часах, где также очень ограничены возможности питания.
Ради такого прорыва можно потерпеть отказ от старых версий.
Ради такого прорыва можно потерпеть отказ от старых версий.

но либы то где либы, живые, поддерживаемые и без depricated и описание вменяемое

а то 'ну интел для своих iot выпустила опенсорс либу… потом забила на это направление… и теперь это единственная либа в отрасли'

p.s. мне чёт кажется что bt вообще особо никому не нужен из DIY-щиков

Для iOS, Android, Windows, Linux, Zephyr есть масса либ и нативных интерфейсов… Масса примеров и документации.


Может быть, для Java это не так, но что, кто-то пишет на Java не для серверов?..

[Зануда mode] Четверть века это двадцать пять лет. А тут 22 с натяжкой. [/Зануда mode]

Так то, беспроводным технологиям передачи данных не одно тысячелетие.

Ну не знаю, по мне, так как была хрень так и осталась.
Прошло 25 лет — а по прежнему не придумали, как на блютус гарнитуре можно было с микрофоном играть в игрушки. Либо хороший звук в наушниках, но нет микрофона, либо невозможный хрипящий звук с отставанием в 1 секунду в наушниках и хреновый микрофон.
И никак это не победить, приходится к блютус наушникам с микрофоном дополнительно проводной микрофон покупать.

Тоже интересовался этим вопросом. Bluetooth гарнитуры работают в двух режимах — A2DP и HSP. Первый режим поддерживает более высокое качество звука, но только в одностороннем режиме (только наушники), второй — более низкое качество, но с микрофоном. Наверное это связано с тем, что Bluetooth гарнитуры рассчитывались под задачи прослушивания музыки (там микрофон не нужен) и под разговоры по телефону (там можно сэкономить на качестве, все равно максимальная частота в телефонной линии 3,4 кГц). А режим качественной записи звука сочли невостребованным и не стали реализовывать, так как он требовал бы от гарнитуры больших затрат энергии на кодирование звука в высоком качестве.
А есть ли в каких-то гарнитурах режим с микрофоном высокого качества?

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

А почему если был wi-fi решили создать BT?

Столько у вас проживет телефонная гарнитура с вайфаем? и какого размера для неё аккумулятор будет нужен? А теперь не забываем что это аж в 98 году было
upd: прикол, bluetooth появился раньше wi-fi
BT в целом более устойчив к «грязному» эфиру, так как создает карту «хороших» каналов на которых можно работать без проблем. Не панацея, но более устройчиво по сравнению с Wi-Fi.

Опять же, размеры модулей BT меньше чем Wi-Fi.

Насчет потребления, сейчас с анонсом нового Wi-Fi протокола версии 6, потребление у Wi-Fi может стать гораздо меньше со всеми вытекающими последствиями. Опять же, Nordic прикупили команду разработки Wi-Fi…
В четвертой версии значительно увеличен радиус действия — вплоть до 100 метров.

Справедливости ради, адаптеры на дальность до 100м (класс 1) появились с версии BT 1.1

А как лучше поднять между устройствами беспроводную сеть, если хочется увеличить дальность, а скорость не так важна? Например для разговоров на расстоянии нескольких десятков метров без мобильной сети.
Что лучше для этого подойдёт, Bluetooth или Wi-Fi в каком-то режиме?

Bluetooth 3.0. Скорость передачи данных 25 Mbit/s. Расстояние до 100 метров. Вышел в 2009 году.
А тем временем по гарнитуре Bluetooth 5.0, купленной год назад, все так же нельзя слушать музыку и говорить по микрофону, находясь в полуметре от телефона / компьютера, чтобы качество аудио не снижалось до «телефонного».
Sign up to leave a comment.