2017-04-30 5 views
0

私はLinux(2.6.39カーネル)を使用していて、ホストのLinux OSからJabraデバイスにボリュームの増分/減分コマンドを送信できる方法を探しています。 WindowsとUbuntuの両方でこの機能が可能であることがわかりました.Wbuntuでは、PCからのボリュームの制御によってJabraボリュームが変更されます。LinuxホストからJabra 710 USBスピーカーボリュームを制御する

JabraからホストOSへのコンシューマHIDボリュームの増分/減分コマンドを受け入れることができますが、それ以外の方法はできません。また、HIDIOCSUSAGE ioctlを使用してJabraにMuteまたはOff-Hookコマンドを送信できますが、公式のUSB使用テーブルdocumentのボリュームコントロールに対応する使用IDは見つかりませんでした。

ホストからのボリュームコマンドが実際にHIDやsnd-usb-audioカーネルモジュールなどの他のAPI経由で送信されるかどうかはわかりません。

私はあなたの洞察に感謝します。

+0

は 'amixer scontrolsの出力を表示します'このデバイスのために。 –

+0

'$ amixer -c 1 scontrols''シンプルミキサーコントロール 'PCM'、0' 'シンプルミキサーコントロール 'ヘッドセット'、0' – bentz123

+0

これで答えが分かりました。 –

答えて

0

だけ実行 、その後、名前とそのミキサー制御の有効範囲を調べる:

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: %s\n", 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; 
} 
+0

ありがとう!私が探していたもの – bentz123

関連する問題