Не работает микрофон usb web-камеры Logitech C270

Здравствуйте, всем.
Писал уже про эту вебку и ее микрофон, и даже костыль был найден, но очень неудобный, да и срабатывал не всегда.
Скайпом пользовался очень редко, поэтому забил на эту проблему. но сейчас снова нужен скайп, а микрофон так и не работает нормально.

Проблема с микрофоном, походу, не только в скайпе, а в любом приложении, записывающем звук.
Выяснил в /proc что микрофон в этой usb-камере поддерживает четыре частоты записи: 16000, 24000, 32000, и 48000Гц.
Если записывать arececord'ом на частотах 16000 или 24000, то звук нормальный, если на частотах 32000 и 48000 - то ускоренный (бурундучий).
Пробовал в /etc/pulse/daemon.conf менять дефолтную частоту и на 41400, и на 48000, и на 16000, и на 24000 - результат один: при первом аудиовызове в скайпе микрофон работает нормально, при последующих снова ускоренно (иногда вообще без звука и скайп выдает сообщение что микрофон не найден).
Есть какой-нибудь способ указать скайпу принудительно использовать нужную частоту записи, 16000 или 24000?

Еще пробовал патчить файл исходников ядра drivers/usb/core/quirks.c вот этим патчем и собирал ядро. Ядро собралось, система запустилась, но микрофон лучше не заработал.
Кстати, в исходниках ядра (в файле который патчил) почему-то не было строк, которые добавляет этот патч, хотя в англ топике по ссылке выше написано что этот патч потом внесли в ядро. Выходит потом снова выкинули?

Подскажите, кто знаком со сборкой ядра или модулей, как мне пересобирать отдельно модуль usbcore и подсовывать его ядру для проверки? Потому что каждый раз из-за этого модуля пересобирать все ядро - это слишком. На моем компьютере понадобилось около 2,5 часов при полной загрузке 4-х ядер.
В том же топике, далее вроде бы есть инструкция по сборке одтельно модуля. Попробовал по ней, вроде бы собирается и "vermagic" пишет как в том примере. Но при сборке ram image с этим модулем mkinitcpio выдает ошибку: "error exec format" (точно не помню сейчас, но как-то так). Initramfs при этом собирается. Но после загрузки системы с этого образа не работают вообще все usb-устройства.
Хочу еще разные варианты изменения того файла попробовать, если научусь правильно собирать этот модуль ядра отдельно.

Заметил еще (не знаю после какого обновления, но раньше такого не было), что в /dev появляются теперь два видео устройства video1 и video2 (video0 занято тв-тюнером). В настройках скайпа, соответственно также видны две веб-камеры с одинаковыми vid и pid, но, при выборе одной из них ничего не работает, даже видео. При выборе другой видео есть, звук - ускоренный.
Может быть в этом проблема?
В udev rules у меня ничего затрагивающего видео устройства нет. Кстати, есть ли в правилах udev возможность удаления устройства из /dev директории? То есть можно ли с помощью правила удалить устройство /dev/video2.

Может тв-тюнер попробовать вытащить?

Вроде бы все описал. Если нужны какие-то логи, файлы, напишите, предоставлю.
www.linux32.ru - новости и статьи о Linux
Имею такую же вебку со звуком никаких проблем нет, ядро и алса стандартные, пульсы нет скайп через apulse запускается
vs220, у вас одно видео устройство в /dev появляется или два?
www.linux32.ru - новости и статьи о Linux
Два
vs220
скайп через apulse запускается
Дык, это же для skype-legacy надо было.
skypeforlinux работает с альсой без этого.
---
"Бурундучего" голоса не было, но при частоте дискретизации >22050 Гц было неприятное потрескивание.
Прописал 22050 в конфиге альсы. Порядок.

ЗЫ. Пульсы нет.
---
$ cat /proc/asound/card2/stream0
A4 TECH A4 TECH USB2.0 PC Camera J at usb-0000:00:1d.7-2, high speed : USB Audio

Capture:
  Status: Stop
  Interface 3
    Altset 1
    Format: S16_LE
    Channels: 1
    Endpoint: 3 IN (NONE)
    Rates: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000
    Data packet interval: 1000 us
32reg
как мне пересобирать отдельно модуль usbcore и подсовывать его ядру для проверки?
Пересобрать можно и отдельно только один модуль, вроде я как то уже тебе описывал это и вроде у тебя все получилось.
Не знаю причем тут usbcore, но если причина действительно в нем и помогло внесение изменений в quirks.c, то я бы попробовал поиграться с параметрами модуля usbcore и в 1-ую очередь с параметром quirks=vendorID:productID:quirks
Если получится, то это будет самый лучший вариант

