Bluedv for windows настройка

Обновлено: 04.07.2024

Подсистема Windows для Linux представляет собой сложный слой совместимости и у подсистемы есть некоторые ограничения. Первоначальная реализация даже не использовала полноценное ядро Linux, поэтому некоторые приложения столкнулись с проблемами совместимости. Версия WSL 2 внесла множество улучшений, но кое-чего по-прежнему не хватало: поддержки подключения физических USB-устройств.

Если вы являетесь активным пользователем подсистемы Windows для Linux и хотите получить доступ к USB-устройствам прямо из операционной системы Linux, работающей под WSL, то вам будет приятно узнать, что в этом направлении достигнут значительный прогресс. Благодаря вкладу Microsoft в открытый исходный код проекта usbipd-win, был разработан сквозной доступ к USB-устройствам в WSL.

Пример использования USB-устройств в подсистеме WSL 2 в Windows 11

Теперь пользователи могут выполнять такие задачи, как перепрошивка Android-устройств в подсистеме Windows для Linux.

Пример использования инструмента ADB / Fastboot


Что такое usbipd-win?

Проект usbipd-win направлен на создание решения для совместного использования подключенных локально USB-устройств к другим машинам, включая гостевые системы Hyper-V и WSL2. Однако официальное ядро WSL 2 Linux раньше не поддерживало протокол USB/IP, что требовало от пользователей самостоятельной сборки ядра.

Начиная с версии ядра Linux 5.10.60.1, необходимые параметры настраиваются «из коробки», поэтому ручная перекомпиляция не требуется. Microsoft также внесла в проект интерфейс командной строки, чтобы обеспечить совместное использование USB-устройств в Windows и легко подключить его из WSL.

Установка WSL 2 в Windows 11

Установим подсистему Windows для Linux в Windows 11. В качестве операционной системы будем использовать Ubuntu 20.04 LTS, которая предлагается по умолчанию, а также установим графическое приложение - файловый менеджер Nautilus.

Установка WSL 2 в Windows 11:

  • Откройте Командную строку от имени Администратора (cmd.exe) или Терминал Windows (Администратор), нажав правой кнопкой мыши по меню Пуск и выбрав соответствующее приложение.


  • Выполните команду для установки дистрибутива Ubuntu 20.04 LTS:


  • Перезагрузите систему.
  • После перезагрузки откроется командная строка для продолжения установки и настройки системы. Укажите имя пользователя и пароль. В случае возникновения ошибки закройте командную строку и откройте приложение Ubuntu из меню Пуск.
  • Вы можете перейти в командную строку для работы с Ubuntu, открыв приложение Ubuntu из меню Пуск, либо открыв Терминал Windows и введя туда команду.

Установка графических приложений в WSL 2 в Windows 11

Установка графических приложений необязательна, однако краткая инструкция может быть полезна новым пользователям. В качестве примера установим файловый менеджер Nautilus.

  • Обновим систему следующими двумя командами:
  • Установим файловый менеджер Nautilus:

Установленный Nautilus доступен в списке установленных программ меню Пуск Windows 11. Файловый менеджер отображается в виде названия Files.


Подключаем USB-устройства в подсистеме Windows для Linux

Перед тем как мы начнем процедуру подключения USB-устройств в WSL 2 в Windows 11, нужно убедится, что у вас установлены все обновления WSL 2.

Для обновления подсистемы WSL выполните следующие команды:


  • Перейдите в командную строку Ubuntu. Мне удобнее работать в Терминале Windows, введя команду для перехода к управлению системой Ubuntu).

Версия ядра Linux должна быть не ниже версии 5.10.60.1, в нашем случае подходящая версия – 5.10.60.1. Версию ядра можно узнать при обновлении подсистемы WSL, как показано выше, либо следующей командой из командной строки Ubuntu:

  • Перейдите в репозиторий проекта usbipd-win на GitHub. Скачайте и установите последнюю версию приложения. Последняя версия usbipd-win поддерживает автоматическую установку драйверов благодаря сертифицированным драйверам Windows Hardware Compatibility Program. Программа также поддерживает сборки инсайдерской программы тестирования Windows 11, канала Dev.
  • Помимо страницы релизов программы usbipd-win на GitHub, вы можете установить и обновить приложение с помощью интерфейса командной строки Windows Package Manager (также известного как winget):
  • После установки программы usbipd-win перейдите в командную строку Ubuntu и выполните следующую команду:
  • Теперь нам нужно изменить параметры sudo, чтобы пользователь root мог найти команды usbip. Для этого нам нужно отредактировать файл /etc/sudoers. Выполняем следующие команды:

В строке, в которой присутствует secure_path добавляем в начало запись

Отредактированная строка будет выглядеть следующим образом:


  • Комбинацией клавиш CTRL+O сохраните изменения и комбинацией CTRL+X заройте редактор.
  • Откройте командную строку от Администратора (cmd.exe) и введите следующую команду, чтобы вывести список всех USB-устройств, подключенных к Windows:


  • Запишите значение BUSID USB-устройства, которое вы хотите подключить к WSL. Затем выполните следующую команду, чтобы начать процесс подключения. WSL предложит вам ввести пароль для запуска команды sudo:

