From acbd6a153fbb4fb375be43d87a2ad055b80681e3 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Sat, 5 Jan 2019 16:12:51 +0300 Subject: [PATCH] =?utf8?q?=D0=92=D0=BA=D0=BB=D1=8E=D1=87=D0=B5=D0=BD=D0=B8?= =?utf8?q?=D0=B5=20bitperfect=20=D0=B7=D0=B2=D1=83=D0=BA=D0=B0=20=D0=B2=20?= =?utf8?q?USB=20=D0=B7=D0=B2=D1=83=D0=BA=D0=BE=D0=B2=D1=83=D1=85=D0=B0?= =?utf8?q?=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Долгие годы у меня была только одна USB-звуковуха, которая всегда при подключении имела один и тот же "адрес" в sysctl дереве и делать включение bitperfect-а в ней было тривиально: % cat /etc/devd/myaudio.conf attach 20 { device-name "uaudio[0-9]"; action "/sbin/sysctl dev.pcm.3.bitperfect=1"; }; теперь у меня появилась и USB-гарнитура, которая bitperfect не требует, а порядок подключения может быть самый разный. Пока сделал вот такое решение чтобы только ASUS звуковуху обрабатывать: % cat /etc/devd/myaudio.conf attach 20 { device-name "uaudio[0-9]"; match "vendor" "^0x0b05$"; match "product" "^0x17f3$"; action "/etc/devd/myaudio-asus.sh $vendor $product"; }; % cat /etc/devd/myaudio-asus.sh #!/bin/sh [ $# -eq 2 ] || exit 1 vendor=$1 product=$2 uaudio=$(sysctl dev.uaudio | sed -n "s/^dev\.uaudio\.\([^.]*\)\..*vendor=$vendor product=$product.*\$/\1/p") pcm=$(sysctl dev.pcm | sed -n "s/^dev\.pcm\.\([^.]*\)\.%parent: uaudio$uaudio\$/\1/p") /sbin/sysctl dev.pcm.$pcm.bitperfect=1 Конечно, читается не просто, но задача выполнена за короткий срок и вполне себе работает. Я за такое решение, пускай не очень элегантное, вместо того чтобы иметь невероятный по размерам и сложности framework в виде поделий Поттеринга. -- 2.48.1