EDIT 1 - приведенный патч равносилен загрузке модуля usbcore с параметром quirks=vendorID:productID:b (например, quirks=0x1bcf:0x2805:b или quirks=1bcf:2805:b)
где b = USB_QUIRK_RESET_RESUME и означает - device can't resume correctly so reset it instead - что и добавили в том патче
Если не все будет OK, можно добавлять другие значения quirks
Ошибки не исчезают с опытом - они просто умнеют
32reg
Кстати, в исходниках ядра (в файле который патчил) почему-то не было строк, которые добавляет этот патч
Да, проверил, действительно устройства с VID=0x046d, PID=0x0825 в данном файле нет
rg '0x046d, 0x0825' ~/linux-4.16.8/drivers/usb/core/quirks.c
…. пусто ….
Для проверки взял другое устройство
rg '0x046d, 0xc05a' ~/TTT/linux-4.16.8/drivers/usb/core/quirks.c
284: { USB_DEVICE(0x046d, 0xc05a), .driver_info = USB_QUIRK_RESET_RESUME },

Значит параметр quirks=0x046d:0x0825:b или quirks=046d:0825:b должен сработать
Ошибки не исчезают с опытом - они просто умнеют
vasek, спасибо за развернутые ответы.
Нет, не помогло внесение изменений в quirks.c
Я не нашел пока вашего описания как собирать модуль, если не трудно дайте ссылку пожалуйста.
Я заметил в этом файле отрывок, отвечающий за все веб-камеры от Logitech. Там что-то с общим VendorID связано было (046d значение).
Хочу попробовать удалить общую часть про logitech и добавить патч именно для своей вебки. Может так что-то выйдет.

Загружать usbcore с параметром quirks=046d:0825:USB_QUIRK_RESET_RESUME пробовал. Ничего не изменилось.
Сейчас попробовал с параметром :b в конце строки вместо USB_QUIRK_RESET_RESUME - тоже ничего. Хотя должно было... Я пробовал параметры задавать через файл в /etc/modprobe.d, сейчас попробую через grub.
Я про значение :b не знал. А где вы нашли информацию по возможным значениям параметра quirks? Какие еще значения могут быть?

Aivar, у меня кеды и пульс идет как зависимость. Через -Rdd удалять его не очень хочется, боюсь что-нибудь другое отвалится. Пробовал поставить apulse без удаления pulseaudio - тоже не вышло.
Можно ваш конфиг для alsa посмотреть? Особенно где вы выставляете макс частоту. Пульс вроде бы должен учитывать конфиги альсы в домашней директории, если они есть. Может с конфигом получиться...
www.linux32.ru - новости и статьи о Linux
32reg
Через -Rdd удалять его не очень хочется, боюсь что-нибудь другое отвалится
прибейте временно
 systemctl --user stop pulseaudio.socket
systemctl --user stop pulseaudio.service
или попробовать
pasuspender --skypeforlinux
лучше чем лезть в ядро, повторю у меня нормально работает на любой частоте. Сейчас воткнул в другой комп с электронным скайпом(skypeforlinux-stable-bin-8.25.0.5-1) тестовый звонок тоже отличный звук с микрофона
Какой у вас ID устройства может под одним названиям разные выпускали
у меня
lsusb
Bus 002 Device 003: ID 046d:0825 Logitech, Inc. Webcam C270
cat /proc/asound/card2/stream0
Capture:
  Status: Stop
  Interface 3
    Altset 1
    Format: S16_LE
    Channels: 1
    Endpoint: 6 IN (ASYNC)
    Rates: 16000
    Data packet interval: 1000 us
  Interface 3
    Altset 2
    Format: S16_LE
    Channels: 1
    Endpoint: 6 IN (ASYNC)
    Rates: 24000
    Data packet interval: 1000 us
  Interface 3
    Altset 3
    Format: S16_LE
    Channels: 1
    Endpoint: 6 IN (ASYNC)
    Rates: 32000
    Data packet interval: 1000 us
  Interface 3
    Altset 4
    Format: S16_LE
    Channels: 1
    Endpoint: 6 IN (ASYNC)
    Rates: 48000
    Data packet interval: 1000 us
systemctl –user stop pulseaudio.socket
systemctl –user stop pulseaudio.service
пробовал, не помогает.
lsusb -s 001:004
Bus 001 Device 004: ID 046d:0825 Logitech, Inc. Webcam C270
cat /proc/asound/card2/stream0
USB Device 0x46d:0x825 at usb-0000:00:12.2-6, high speed : USB Audio

Capture:
  Status: Stop
  Interface 3
    Altset 1
    Format: S16_LE
    Channels: 1
    Endpoint: 6 IN (ASYNC)
    Rates: 16000
    Data packet interval: 1000 us
  Interface 3
    Altset 2
    Format: S16_LE
    Channels: 1
    Endpoint: 6 IN (ASYNC)
    Rates: 24000
    Data packet interval: 1000 us
  Interface 3
    Altset 3
    Format: S16_LE
    Channels: 1
    Endpoint: 6 IN (ASYNC)
    Rates: 32000
    Data packet interval: 1000 us
  Interface 3
    Altset 4
    Format: S16_LE
    Channels: 1
    Endpoint: 6 IN (ASYNC)
    Rates: 48000
    Data packet interval: 1000 us
Вот еще на всякий случай моя звуковая:
lspci | grep -i audio
00:14.2 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 Azalia (Intel HDA)
01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] RV770 HDMI Audio [Radeon HD 4850/4870]
www.linux32.ru - новости и статьи о Linux
 
Зарегистрироваться или войдите чтобы оставить сообщение.