Я давно понял, что линух костыльное говно, но сегодня будет особая рубрика "почему я ебал рот опенсорца и поеттеринга в частности". А ебал я их рот из-за того, что они пишут документацию, как конченные ублюдки.
Наушники. По блютузу. В дебиане все нормально. В арче рвут уши. Долго не могу понять схуяли. Замечаю, что дебиан не реагирует, когда я нажимаю кнопки громкости на наушниках, но сама громкость меняется, стало быть в самих наушниках есть контроллер. Арч же синхронизирует звук, так что если нажимаю кнопку на наушниках, то и говнопульс тоже прибавляет/убавляет звука. Понимаю, что в этом корень блядской проблемы. Пишу
pactl list links
Вижу, что в дебиане нету флага HW_VOLUME_CONTROL, а в арче есть. Начинаю гуглить. Естественно, нихуя в интернете нет, документации в том чисте. Даже самой обосраной нет. Пол ночи ебусь и не понимаю, что за хуета и как этот блядский флаг убрать.
Скачиваю репу пульса, нахожу там ./arch/197046/src/modules/bluetooth
захожу и начинаю egrepить эту хуету. И вправду, в module-bluez5-device.c нахожу коммент, пишуший некую заметку об этой хуете. Безуспешно листаю сорцы. А потом вдруг над комментом замечаю, что
if (pa_bluetooth_profile_is_a2dp(u->profile) && !u->transport->device->avrcp_absolute_volume)
return;
>avrcp_absolute_volume
> absolute_volume
Вспоминаю гитлаб. Какие-то долбоебы нажаловались, мол на наушниках громкость идет отдельно от громкости на пульсе, мол пофиксите. Ну девы блять и пофиксили, чтобы похоронить мои уши нахер. А как эту хуету откатить никто не сказал. Конечно же им важнее дебилы, которые не могут одновременно настраивать звук в двох местах, потому что они тупые блять, у них от этого голова болит, ты шооо звук в двох местах, как же блять его настрааивать-то????? Самое важное, они эту хуету имплементировали и гордо назвали "Absolute volume". Так вот это вот "avrcp_absolute_volume" по смыслу пиздец как подходит, я начал это говно egrepить по сорцам и нашел, что в функции
int pa__init(pa_module* m) {
есть строка
bool autodetect_mtu, avrcp_absolute_volume;
Стало тепло, начал листать дальше, а там
if (pa_modargs_get_value_boolean(ma, "avrcp_absolute_volume", &avrcp_absolute_volume) < 0) {
pa_log("Invalid boolean value for avrcp_absolute_volume parameter");
goto fail_free_modargs;
}
И тут я понял, что его можно как аргумент в какой-то модуль послать. Это в том же файле пока что. Так вот в файле module-bluez5-discover.c я нашел
PA_MODULE_USAGE(
"headset=ofono|native|auto"
"autodetect_mtu=<boolean>"
"enable_msbc=<boolean, enable mSBC support in native and oFono backends, default is true>"
"output_rate_refresh_interval_ms=<interval between attempts to improve output rate in milliseconds>"
"enable_native_hsp_hs=<boolean, enable HSP support in native backend>"
"enable_native_hfp_hf=<boolean, enable HFP support in native backend>"
"avrcp_absolute_volume=<synchronize volume with peer, true by default>"
);
И у меня нахуй снесло крышу, потому что нигде в документации таких параметров и близко нету. Конченные суки. Я всю ночь сидел блять, потому что им впадлу на фридесктопе обновить доки.
В итоге я просто в default.pa переписал
load-module module-bluez5-discover
на
load-module module-bluez5-discover avrcp_absolute_volume=false
И проблема решена. Это пиздец.
Простите за неровный почерк я нихера не выспался и я пиздец какой сгоревший щас.