Например, в данном случае мы подключаем USB-флешку. Её значение BUSID 2-3.


  • Теперь откройте новый экземпляр WSL 2 (из меню Пуск или с помощью Терминала Windows) и запустите команду , для отображения подключенных USB-устройств:


  • Флешка подключена к подсистеме WSL 2.
  • Отсоединить USB-устройство можно следующей командой:

Где busid > равно значению BUSID подключенного устройства.

Егор

Егор Морозов | 5 Мая, 2019 - 14:15


В последнее время выпускается все больше беспроводных наушников и смартфонов, лишенных 3.5 мм разъема, и последние приобретают все более навороченные Bluetooth-кодеки. Однако десктопные системы в этом плане куда более консервативные: тут практически все устройства продолжают оснащаться разъемом для наушников, да и провод мешает редко, поэтому с передачей звука по Bluethtooth тут все печальнее. Однако настраиваемость у ПК сильно выше, чем у смартфонов, поэтому если вы купили классные беспроводные наушники — не расстраивайтесь, вы сможете насладиться в них качественным звуком и под десктопными ОС.

  • SBC — базовый кодек, включенный в стандарт A2DP, который поддерживают 99% всех устройств с BT, выпущенные за последние лет 10, и абсолютно все беспроводные наушники. Соответственно, если вы не хотите разбираться, то можете просто купить любые BT-наушники и подключить их к вашему устройству — музыка будет передаваться. Казалось бы, в чем тогда проблема? А она в том, что SBC по качеству передачи звука сравним с mp3 с битрейтом в 128 кбит/c: то есть слушать подкасты или ролики с YouTube можно без проблем, а вот насладиться музыкой едва ли получится. Поэтому последние лет 10 стали развиваться более «крутые» кодеки, которые лучше передают звук.
  • AptX — пожалуй, самый качественный скачок после SBC. И хотя битрейты у них сравнимы (

В Linux, как обычно, разброд и шатания, но в среднем после установки драйверов на ваш BT-адаптер вы скорее всего получите все тот же SBC. Причем, к слову, это единственное семейство ОС, где решить проблему с высококачественным беспроводным звуком можно чисто программно, но об этом ниже.

В macOS все достаточно интересно: система поддерживает SBC, AAC и AptX, причем по умолчанию приоритет дается именно AAC, на втором месте AptX, ну и под конец SBC. Если ваши наушники поддерживают сразу несколько из этих кодеков, то можно выбрать интересующий вас, но об этом опять же ниже.

Добиваемся высококачественного звука по Bluetooth на Windows

Если вы сидите на Windows 7 или 8 и не хотите вкладывать в эту затею больше 1000 рублей — ваш выбор это AptX: конечно, система не поддерживает его по умолчанию, однако на том же AliExpress за 350 рублей можно найти USB-адаптер от Ugreen с поддержкой AptX, только нужно будет поставить драйвера CSR Harmony, которые легко находятся в интернете. В России аналоги стоит дороже, порядка 700 рублей — например, это Orico BTA-403 или Dexp AT-BT403A. Если вы все сделали правильно, то при подключении наушников с AptX будет всплывать окошко, уведомляющее об использовании этой технологии:


На Windows 10 с этим, очевидно, куда легче: система поддерживает AptX «из коробки», поэтому если ваш ПК не имеет поддержки Bluetooth, то можно подключить абсолютно любой USB BT-адаптер, хоть с Ali за 200 рублей, и все заработает. Если же у вас ноутбук с BT-адаптером, или же его поддержка есть на вашей материнской плате — вам вообще ничего делать не нужно. Но, увы, Windows 10 так и не умеет показывать, какой кодек сейчас используется, и даже если это AptX, то никакого всплывающего окошка не будет (что очевидно, ибо это по сути обратная разработка AptX от Qualcomm без всяких лицензионных отчислений последней). Поэтому придется или опираться на данные вашего BT-адаптера, если он умеет показывать кодек, или воспользоваться сторонней программой — например, Bluetooth Tweaker.

Но что делать, если вы хотите играть и вам требуется AptX LL, или же вы хотите более качественного звука — например, AptX HD или LDAC, и ваши наушники их поддерживают? В случае с AptX LL все достаточно просто — на Amazon или Ali по запросу «USB AptX LL» вам выпадет несколько USB-адаптеров: в случае с Китаем это скорее всего будет решение от Reiyin. Увы, тут несколькими сотнями рублей уже не отделаться — такие решения стоят от полутора тысяч рублей. Но, опять же, проблем с ними минимум: воткнули в любой USB-порт, поставили драйвера если нужно и вуаля, все работает.


В случае с AptX HD все еще сложнее: обычного USB-адаптера с его поддержкой нет в принципе, поэтому вам придется брать специальный Bluetooth трансмиттер — эдакую коробочку, которая подключается к ПК через 3.5 мм разъем или SPDIF и передает звук по BT. Решения с поддержкой AptX HD стоят на все том же Ali от полутора тысяч рублей, и тут я рекомендую брать «коробочку» от Vikefon, так как она имеет наглядную демонстрацию того, какой кодек используется при подключении. Из плюсов — не нужно абсолютно никаких драйверов, так что подключить такой трансмиттер можно к любому устройству с указанными выше выходами, моментально сделав его беспроводным. Из минусов — вы не сможете управлять музыкой кнопками на наушниках, и так же не будет работать микрофон на них.


И если вы думаете, что хуже некуда, то огорчу — трансмиттеров с поддержкой LDAC нет вообще. Единственный способ получить этот кодек на ПК это купить плеер, который одновременно может работать внешним ЦАП по 3.5 мм разъему, и при этом поддерживает LDAC. Самый дешевый такой плеер — это Shanling M0, который стоит около 6.5 тысяч рублей. Решать, стоит ли качественный беспроводной звук таких денег, только вам, я же порекомендую пользователям потоковых сервисов остановиться на AptX HD с оптимальным на мой взгляд балансом цены и качества звука.


Добиваемся высококачественного звука по Bluetooth на macOS

Как я уже говорил выше, из коробки поддерживаются два неплохих кодека для потоковых аудио сервисов — AAC и AptX. При желании, их можно настроить под себя: например, повысить битрейт AAC, или же по умолчанию заставлять наушники подключаться именно по AptX. Для этого вам понадобится программа Bluetooth Explorer, в которой все настройки достаточно интуитивны.


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

Но что делать, если хочется более качественного звука — например, AptX HD или LDAC? Увы, тут все даже немного хуже, чем на Windows: так, Bluetooth-адаптеры, подключающиеся по USB, с высокой долей вероятности не заработают. Поэтому единственный выход — это внешние Bluetooth трансмиттеры, подключаемые по 3.5 мм разъему, или же плееры в режиме ЦАП, подключаемые по нему же: подробнее о них можно почитать выше в разделе с Windows, тут все абсолютно идентично.

В итоге, как видите, десктопная техника не особо готова к беспроводному будущему: если большинство смартфонов уже из коробки имеют поддержку высококачественных кодеков, то на ПК (за исключением Linux) это практически всегда покупка дополнительных девайсов, стоящих зачастую ощутимых денег. Но, при желании, и тут можно получить даже LDAC — правда, отдав за это чуть ли не половину стоимости самих наушников с его поддержкой.

Из того что я нашел в инете.
Это то что Bluetooth в сущности сетевой протокол, как эзернет например, и что работа разных устройств по блютузу это просто использование разных прикладных протоколов.
Один умный человек все это раскопал Jon Scaife но Broadcom недавно купила Widcomm со всем что было и попросила Джона убрать всю информацию о том, как сдалать так чтобы Видкомоские дрова пахали на, почти, любых Блютуз-контроллерах. Есть некое лицензирование, по которому тот или иной производитель, на уровне драйверов, добовляет возможность использования со своим устройством, мыши или телефона или КПК. Так вот, если вы стали обладателем такого Блютуз-контроллера, производитель которого пожмотничал и в драйверах своих реализовал только поддержку того или иного типа устройств, а не всех которые Вам нужны, то здесь мы с вами все это обсудим и будет нам счастье

надо отдать должное Hipster и Кренг за помощь

На момент установки и удаления драйверов, ОТКЛЮЧИТЕ антивирусы и файрволы .

С устройствами НЕ на Broadcom чипсете, работа с драйверов Widcomm выше версии 5.1.0.1100 - маловероятна , но можно попытаться сделать гибрид из драйверов.

В свою очередь я сделал все по инструкции и с устройством от 3СОМ
3Com Wireless Bluetooth PC Card (3CRWB6096B)
у меня все завелось и значит будем составлять список работающих донглов и т.п. .
PCMCIA карта 3СОМ (PCMCIA\3Com-3CRWB6096B_Bluetooth_PC_Card-959F)
USB донгл в нотабуке FujitsuSiemens Celsius H230 - ALPS (USB\VID_044E&PID_3001)
CF NoName (PCMCIA\BT--547B) может называться Formosa H4 Compact Flash Card
USB донгл Tecom BT3034 (USB\VID_0A5C&PID_200A) может называться Blutonium BCM2035 или Broadcom
USB донгл в ноутбуке Broadcom USB Bluetooth Device BCM2035 (USB\VID_0A5C&PID_200A) "selectively suspendable" dongle
USB донгл Conceptronic CBT 100U (USB\VID_0A12&PID_0001)
USB донгл Billionton UBTCR3C1A-B (USB\VID_0A12&PID_0001)
USB донгл Bluetake BT007X (USB\VID_0A12&PID_0001)
USB донгл Pilotech BU002-ERD (USB\VID_0A12&PID_0001)
USB донгл Hassnet Bluetooth Dongle (USB\VID_055D&PID_0BB1) SAMSUNG BC02 external
USB донгл Prolife UB 22S (USB\VID_0A12&PID_0001) CSR Bluetooth Device Grozd
USB донгл BlueTake BT007SX (USB\VID_0A12&PID_0001), поддержка протокола bluetooth 2.0, EDR от ersm
USB донгл Tekram-307 (USB\VID_0A12&PID_0001) от Infra
USB донгл Cellink BTA-3120 (VID_0C10&PID_0000) чип Silicon Wave
USB донгл Canyon CN-BTU1 (USB\VID_0C10&PID_0000) чип Silicon Wave
USB донгл в нотабуке HP NC4010 - (USB\VID_049F&PID_0086) он же BLUETHUMB USB Device , "selectively suspendable" dongles not supporting remote wakeup when the whole machine is suspended
USB донгл на упаковке маркером было написано "JVC", а на самом донгле написано model:BTU02B made in Taiwan (VID_1310&PID_0001) он же Air2U Bluetooth Device
PCMCIA Billionton работает с 5.0.1.2500, определяется как TDK Bluetooth PC Card, драйвера лежат в DATA1.CAB - его надо распаковать (WinAce/WinRAR), который находится в корне дистрибутива. После установки девайс не будет опознан в "Оборудование" в "Дополнительных настройках" - "Device Not Found", но при этом будет работать.
USB донгл Orient B308 (USB\VID_1131&PID_1001) определяется как ISSC USB Bluetooth Device
USB донгл Espada v1.2 (USB\VID_1131&PID_1001) в системе - ISSC USB Device, WIDCOMM 5.1.0.1100 Zakk_Whylde
USB донгл D-Link DBT-122 USB Bluetooth 1.2 Adapter (USB\VID_2001&PID_F111) он же Formosa 1 , "selectively suspendable" dongle
USB донгл Bluetake BT009X (USB\VID_0A12&PID_0001) , CSR Real Stealth
USB донгл Motorola PC850 (USB\VID_22B8&PID_0850) он же Motorola USB Bluetooth Device "selectively suspendable" dongle
USB донгл и мышь Genius Bluetooth Traveler (USB\VID_0458&PID_003f)
USB донгл ASUS WL-BTD202 Class 2 (USB\VID_0B05&PID_1715) от описание Rucha он же Broadcom 2045 Bluetooth 2.0 USB Device (BS6 -)
USB донгл ASUS WL-BTD201M Class 1 (USB\VID_0B05&PID_1715) от FoxD
USB донгл MSI Starkey 2.0 (USB\VID_0A5C&PID_2101) a-design он же Broadcom 2045 Bluetooth 2.0 USB Device, non UHE "selectively suspendable" dongle
USB донгл Bluetake BT007SX (USB\VID_0A5C&PID_2100) белого цвета из Санрайза от eugene_kadett_13NB , и DeviceLock от Nimnul, он же Broadcom 2045 Bluetooth 2.0 USB-UHE Device, Broadcom Smart Dongle
USB донгл Bluetake BT007SX (USB\VID_0A12&PID_0001) ВНИМАНИЕ, бывает и на CSR, вероятно в UltraComputers от aar
USB донгл в нотабуке FujitsuSiemens S7110 Supreme от августа 2007 (USB\VID_0C24&PID_000F) USB Bluetooth Driver (V2.0+EDR) ; TaiyoYuden/CSR for Fujitsu
USB донгл Epox DG06b (USB\VID_0A12&PID_0001) от Шу!рик
USB донгл CBR (Cyber Brand Retail) ES-600 (USB\VID_1131&PID_1001) от Vic_tor
USB донгл ES-388 (USB\VID_0E5E&PID_6622) от pul2000
USB донгл Acorp WBD1-A2 (USB\VID_0A5C&PID_2101) от f2065
USB донгл в нотабуке Asus F7Sr (USB\VID_0B05&PID_1712) от Victor.K
USB донгл CBR DOK-35U (USB\VID_1131&PID_1001)&REV_0373 (чип ISSC) от LILI
USB донгл Acorp WBD1-C2 (USB\VID_0A12&PID_0001) (чип CSR о чём говорит в названии индекс -C) от LILI
USB донгл в нотабуке Samsung R55 (USB\VID_0A5C&PID_2045) от assa62
USB донгл Tekram TM-308 (USB\VID_0A12&PID_0001) от SuSt
USB донгл нонейм, внешне 1 в 1 выпускается фирмой Cyber-Blue (USB\VID_0A12&PID_0001) от Smith
USB донгл в нотабуке Samsung Q55 (А001) MacS
USB донгл в нотабуке Dell Inspiron 1720 model:PP22X ref:07018, Wireless 355 2.0+EDR (USB\VID_413C&PID_8126) BCM92045MD от Vince
USB донгл в нотабуке Dell Vostro 1310 (USB\VID_413C&PID_8140) от alk0v
USB донгл Smart WD BT 06 A EDR (USB\Vid_1131&Pid_1001&Rev_0373) от beb
USB донгл Epox BT DG02 (USB\VID_0A12&PID_0001) очевидно на CSR, от sciensys
USB донгл Direc USB BLUETOOTH-адаптер micro 2.0 SB8107 (USB\VID_0A12&PID_0001) Generic CSR
USB донгл в нотабуке ASUS F3Sr (USB\VID_0B05&PID_1712&REV_1915) от vvv2007 стек Toshiba
USB донгл некий Broadcom (USB\VID_0A5C&PID_2123) от Mike1981
USB донгл no name (USB\Vid_1131&Pid_1001&Rev_0373) от shaltai с Bluesoliel 5
USB донгл Bluetooth Gembird BTD-MINI1 USB BT ISSC V2.0 EDR (USB\Vid_1131&Pid_1004) от iljaV
USB донгл Super Mini Bluetooth 2.0 Adapter Dongle (USB\VID_0C10&PID_0000) от Zdpn
USB донгл Cellink BTA-5020 (USB\VID_0A5C&PID_2101) от filogin
USB донгл MobileData UBT-208 (Class 1) на CSR, (USB\VID_0A12&PID_0001) от Raproid
USB донгл Acorp WBD2-A2 (Class II) на Broadcom 2045, (USB\VID_0A5C&PID_2101) от EXCITER-2001
НЕ работающие или глЮчные
если интересно как и что глючит - в поиск по ветке (кнопка "печать" и после загрузки Crtl+F ввести слово)
USB донгл E. CYCLONE ADS-273 - в ситеме ISSC Bluetooth Device. Комплектуется обычно дровами BlueSoleil.
USB донгл Match BT100 - он же CYCLONE ADS-273
USB донгл Mobidick BCU43 (USB\VID_0A5C&PID_2101) BCM2045A Grozd
USB донгл Mobidick BCU43 еще один камень от s1zeist
USB донгл Noname от DizM
USB донгл ISSC USB донгл от Cleo1977
Universal Share Downloader для скачивания со всяких Рапидшар, МегаАплоадер и прочих Слил.ру
тут исследователи могут поискать драйвера
Widcomm / Broadcomm
Windows XP / Vista
Widcomm 6 и Widcomm 5 ? от lexab65
Widcomm_patcher_v2.rar Патчер версии 2 НЕОБХОДИМ для Widcomm x32 версий 4.0.1.2101, 5.0.1.х, а может и более свежих. от bbsc. изменяет четыре файла посчле чего становится возможным использование ЛЮБОГО совместимого донгла. Ставить в "безопасном режиме".
WidcommLicensePatcher19pre.rar Патчер v1.9pre файла лицензии
WidcommLicensePatcher17.rar Патчер v1.7 файла лицензии НЕОБХОДИМ для Widcomm х64, но так же может быть использован и для х32 от Phantasm4489. патчит только файл лицензии пару строк в реестре под КОНКРЕТНЫЙ донгл
Патчер файла лицензии - комментарии на GSMhosting
Патчер файла лицензии - комментарии от pretorean
О Widcomm 5.1.0.2700 от Garry
Аккуратнее, в директории svcpack может лежать прошивка - бла бла бла.DFU , перед установкой таких дров, прошивку лучше убрать оттуда вместе с файлом svcpack.ini
Widcomm от Anycom Vista & 7 x32 v6.2.1.0100 multilanguage DizM
Widcomm от Anycom Vista x32 & x64 v6.2.0.9700 multilanguage
Widcomm от Anycom Vista x32 & x64 v6.2.0.8500-BETA multilanguage
Widcomm от Anycom Vista x32 & x64 v6.2.0.7400 multilanguage
Widcomm от Anycom Vista x32 & x64 v6.2.0.6100 multilanguage
Widcomm от Anycom Vista x32 & x64 v6.1.0.5200 multilanguage
Widcomm от Anycom Vista x32 & x64 v6.1.0.4700 multilanguage
Widcomm от Anycom Vista x32 & x64 v6.1.0.4500 BETA multilanguage
Widcomm от Anycom Vista x32 & x64 v6.1.0.2200 BETA multilanguage
Widcomm от Anycom Vista x32 & x64 v6.1.0.1900 BETA multilanguage
Widcomm от Anycom Vista x32 & x64 v6.0.1.6300 multilanguage
Widcomm от ThinkPad bluetooth with Enhanced Data Rate software 6.0.1.4900 rewyt
Widcomm от Anycom XP & Vista x32 & x64 v5.5.0.7800 multilanguage
Widcomm от Anycom XP & Vista x32 & x64 v5.5.0.6900-BETA multilanguage
Widcomm от утилитой автообновления 5.5.0.6800 от Mixail
Widcomm от Anycom XP & Vista x32 & x64 v5.5.0.6000 multilanguage
Widcomm от Anycom XP & Vista x32 & x64 v5.5.0.5500 multilanguage
Widcomm от Anycom XP & Vista x32 & x64 v5.5.0.3900 multilanguage
Widcomm от HP servicepack 5.1.0.4800 от iSmart
Widcomm от Anycom XP & Vista x32 & x64 v5.1.0.4200 multilanguage
Widcomm multilanguage Win32 5.1.0.3300 от a-design Rapidshare
btwusb.inf обновлённый для 5.1.0.1100 х32. положить в распакованный архив вместо оригинала и начать установку. от 15.05.2008
Widcomm 5.1.0.1100 multilanguage Win64 содержит патченную лицензию и REG файл который должен добавляться во время установки. Патчер лицензии тоже прилагается. Ну нижесказанное тоже верно и для х64 версии. Я не проверял х64.
Widcomm 5.1.0.1100 multilanguage Win32 Vista последний, на 25.10.2007, стек от WidComm который работает с CSR, новыми CSR, ALPS, ISSC чипсетами. Уже v5.1.0.1700 неработает, а v5.1.0.4200 и подавно
Файл автоустановки SFX RAR, проверено на WinXPproSP2 с хотфиксами на сентябрь 2007. Содержит ВСЕ донглы перечисленные на первой странице, за исключением PCMCIA и CF, т.к. с ними надо еще разобраться. Так же содержит УЖЕ пропатченные файлы, т.е. ненадо ничего патчить и никуда специально перегружаться. Перед установкой драйверов ОТКЛЮЧИТЬ или вынуть из компа донгл. Установить драйверы, согласившись на ВРЕМЕННОЕ отключение предупреждений Виндовз о неподписанных сертифакатах драйверов, на предложение вставить донгл - ответить отказом, дождаться конца установки, перезагрузить компутер. Если после перезагрузки копутера и подключения донгла не происходит "поиск новых устройств", то в диспетчере устройств надо удалить USB device помеченный желтым знаком вопроса и там же произвести поиск новых устройств посредством правого клика мыши на "названии" вашего компьютера в самом верху списка и выбора там "Обновить конфигурацию оборудования", на предложение подключиться к Internet и соединится с WindowsUpdate - ответить отказом. После того как донгл будет найден нужно перезагрузить компьютер и значек блютуза внизу справа должен стать белым.
пишите если заработает
Widcomm 5.1.0.1100 multilanguage Win32 немодифицированный
Widcomm 4.0.1.2101 от MSI StarKey_Drv4.0.1.2101.zip - вероятно ИХ использовал Mr.I для своей борьбы с CF bluetooth
Toshiba

Windows XP / Vista
XP v5.10.06F оригинальный файл от FujitsuSiemens S7110 (USB\VID_0C24&PID_000F)
Vista32 v5.00.08F оригинальный файл от FujitsuSiemens S7110 (USB\VID_0C24&PID_000F)
BlueSoleil
Windows XP / Vista Версия 6
Программа проверки на совместимость прямая ссылка

Windows 2000 / XP / Vista
(CSR, ISSC main chipset compatible.)

BlueSoleil 5.0.5.178 32bit Multilingual
FTP
вроде для х32 - работает? отпишитесь (патчить в безопасном режиме для висты обязательно)

BlueSoleil 5.0.5.178 64bit Multilingual
FTP
вроде для х64 - работает? отпишитесь (патчить в безопасном режиме для висты обязательно)

Vista compatible Version for Windows 2000/XP/Vista (CSR chip Only)
Bluesoleil 3.2.2.8 VoIP 070421 32bit Multilingual
European
Asia
FTP


Меня всегда интересовало низкоуровневое программирование – общаться напрямую с оборудованием, жонглировать регистрами, детально разбираться как что устроено. Увы, современные операционные системы максимально изолируют железо от пользователя, и просто так в физическую память или регистры устройств что-то записать нельзя. Точнее я так думал, а на самом деле оказалось, что чуть ли не каждый производитель железа так делает!

В чём суть, капитан?

В архитектуре x86 есть понятие «колец защиты» («Ring») – режимов работы процессора. Чем ниже номер текущего режима, тем больше возможностей доступно исполняемому коду. Самым ограниченным «кольцом» является «Ring 3», самым привилегированным – «Ring -2» (режим SMM). Исторически сложилось, что все пользовательские программы работают в режиме «Ring 3», а ядро ОС – в «Ring 0»:

Режимы работы x86 процессора

Режимы работы x86 процессора

В «Ring 3» программам запрещены потенциально опасные действия, такие как доступ к I/O портам и физической памяти. По логике разработчиков, настолько низкоуровневый доступ обычным программам не нужен. Доступ к этим возможностям имеют только операционная система и её компоненты (службы и драйверы). И всё бы ничего, но однажды я наткнулся на программу RW Everything:

RW Everything действительно читает и пишет практически всё

RW Everything действительно читает и пишет практически всё

Эта программа была буквально напичкана именно теми функциями, которые обычно запрещаются программам «Ring 3» - полный доступ к физической памяти, I/O портам, конфигурационному пространству PCI (и многое другое). Естественно, мне стало интересно, как это работает. И выяснилось, что RW Everything устанавливает в систему прокси-драйвер:

Смотрим последний установленный драйвер через OSR Driver Loader

Смотрим последний установленный драйвер через OSR Driver Loader

Прокси-драйвера

В итоге получается обходной манёвр – всё, что программе запрещено делать, разработчик вынес в драйвер, программа устанавливает драйвер в систему и уже через него программа делает, что хочет! Более того – выяснилось, что RW Everything далеко не единственная программа, которая так делает. Таких программ не просто много, они буквально повсюду. У меня возникло ощущение, что каждый уважающий себя производитель железа имеет подобный драйвер:

Софт для обновления BIOS (Asrock, Gigabyte, HP, Dell, AMI, Intel, Insyde…)

Софт для разгона и конфигурации железа (AMD, Intel, ASUS, ASRock, Gigabyte)

Софт для просмотра сведений о железе (CPU-Z, GPU-Z, AIDA64)

Софт для обновления PCI устройств (Nvidia, Asmedia)

Во многих из них практически та же самая модель поведения – драйвер получает команды по типу «считай-ка вот этот физический адрес», а основная логика – в пользовательском софте. Ниже в табличке я собрал некоторые прокси-драйвера и их возможности:

Результаты краткого анализа пары десятков драйверов. Могут быть ошибки!

Результаты краткого анализа пары десятков драйверов. Могут быть ошибки!

Mem – чтение / запись физической памяти

PCI – чтение / запись PCI Configuration Space

I/O – чтение / запись портов I/O

Alloc – аллокация и освобождение физической памяти

Map – прямая трансляция физического адреса в вирутальный

MSR – чтение / запись x86 MSR (Model Specific Register)

Жёлтым обозначены возможности, которых явно нет, но их можно использовать через другие (чтение или маппинг памяти). Мой фаворит из этого списка – AsrDrv101 от ASRock. Он устроен наиболее просто и обладает просто огромным списком возможностей, включая даже функцию поиска шаблона по физической памяти (!!)

Неполный перечень возможностей AsrDrv101

Чтение / запись RAM

Чтение / запись IO

Чтение / запись PCI Configuration Space

Чтение / запись MSR (Model-Specific Register)

Чтение / запись CR (Control Register)

Чтение TSC (Time Stamp Counter)

Чтение PMC (Performance Monitoring Counter)

Alloc / Free физической памяти

Поиск по физической памяти

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

Через Python в дебри

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

Первым делом нужно установить драйвер в систему и запустить его. Делаем "как положено" и сначала кладём драйвер (нужной разрядности!) в System32:

Раньше в похожих ситуациях я извращался с папкой %WINDIR%\Sysnative, но почему-то на моей текущей системе такого алиаса не оказалось, хотя Python 32-битный. (по идее, на 64-битных системах обращения 32-битных программ к папке System32 перенаправляются в папку SysWOW64, и чтобы положить файлик именно в System32, нужно обращаться по имени Sysnative).

Затем регистрируем драйвер в системе и запускаем его:

А дальше запущенный драйвер создаёт виртуальный файл (кстати, та самая колонка "имя" в таблице с анализом дров), через запросы к которому и осуществляются дальнейшие действия:

И ещё одна полезная программа для ползания по системе, WinObj

И ещё одна полезная программа для ползания по системе, WinObj

Тоже ничего особенного, открываем файл и делаем ему IoCtl:

Вот здесь чутка подробнее. Я долго думал, как же обеспечить адекватную обработку ситуации, когда таких "скриптов" запущено несколько. Не останавливать драйвер при выходе нехорошо, в идеале нужно смотреть, не использует ли драйвер кто-то ещё и останавливать его только если наш скрипт "последний". Долгие упорные попытки получить количество открытых ссылок на виртуальный файл драйвера ни к чему не привели (я получал только количество ссылок в рамках своего процесса). Причём сама система точно умеет это делать - при остановке драйвера с открытым файлом, он остаётся висеть в "Pending Stop". Если у кого есть идеи - буду благодарен.

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

А дальше просто реверсим драйвер и реализуем все нужные нам вызовы:

Легко и непринуждённо в пару команд читаем физическую память

Легко и непринуждённо в пару команд читаем физическую память

PCI Express Config Space

Немного отвлечёмся на один нюанс про PCIE Config Space. С этим адресным пространством не всё так просто - со времён шины PCI для доступа к её конфигурационному пространству используется метод с использованием I/O портов 0xCF8 / 0xCFC. Он применён и в нашем драйвере AsrDrv101:

Чтение и запись PCI Config Space

Чтение и запись PCI Config Space

Но через этот метод доступны только 0x100 байт конфигурационного пространства, в то время как в стандарте PCI Express размер Config Space у устройств может быть достигать 0x1000 байт! И полноценно вычитать их можно только обращением к PCI Extended Config Space, которая замаплена где-то в адресном пространстве, обычно чуть пониже BIOS:

Адресное пространство современного x86 компа, 0-4 ГБ

Адресное пространство современного x86 компа, 0-4 ГБ

На чипсетах Intel (ну, в их большинстве) указатель на эту область адресного пространства можно взять из конфига PCI устройства 0:0:0 по смещению 0x60, подробнее описано в даташитах:


У AMD я такого не нашёл (наверняка есть, плохо искал), но сам факт неуниверсальности пнул меня в сторону поиска другого решения. Погуглив стандарты, я обнаружил, что указатель на эту область передаётся системе через ACPI таблицу MCFG

А сами ACPI таблицы можно найти через запись RSDP, поискав её сигнатуру по адресам 0xE0000-0xFFFFF, а затем распарсив табличку RSDT. Отлично, здесь нам и пригодится функционал поиска по памяти. Получаем нечто такое:

На всякий случай оставляем вариант для чипсетов Intel

Всё, теперь осталось при необходимости заменить чтение PCI Express Config Space через драйвер на чтение через память. Теперь-то разгуляемся!

Читаем BIOS

В качестве примера применения нашего "тулкита", попробуем набросать скрипт чтения BIOS. Он должен быть "замаплен" где-то в конце 32-битного адресного пространства, потому что компьютер начинает его исполнение с адреса 0xFFFFFFF0. Обычно в ПК стоит флеш-память объёмом 4-16 МБ, поэтому будем "сканировать" адресное пространство с адреса 0xFF000000, как только найдём что-нибудь непустое, будем считать, что тут начался BIOS:

В результате получаем:

Вот так в 10 строчек мы считали BIOS

Вот так в 10 строчек мы считали BIOS

Но подождите-ка, получилось всего 6 мегабайт, а должно быть 4 или 8 что-то не сходится. А вот так, у чипсетов Intel в адресное пространство мапится не вся флешка BIOS, а только один её регион. И чтобы считать всё остальное, нужно уже использовать SPI интерфейс.

Не беда, лезем в даташит, выясняем, что SPI интерфейс висит на PCI Express:


И для его использования, нужно взаимодействовать с регистрами в BAR0 MMIO по алгоритму:

Задать адрес для чтения в BIOS_FADDR

Задать параметры команды в BIOS_HSFTS_CTL

Прочитать данные из BIOS_FDATA

Пилим новый скрипт для чтения через чипсет:

Исполняем и вуаля - в 20 строчек кода считаны все 8 МБ флешки BIOS! (нюанс - в зависимости от настроек, регион ME может быть недоступен для чтения).

Точно так же можно делать всё, что заблагорассудится - делать снифер USB пакетов, посылать произвольные ATA команды диску, повышать частоту процессора и переключать видеокарты. И это всё - с обычными правами администратора:

Немного помучившись, получаем ответ от SSD на команду идентификации

Немного помучившись, получаем ответ от SSD на команду идентификации

А если написать свой драйвер?

Некоторые из вас наверняка уже подумали - зачем так изворачиваться, реверсить чужие драйвера, если можно написать свой? И я о таком думал. Более того, есть Open-Source проект chipsec, в котором подобный драйвер уже разработан.

Зайдя на страницу с кодом драйвера, вы сразу наткнетесь на предупреждение:

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

Если кто сильно захочет подписать собственный драйвер - понадобится регистрировать собственную компанию и платить Microsoft. Насколько я нагуглил, физическим лицам такое развлечение недоступно.

Точнее я так думал, до вот этой статьи, глаз зацепился за крайне интересный абзац:

У меня под рукой нет Windows DDK, так что я взял 64-битный vfd.sys , скомпилированный неким critical0, и попросил dartraiden подписать его «древне-китайским способом». Такой драйвер успешно загружается и работает, если vfdwin запущена с правами администратора

Драйвер из статьи действительно подписан, и действительно неким китайским ключом:

Как оказалось, сведения о подписи можно просто посмотреть в свойствах.. А я в HEX изучал

Как оказалось, сведения о подписи можно просто посмотреть в свойствах.. А я в HEX изучал

Немного поиска этого имени в гугле, и я натыкаюсь на вот эту ссылку, откуда узнаю, что:

есть давно утёкшие и отозванные ключи для подписи драйверов

если ими подписать драйвер - он прекрасно принимается системой

малварщики по всему миру используют это для создания вирусни

Основная загвоздка - заставить майкрософтский SignTool подписать драйвер истёкшим ключом, но для этого даже нашёлся проект на GitHub. Более того, я нашёл даже проект на GitHub для другой утилиты подписи драйверов от TrustAsia, с помощью которого можно подставить для подписи вообще любую дату.

Несколько минут мучений с гугл-переводчиком на телефоне, и мне удалось разобраться в этой утилите и подписать драйвер одним из утекших ключей (который довольно легко отыскался в китайском поисковике):

И в самом деле, китайская азбука

И в самом деле, китайская азбука

И точно так же, как и AsrDrv101, драйвер удалось без проблем запустить!

А вот и наш драйвер запустился

А вот и наш драйвер запустился

Из чего делаю вывод, что старая идея с написанием своего драйвера вполне себе годная. Как раз не хватает функции маппинга памяти. Но да ладно, оставлю как TODO.

Выводы?

Как видите, имея права администратора, можно делать с компьютером практически что угодно. Будьте внимательны - установка утилит от производителя вашего железа может обернуться дырой в системе. Ну а желающие поэкспериментировать со своим ПК - добро пожаловать на низкий уровень! Наработки выложил на GitHub. Осторожно, бездумное использование чревато BSODами.

В Windows есть фича "Изоляция ядра", которая включает I/O MMU, защищает от DMA атак и так далее (кстати об этом - в следующих сериях)


Так вот, при включении этой опции, некоторые драйвера (в том числе RW Everything и китайско-подписанный chipsec_hlpr) перестают запускаться:

Читайте также: