Перейти к содержанию
    

USB Audio class - винда видит устройство, но не отправляет аудиоданные

Не могу понять даже как подступиться. По Wirehark смотрю - выдает абсолютно те же самые дескрипторы, что и образцовая плата USB-I2S конверетера, что я брал за образец (есть сурцы). Но при попытке выдать звук - вижу три isochronous out пакета и молчок. Причем пакеты "без ответа" внутри Wirehark/ Я так понял, что, хотя изохронн не подразуемевает никаких ответов - это Wireshark пишет ответ от драйвера , мол "отправил". Соответвенно драйвер видать , такого не говорит. Ютуб тут же притормаживает и стопорит ролик. Не идет звук и данные вообще никак. Под Линуксом ситуация иная. Драйвер пакеты isochronous out выдает явно, мой процессор их ловит, но они все не более 24 байт длиной, вместо 1500 байт почти ожидаемых. По dmesg никаких проблем с этим самописным audio device не видно. Вот что такое можно сделать, если дескрипторы правильные, но данные не идут, и это на изохронную точку, которой ничего подтверждать не надо? Неделю бьюсь уже, хоть сниффер хардварный делай. Чую проблема какой-нибудь один несчастный битик, но вот где он.. Может есть идеи какие?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Со стороны устройства ендпоинт получать данные готов?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

41 minutes ago, GenaSPB said:

Со стороны устройства ендпоинт получать данные готов?

endpoint то да, подготовлена, от линуксового то драйвера ловит обрывки какие-то пакетов изохрона. Да и что значит "готов" применительно к изохрону? Изохрон не может сказать "не готов" или "подожди". Повалятся так повалятся, если я все правильно понимаю. Обратных связей по другим эндпойтам в моем варианте нет, "синхронный" режим с одной out точкой, девайс сам подстраивает своей кварец под поток. 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С пакетами 1500 будут большие проблемы. У Вас режим HS или FS? Для FS это просто не реально, для HS тоже будут сложности. Винда не работает с большими потоками по USB в изохроне. Мы в свое время пытались заставить, но не вышло ничего. Максимум, что она может - 3 пакета в одном микрофрейме за фрейм, все остальные режимы не работают, если нужно больше одного пакета в микрофрейме. Запихнуть пакеты в каждый микрофрейм тоже не получалось, даже по одному. Попробуйте уменьшить поток, может быть поможет понять проблему.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

35 minutes ago, Alex11 said:

С пакетами 1500 будут большие проблемы. У Вас режим HS или FS? Для FS это просто не реально, для HS тоже будут сложности. Винда не работает с большими потоками по USB в изохроне. Мы в свое время пытались заставить, но не вышло ничего. Максимум, что она может - 3 пакета в одном микрофрейме за фрейм, все остальные режимы не работают, если нужно больше одного пакета в микрофрейме. Запихнуть пакеты в каждый микрофрейм тоже не получалось, даже по одному. Попробуйте уменьшить поток, может быть поможет понять проблему.

 

до винды дело вообще не доходит - она совсем ничего не шлет. А девайсу с такими же дескрипторами - шлет. Не 1500, вроде около 500, ошибся. Суть не в этом увы

Пока что на FS ставлю только дескрипторы, мороку с HS оставлю на потом

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, DASM said:

Пока что на FS ставлю только дескрипторы, мороку с HS оставлю на потом

Оригинал-то HS-ный?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 hours ago, DASM said:

Не могу понять даже как подступиться. По Wirehark смотрю - выдает абсолютно те же самые дескрипторы, что и образцовая плата USB-I2S конверетера, что я брал за образец (есть сурцы). Но при попытке выдать звук - вижу три isochronous out пакета и молчок. Причем пакеты "без ответа" внутри Wirehark/ Я так понял, что, хотя изохронн не подразуемевает никаких ответов - это Wireshark пишет ответ от драйвера , мол "отправил". Соответвенно драйвер видать , такого не говорит. Ютуб тут же притормаживает и стопорит ролик. Не идет звук и данные вообще никак.

 

Какой тип синхронизации устройства? Как вариант, если это дуплексный  юсб девайс с имплисит синхронизацией, то такое поведение вполне возможно (на винде в фул спид видел подобное поведение с плойтековским и мбокс драйверами). Можно посмотреть на сурцы образца? И какой драйвер под виндой? Они вроде в 10 добавили поддержку юсб аудио 2. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Девайс этот https://www.chipdip.ru/product0/9000569733?from=suggest_product , там и исходники, сделано на базе референса STM похоже. Доберусь до работы - приведу их дискрипторы. Работет их как часики.

Синхронизация - первое что думал. Но у них в дескрипторах есть через #ifdef вариант без обратной связи и только одной изохронной pipe - так и перекомрилировал, работает.

После энумерации и перед play идут только две посылки специфичных для аудио, get_mute и вроде set-cur . По одной mute  проверяет, по другой частоту семплирования задает. Я в своем девайсе отвечаю на эти запросы точно также. И вот после этих двух запросов в чип и диповский начинается поток, а в мой - ничего, драйвер висит. У линуксовоги это тоже не работа, просто глючит иначе.

Драйвер винды хз какой, винда 10, последние паки. Но чудеса то не в драйвере, а почему разное поведение устройств, которые согласно Wireshark выглядят идентично. Вероятно он что-то не видит на самом низком уровне

9 hours ago, esaulenka said:

Оригинал-то HS-ный?

FS, у того чипа нет HS PHY. Правда в исходниках они 200 версию юсб почему-то оставили и отвечают на специфичные HS запросы. Я это пофиксил, отдаю 110 версию юсб, на работу их варианта не повлияло, избавился от лишних запросов только

Мой девайс - на АМ3352 с мутной менторовской коркой, но более менее с ней понятно, и, главное, обмен то она дает такой же в итоге, как и оригинал. До начала потока...

Заказал USB3300 - буду сниффер делать, другого выхода не вижу. Дело принципа разобраться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Столкнулся с точно такой же проблемой но на F103, только бьюсь уже два месяца :)

Удалось немного продвинуться только когда на ISO endopoint началь переключать биты DTOG_RX/DTOG_TX для работы double buffering. Какие-то данные под линуксом стали приходить, но под виндой ничего не изменилось...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

57 minutes ago, asnoeuh said:

Столкнулся с точно такой же проблемой но на F103, только бьюсь уже два месяца :)

Удалось немного продвинуться только когда на ISO endopoint началь переключать биты DTOG_RX/DTOG_TX для работы double buffering. Какие-то данные под линуксом стали приходить, но под виндой ничего не изменилось...

чет вообще связи не вижу, это же винда  пакетов вообще не дает на выход в endpoint ... ну радует , что не я один. А у вас STM - попробуйте адаптировать тот код от Чипа Дипа. У меня сложнее, ибо окромя таких проблем есть еще полная неуверенность что mentor MUSB кора работает так, как представляю по разрозненным докам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, DASM said:

буду сниффер делать

Я, кстати, искал косяк в USB с помощью Saleae. Для фулл-спид его вполне хватает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

36 minutes ago, esaulenka said:

Я, кстати, искал косяк в USB с помощью Saleae. Для фулл-спид его вполне хватает.

а там есть какой плагин для этого или визуально?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 minute ago, DASM said:

а там есть какой плагин для этого или визуально?

Самый низкий уровень оно умеет: показывает PID-адрес-данные-контролька. А дальше - беда, пришлось USB in Nutshell вспоминать.

Правда, у меня этот самый низкий уровень и глючил...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Quote

буду сниффер делать

DASM,

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, Alex11 said:

DASM,

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

а в файл можно будет обмен скинуть, чтобы дома потом спокойно изучить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...