C-从Linux主机控制Jabra 710 USB扬声器音量



我正在使用Linux(2.6.39内核(,并尝试找到一种使我可以将卷增量/减少命令从主机Linux OS发送到Jabra设备的方法。我在Windows和Ubuntu中看到了这种功能,其中控制PC的音量改变了Jabra卷。

我能够接受消费者从jabra到主机操作系统的HID HID增量/减少命令,但不相反。另外,我可以使用hidiocsusage ioctl将静音或钩命令发送到Jabra,但是我找不到官方USB使用表文档中的卷控件的相应用法ID。

我不确定主机的卷命令是否确实是通过HID或其他API发送的,例如SND-USB-AUDIO内核模块。

我会感谢您的见解。

找出该混音器控件的名称和有效范围,然后只是执行:

system("amixer cset name='Master Playback Volume' 42");

或直接访问控件:

#include <stdio.h>
#include <stdlib.h>
#include <alsa/asoundlib.h>
static void check(int err, const char *f)
{
        if (err < 0) {
                fprintf(stderr, "%s failed: %sn", f, snd_strerror(err));
                exit(EXIT_FAILURE);
        }
}
#define CHECK(f) check(f, #f)
int main()
{
        snd_ctl_t *ctl;
        snd_ctl_elem_value_t *value;
        CHECK(snd_ctl_open(&ctl, "hw:1", 0));  // card number
        snd_ctl_elem_value_alloca(&value);
        snd_ctl_elem_value_set_interface(value, SND_CTL_ELEM_IFACE_MIXER);
        snd_ctl_elem_value_set_name(value, "Master Playback Volume");
        snd_ctl_elem_value_set_integer(value, 0, 42);
        CHECK(snd_ctl_elem_write(ctl, value));
        snd_ctl_close(ctl);
        return 0;
}

最新更新