вторник, 10 июня 2014 г.

Bluetooth и драйвера

Статья старая, после появления Windows 7 и пакетов типа DRP.SU почти неактуальна, но написана интересно.

Источник: http://forum.ixbt.com/topic.cgi?id=58:122

Посвящается счастливым (пока несчастным?) обладателям bluetooth-донглов, - ноутбуков и иже с ними... Попробуем заставить "эту штуку" работать.

ЧТО УМЕЕТ БЛЮТУСМного чего. Все эти "умелки", на языке блютуса, называются profile/профиль. Что бы было понятнее, можно вообразить, будто блютус, это некая панелька, на которой расположено множество гнёзд. Причём все эти "гнёзда" разные и для каждого нужен свой, уникальный провод, который не подходит к соседним "гнёздам". Одно такое "гнездо" и будет тем самым профилем, а наша воображаемая "панелька с гнёздами" - технологией bluetooth.
Например, что бы подключить к ноутбуку мобильник и выйти в интернет, необходимо наличие:
- профиля DUN в ноутбуке
- профиля DUN в мобильнике
Если наличиствует и первое, и второе, то блютус будет тем виртуальным "проводком", который соединит "гнездо" DUN в ноутбуке с "гнездом" DUN в мобильнике. Если хотя бы с одной стороны вместо "гнезда" будет унылая "заглушка", то очевидно, что наш "проводок" просто некуда будет воткнуть.

ДРАЙВЕР ДЛЯ БЛЮТУСА
Формально говоря, нет никакого драйвера для блютуса. Драйвер требуется конкретной железке. В компьютере, поддержка блютус реализована в виде блютус-стека. И вот там, в недрах стека, имеются драйверы для "десятков сотен тысяч" различных устройств-железок.
Хотя в реальности, всё много проще. Не так уж много действительно разных бт-устройств. Существует пяток-десяток чипсетов, на базе которых делаются все эти красненькие, синенькие, встроеные и внешние бт-устройства. А уже производитель бт-устройства, присваивает своему продукту уникальный идентификатор. Вот отсюда и берутся "миллионы разных устройств".

КАКИЕ СУЩЕСТВУЮТ СТЕКИ И ЧЕМ ОНИ ОТЛИЧАЮТСЯ
На сегодня, для Windows-based компьютеров существуют стеки:
Bluesoleil
Microsoft
Toshiba
Widcomm
На сакральный вопрос, "какой же стек лучше", ответ придётся искать самостоятельно. Хотя принцип здесь тот же, что и при покупке картошки в магазине:
быстрее, выше, сильнеепобольше, получше, подешевле. Причём под "побольше", подразумевается кол-во реализованых в стеке профилей.

Разумеется, есть и ограничения. Не всякий стек или даже версия стека, будет работать под любой операционной системой. И уж совсем не факт, что приглянувшийся стек поддерживает именно этот "чУдный, красненький донгл, который так подходит к моему розовому ноутбуку"...

ЧТО ТАКОЕ VID/PID или "ЗАЧЕМ ВЫ ЛЕЗЕТЕ КО МНЕ С ЭТИМИ ГЛУПОСТЯМИ"

Наверное каждые 9 из 10 bluetooth-донглов нарицательное подключаются сегодня к компьютеру через USB. Это касается не только внешних "свистков". Например, большинство bluetooth-модулей, встроеных в современные ноутбуки, подключены именно через USB. Посему, придётся чуть подробнее об этой шине.
Любое USB-устройство, будь то принтер, флешка или блютус-донгл, имеет уникальный идентификатор, по которому и происходит опознание USB-устройства в системе. Этот идентификатор состоит, как минимум, из двух частей:
  • VID ( Vendor_ID / ИДентификатор_Производителя )
  • PID ( Product_ID / ИДентификатор_Продукта )
Каждый из этих двух идентификаторов, представляет собою обыкновенное число, в диапазоне от 0 до 65535, записаное в шестнадцатиричном виде. А будучи в паре, эти два числа-идентификатора, образуют уникальный номер, что позволяет, например, драйверу, опознать "своё" устройство.
Например, если VID устройства "22B8", а PID устройства "0850", это означает, что перед нами ни что иное, как MOTOROLA PC850.

Важный момент. Если USB-устройство видится в системе с VID "0000" и PID "0000", то, как говАривал старина Эрик Лассард, это vary, vary bad and getting much, much worse. А именно, наше устройство не было опознано системой и дальнейшая работа с ним невозможа. "Но и это ещё не всё" (с).
Совсем не редкость, когда USB-устройство работает нестабильно. Главная неприятность в этом случае, что ничего не подозревающий пользователь, будет мучать/настраивать блютус-стек. И всё, разумеется, тщетно. В итоге, нормальный донгл всё равно придётся украсть/отнять/выменять, возможно даже купить... Но не стоит так убиваться, в конце концов, даже Джинни однажды вернулась домой.

КАК УЗНАТЬ VID/PID УСТРОЙСТВА
Vista
Если выбран вид "классическое меню":
Пуск > Настройка > Панель управления > Система > Диспетчер устройств
[устройство] > Сведения > ИД оборудования > [USB\VID_xxxx&PID_xxxx\...]

Если выбран вид "домашняя страница":
Пуск > Настройка > Панель управления > Система и её обслуживание > Система-Просмотр объема ОЗУ и скорости процессора > Диспетчер устройств
[устройство] > Сведения > ИД оборудования > [USB\VID_xxxx&PID_xxxx\...]


WinXP
Пуск > Настройка > Панель управления > Система > Оборудование > Диспетчер устройств
[устройство] > Сведения > Код экземпляра устройства > [USB\VID_xxxx&PID_xxxx\...]


Win2K
Пуск > Программы > Стандартные > Служебные > Информация о системе
Components > USB > [устройство] > [USB\VID_xxxx&PID_xxxx\...]


Win98
Придётся воспользоваться сторонней программой, например USBView.

Комментариев нет: