USB-звук своими руками "SDR-Widget"



Рекомендую: ПЕЛАГЕЯ!

pelagea.jpg

Фанаты группы ПЕЛАГЕЯ ("Полефаны") ВКонтакте

Концерт на площади Минина в Нижнем Новгороде 9 Мая 2013

Концерт в программе «Квартирник НТВ у Маргулиса» Январь 2023

Мини-концерт в Магасе (Ингушетия) 4 Июня 2014

Форум http://ra3pkj.keyforum.ru (кликнуть).

=Место для объявлений=

 

Общая информация

Раздел в стадии наполнения. Пока нет описания железа. Впрочем, при эксплуатации SDR-Widget совместно с PowerSDR разных версий и ASIO-драйвером в различных операционных системам и на разных компах выявился недостаток работы ЦАП в виде периодически повторяющегося металлического оттенка в звуке. Как оказалось, данная проблема имела место также в Audio-Widget при работе с некоторыми аудиокодеками, автор прошивки Borges устранил её, а вот в SDR-Widget устранить у него руки не дошли. Мои попытки урезонить его по почте и на двух форумах не имели успеха. Здесь на моём сайте я заморозил тематику SDR-Widget до лучших времён (если они вообще будут).

SDR-Widget не работает в Windows XP (это в соответствии с исследованиями RA4FIX и моими исследованиями). В Windows 7 и 8 работает.

 

Ознакомительная информация по прошиванию

Предварительная справка. Чистый непрошитый микроконтроллер имеет идентификатор производителя VID = 03EB и идентификатор продукта PID = 2FF1. Данные номера хранятся в микроконтроллере в виде usb-дескрипторов.

Микроконтроллер, применённый в SDR-Widget, имеет зашитую на заводе маленькую программку, отвечающую за загрузку рабочей прошивки через USB. Программный код этой программки расположен в недоступной нам области памяти, дабы мы его не смогли случайно уничтожить. Программку принято называть - "бутлоадер". В бутлоадере прописаны заводские номера идентификаторов  производителя и продукта, т.е. VID и PID. Программа прошивальщика (коротко - прошивальщик), установленная на компьютере, увидит микроконтроллер, основываясь именно на эти идентификаторы, точнее на их "правильные" номера. Как только мы зашьём нашу рабочую прошивку в микроконтроллер при помощи прошивальщика, то прошивальщик уже больше не будет видеть наш микроконтроллер, потому что он будет читать идентификаторы не из бутлоадера, а из нашей рабочей прошивки, а они имеют другие номера. Отсюда следует важный вывод - для того, чтобы перепрошить микроконтроллер заново (например, в случае обновления прошивки или для удаления неудачной прошивки), мы должны предпринять дополнительные действия. К счастью в проекте SDR-Widget предусмотрены специальные кнопки - PROGRAM и RESET. Кстати, автор проекта рекомендует пользоваться кнопками даже при первичном прошивании (перестраховывается наверно). Если нажать и удерживать кнопку PROGRAM, а затем кратковременно нажать кнопку RESET, то микроконтроллер сбросится и начнёт выполнять команды нашей рабочей прошивки со стартового адреса, вот тут-то контроллер и увидит нажатую кнопку PROGRAM, что приведёт к тому, что контроллер сразу перепрыгнет на бутлоадер, имеющий "правильные" номера идентификаторов VID и PID. После этого кнопку PROGRAM надо отпустить. Если теперь запустить прошивальщик, то он снова увидит наш микроконтроллер и даст нам возможность перепрошить его. На практике это выглядит просто - подключить SDR-Widget к USB, нажать и удерживать кнопку PROGRAM, кратковременно нажать кнопку RESET, отпустить кнопку PROGRAM, запустить прошивальщик.

Замечание. Вообще-то, при первичном прошивании нет смысла пользоваться кнопками PROGRAM и RESET, т.к. прошивальщик сразу увидит микроконтроллер, прочитав "правильные" номера идентификаторов VID и PID из бутлоадера. Но автор проекта всё-равно рекомендует пользоваться кнопками, наверно на всякий случай. Моё мнение - если при первичном прошивании не пользоваться кнопками, то ничего страшного не произойдёт, т.к. повторить процедуру прошивания (но уже совместно с кнопками) Вы сможете всегда. Короче - на Ваше усмотрение.

По минимуму при прошивании нужна только плата контроллера. Правда, в этом случае после прошивания компьютер не увидит устройство (устройство не обнаружится в диспетчере устройств), т.к. требуются внешние такты, поступающие с отсутствующей платы АЦП. Если у Вас плата АЦП ещё не собрана, а проверить правильность прошивания не терпится, то можно съимитировать внешние такты, коснувшись пинцетом контакта MCLK на разъёме J303 на плате контроллера. Сразу после этого может последовать (но не обязательно!) запрос драйвера. Следует отказаться от установки драйвера (если конечно был запрос драйвера). В диспетчере устройств Вы обнаружите название устройства "Yoyodyne SDR-Widget", в свойствах которого указаны VID_16C0, PID_05DC. Но об этом позже.

Устройство может поддерживать различные конфигурации. После прошивания устройство работает как звуковая карта "USB Audio Class 1" (т.е. UAC1), что нам совершенно не нужно. Переконфигурирование на UAC2 производится в программе Widget Control. Сама конфигурация хранится в определённой области Flash-памяти. Эта область эквивалентна EEPROM в микроконтроллерах AVR (кто в курсе). Изменить конфигурацию путём перепрошивки устройства невозможно. Это можно сделать только при помощи упомянутой программы Widget Control, которая будет описана в конце статьи. Программа может изменить конфигурацию (кнопка Save), а также очистить конфигурацию (кнопка Fact.Reset).

 

Краткое описание процесса установки SDR-Widget

1. Скачать и установить пакет прошивальщика. 

2. Установить драйвер прошивальщика.

3. Дополнить папку прошивальщика файлом прошивки и пакетным файлом запуска прошивальщика.

4. Запустить прошивальщик.

5. Убедиться, что контроллер прошился.

6. Установить РАБОЧИЙ ЗВУКОВОЙ ASIO-драйвер.

7. Переопределить в программе Widget Control функциональное назначение устройства.

8. Настроить SDR-программу.

Ниже описана установка на примере Windows 8.

 

Инсталляция пакета прошивальщика

Справка. Вообще-то после инсталляции всего пакета нам потребуется для прошивания всего-лишь маленькая часть пакета. Мы даже не будем запускать пакет в Windows-режиме. Мы вызовим в DOS-режиме подпрограмму batchisp (файл batchisp.exe), входящую в состав пакета. Но об этом позже.

Инсталляция пакета очень проста.

Скачать у меня пакет прошивальщика FLIP 3.4.7 Вместе с этим пакетом сама установится Java runtime, если конечно она у Вас была не установлена. Если же Java runtime была установлена ранее, то этот этап будет автоматически пропущен. Пакет можно скачать также на сайте Atmel http://www.atmel.com/tools/flip.aspx . Там два варианта пакета - один с Java runtime, а другой без неё. Если Вы не уверены, что у Вас до этого уже была установлена Java runtime, то лучше скачивайте и устанавливайте пакет с Java runtime.

1. Распаковать и запустить скачанный файл. Если на Вашем компьютере не установлена Java runtime, то последует запрос на её установку (если Java runtime была установлена ранее, то процесс инсталляции перепрыгнет сразу на пункт 5). Разрешить установку Java runtime (нажать Install):

flip_widget_1.gif

 

2. После чего начнётся установка Java runtime:

flip_widget_2.gif

 

3. Указать типовую установку и нажать Accept:

flip_widget_3.gif

 

4. Инсталляция Java runtime завершена, нажать Finish:

flip_widget_4.gif

 

5. Далее автоматически последует собственно сама установка пакета, нажать Next:

flip_widget_5.gif

 

6. Подтвердить лицензионное соглашение (поставить галочку), нажать Next:

flip_widget_6.gif

 

7. Выбрать папку установки по желанию (я выбрал C:\Flip 3.4.7), запомнить для себя путь к папке (она понадобится), нажать Next:

flip_widget_7.gif

 

8. Нажать Install:

flip_widget_8.gif

 

9. Установка завершена, нажать Next:

flip_widget_9.gif

 

10. Снять нижнюю галочку и нажать Finish:

flip_widget_10.gif

 

Установка драйвера прошивальщика

Установленный выше пакет прошивальщика имеет в своём составе драйвер, но если у Вас используется современная 64-разрядная Windows, то следует скачать у меня папку с драйвером Atmel_DFU_64_driver (взято мной из https://code.google.com/p/sdr-widget/downloads/detail?name=Add_to_flip345_bin_20120115.zip). Распаковать и поместить эту папку в папку usb пакета прошивальщика FLIP 3.4.7, т.е. будет - Flip 3.4.7\usb\Atmel_DFU_64_driver\.

11. Подключить SDR-Widget к USB (для прошивания можно подключить только плату контроллера). У меня в Windows 8 запрос на установку драйвера не появился, поэтому пришлось идти в диспетчер устройств. Под заголовком "Другие устройства" увидел своё устройство (как вариант, устройство может обнаружиться под заголовком "Atmel USB Devices"). Обратите внимание, что название устройства помечено восклицательным знаком, т.к. драйвер прошивальщика для устройства пока не установлен:

dfu_driver_1.gif

 

12. Там же в свойствах можно при желании посмотреть значения VID, PID, соответствующих непрошитому контроллеру (т.е. VID_03EB, PID_2FF1):

dfu_driver_2.gif

 

13. В свойствах выбрать:

dfu_driver_3.gif

 

14. Установка драйвера вручную:

dfu_driver_4.gif

 

15. Для 64-разрядной Windows через кнопку "Обзор" указать папку Flip 3.4.7\usb\Atmel_DFU_64_driver. Для 32-разрядной Windows указать папку Flip 3.4.7\usb\

dfu_driver_5.gif

 

16. Драйвер установился:

dfu_driver_6.gif

 

17. При желании (не обязательно) можно убедиться в диспетчере устройств, что восклицательный знак в названии пропал. У меня устройство обнаружилось под заголовком "LibUSB-Win32 Devises" (как вариант, устройство может обнаружиться под заголовком "Atmel USB Devices"):

dfu_driver_7.gif

 

Файл прошивки и пакетный файл запуска прошивальщика

18. Скачать у меня прошивку и пакетный файл одним архивом proshivka_bat.zip. Распаковать архив в папку bin прошивальщика, т.е. в папку Flip 3.4.7\bin\ . Для справки - сама прошивка sdr-widget-2012-10-22.elf взята отсюда.

 

Прошивание

Справка! При первичном прошивании нет смысла пользоваться кнопками PROGRAM и RESET на плате контроллера. При ПЕРЕпрошивании контроллера (например, после неудачной прошивки) уже будет необходимо пользоваться этими кнопками. Последовательность операций при ПЕРЕпрошивании следующая: подключить устройство к USB, нажать и удерживать кнопку "PROGRAM", кратковременно нажать кнопку "RESET", отпустить кнопку "PROGRAM", запустить прошивальщик. Можно поступить иначе: на отключённом устройстве нажать и удерживать кнопку "PROGRAM", подключить устройство к USB, отпустить кнопку "PROGRAM", запустить прошивальщик. Последний вариант может пригодиться в случае, если нежелательно чтобы запустилась на выполнение старая прошивка при подключении устройства к USB.

Справка! При ПЕРЕпрошивании одновременно производится полное стирание старой прошивки, но конфигурация устройства (сформированная при первичном прошивании) не стирается. Конфигурация устройства (т.е. функциональное назначение устройства) может быть изменена или стёрта только в программе Widget Control при помощи программных кнопок Save и Fact.Reset соответственно. В конце статьи будет описано как произвести переконфигурирование устройства на нужную нам выполняемую функцию, т.е. на функцию поддержки USB Audio Class 2 (коротко UAC2).

Справка! Если есть необходимость удалить старую прошивку без прошивания новой, то скачайте у меня пакетный файл запуска прошивальщика, выполняющий только функцию стирания: erase_bat.zip . Распаковать и разместить этот файл в папке bin прошивальщика, аналогично тому как Вы поступили выше с файлом proshivka_bat.zip.

Справка! Хочу обратить Ваше внимание на программу usbdeview, которая поможет в случаях, когда возникнут непредвиденные проблемы при установке драйверов, переустановке драйверов, прошитии и перепрошитии usb-устройств (надеюсь, что Вы не столкнётесь с подобными проблемами и всё пройдёт гладко). Программа даёт ценную информацию, помогающую при решении проблем. Программа покажет значения VendorID (VID), ProductID (PID), покажет установлен ли драйвер для этих VID,PID, покажет версию драйвера (если он установлен). Программа отслеживает и запоминает даже кратковременное подключение usb-устройств с отображением их параметров. При помощи этой программы легко удалять usb-устройства из системы. Скачать для 32-разрядных систем usbdeview.zip. Скачать для 64-разрядных систем usbdeview_64.zip. Программа не требует инсталляции, при запуске в окне программы Вы увидите информацию о usb-устройствах. Для удаления usb-устройства достаточно кликнуть правой клавишей мыши по названию устройства и выбрать "Uninstall Selected Devices".

19. При прошивании удобно пользоваться файловой оболочкой Far 3.0 . Скачать у меня Far или на официальном сайте http://www.farmanager.com/download.php?l=ru . Чтобы левая файловая панель не мешала смотреть текст сообщений (в процессе прошивания), её следует выключить:

widget_bat_far_0.gif

 

20. Подключить устройство к USB (если оно не было подключено ранее). В правой файловой панели войти в папку bin прошивальщика и запустить двойным кликом мыши пакетный файл prog_sdr.bat. Наблюдать результат прошивания в виде текстовых сообщений:

widget_bat_far_1.gif

 

21. После прошивания может последовать (но не обязательно) запрос РАБОЧЕГО драйвера. Отказаться от установки драйвера. У меня в Windows 8 запрос не последовал. Впрочем, если Вы подключали только плату контроллера (т.е. без платы АЦП) запрос драйвера точно не последует. В этом случае нужно съимитировать внешние такты, коснувшись пинцетом контакта MCLK на разъёме J303 на плате контроллера, после чего может (но не обязательно) появиться запрос драйвера. Отказаться от установки драйвера. После этого необходимо убедиться, что контроллер прошился, для чего идём в диспетчер устройств, там мы должны обнаружить название устройства "Yoyodyne SDR-Widget", имеющее восклицательный знак (т.к. РАБОЧИЙ ЗВУКОВОЙ драйвер ещё не установлен). Windows может установить самостоятельно звуковой драйвер UAC1 (о чём свидетельствует строчка без восклицательного знака в звуковых устройствах). Не обращать на это внимание. В свойствах устройства увидим значения VID_16C0, PID_05DC:

widget_bat_far_2.gif

widget_bat_far_3.gif

 

Установка РАБОЧЕГО ЗВУКОВОГО ASIO-драйвера

Скачать у меня ASIO-драйвер (AWSetup от 11.02.2013) - asio_driver_sdr_widget.zip . Распаковать и разместить драйвер в любом месте. Драйвер взят отсюда: https://code.google.com/p/sdr-widget/downloads/list

22. Отключить устройство от USB (если оно было подключено). Запустить на выполнение скачанный файл. Ниже скрины установки, которые я не буду комментировать, т.к. там всё понятно. Не забудьте только поставить галочку, что Вы согласны с лицензионным соглашением, а также не забудьте указать папку установки (или согласиться с предложенным вариантом). Не обращайте внимание на название "Audio-Widget", т.к. драйвер предназначен для поддержки звуковой функции обоих типов устройств (т.е. Audio-Widget и нашего SDR-Widget).

asio_widget_install_1.gif

asio_widget_install_2.gif

asio_widget_install_3.gif

asio_widget_install_4.gif

asio_widget_install_5.gif

asio_widget_install_6.gif

asio_widget_install_7.gif

asio_widget_install_8.gif

asio_widget_install_9.gif

asio_widget_install_10.gif

 

23. Подключить устройство к USB. Windows автоматически привяжет к устройству инсталлированный ASIO-драйвер. В диспетчере устройств увидим новое название устройства, посмотрите также VID,PID в свойствах этого устройства:

asio_widget_install_11.gif

asio_widget_install_12.gif

 

Переопределение функционального назначения устройства (переконфигурирование устройства)

Справка! Вместе с ASIO-драйвером установилась программа Widget Control. Она находится в той же папке, что и ASIO-драйвер, т.е. в папке Audio-Widget. Запустить программу можно через Проводник или через кнопку Пуск>Все программы. Ну Вы знаете как делать в Вашей Windows. Исполняемый файл WidgetControl.exe. Назначение кнопок в программе: Save - запись в устройство новой конфигурации, Refresh - чтение конфигурации устройства, Reset - перезапуск устройства после записи новой конфигурации, Fact.Reset - удаление конфигурации (если затем нажать Reset или перетыкнуть USB в устройство пропишется начальная конфигурация).

 

24. Подключить устройство к USB (если оно не было подключено ранее). Запустить программу Widget Control. Увидим конфигурацию устройства:

widget_control_1.gif

 

25. Установить в выпадающих меню окошек необходимые значения в соответствии со скрином. Собственно, установить пришлось только в двух окошках, в остальных окошках итак было то, что нужно. Нажать Save, через некоторую паузу (необходимую для изменения во Flash-памяти контроллера) нажать Reset. После этого программа "отваливается" почему-то (смотрим оба скрина):

widget_control_2.gif

widget_control_3.gif

 

26. Закрыть программу и запустить её заново. Увидим нашу новую конфигурацию, но не факт, что увидим, т.к. эта программа ведёт себя непредсказуемо. Закрыть программу и смотреть следующий пункт установки.

widget_control_4.gif

 

27. В любом случае устройство должно переконфигурироваться, в чём следует убедиться в диспетчере устройств (устройство фигурирует в двух местах):

widget_control_5.gif

Во втором месте фигурирует как Составное USB устройство:

widget_control_6.gif 

 

Настройка PowerSDR

Известный драйвер ASIO4ALL устанавливать нет необходимости. SDR-Widget не имеет программного микшера, поэтому величины в окошках Line In Gain и Mic In Gain на скрине не имеют значения. В режиме приёма работает линейный вход SDR-Widget. В режиме передачи микрофон должен подключаться тоже к линейному входу через соответствующую схему коммутации. Все клоны SDR-1000 имеют такую коммутацию. Чувствительность линейного входа необходимо подбирать резистивными делителями по каждому стереоканалу. Замечу, что чувствительность линейного входа избыточна. Собственные шумы SDR-Widget крайне малы. Переключение на другую частоту дискретизации (Sample Rate) выполняется очень просто, достаточно указать в окошке на скрине другое значение, далее Apply>OK и всё.

widget_powersdr_1.gif

Инсталляция SDR-Widget завершена.