The field ipc_gid must be a valid group (create group audio)

你好!这里是风筝的博客,
欢迎和我一起交流。

在淘宝上买了一个usb声卡,移植好一些库后使用aplay命令播放音乐,发现:

ALSA lib pcm_direct.c:1654:(snd1_pcm_direct_parse_open_conf) The field ipc_gid must be a valid group (create group audio)
aplay: main:722: audio open error: Invalid argument

这样的错误是由于没有组用户,我们做如下操作即可:
vi /etc/group
admin:x:0:admin
audio:x:0:audio
anonymous:x:500:anonymous
保存退出即可。

还有一个是设置音量大小的:
cat /proc/asound/cards
可以查看是哪个声卡,这里我用的是声卡0

amixer -c 0 controls
可以查看有哪些控件,-c 0代表的就是声卡0
得到:
numid=5,iface=MIXER,name=’Headphone Playback Switch’
numid=6,iface=MIXER,name=’Headphone Playback Volume’
numid=3,iface=MIXER,name=’Mic Playback Switch’
numid=4,iface=MIXER,name=’Mic Playback Volume’
numid=7,iface=MIXER,name=’Mic Capture Switch’
numid=8,iface=MIXER,name=’Mic Capture Volume’
numid=9,iface=MIXER,name=’Auto Gain Control’
numid=2,iface=PCM,name=’Capture Channel Map’
numid=1,iface=PCM,name=’Playback Channel Map’

amixer -c 0 contents
可以看控件里的内容

这样我们就可以设置音量:
amixer cset numid=6 30,30
因为音量对应的索引号就是6,这样左右音量就会变成30了。

如果乱写索引的话,就会出现:
amixer: Cannot find the given element from control default

当然,这样比较麻烦,cset还得指定索引号,设备名,混音器类型
sset只需要指定设备名就行了:
amixer scontrols
得到:
Simple mixer control ‘Headphone’,0
Simple mixer control ‘Mic’,0
Simple mixer control ‘Auto Gain Control’,0

这里我们控制Headphone就是我们的耳机了:
amixer sset Headphone 10
这样就直接设置音量为10了

参考自:http://imgtec.eetrend.com/blog/3975
https://www.linuxquestions.org/questions/linux-hardware-18/can%27t-use-microphone-635428/

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IPC_CREAT | 0666是一个标志位,用于创建一个新的IPC对象并设置权限为0666。IPC对象是一种用于进程间通信的机制,例如消息队列、共享内存和信号量等。当使用IPC_CREAT标志位时,如果指定的IPC对象不存在,则会创建一个新的对象;如果对象已经存在,则返回已存在的对象的标识符。 0666是一个八进制数,表示权限位。在Linux系统中,权限位用于确定对IPC对象的访问权限。0666表示所有用户都具有读写权限,没有执行权限。具体的权限位含义如下: - 第一位:文件类型,0表示IPC对象 - 后三位:所有者权限,6表示读写权限 - 后三位:所属组权限,6表示读写权限 - 后三位:其他用户权限,6表示读写权限 因此,IPC_CREAT | 0666表示创建一个新的IPC对象,并将权限设置为所有用户都具有读写权限。 范例:<<引用:struct ipc_perm { __kernel_key_t key; __kernel_uid_t uid; __kernel_gid_t gid; __kernel_uid_t cuid; __kernel_gid_t cgid; __kernel_mode_t mode; unsigned short seq; }。引用:struct ipc_perm { __kernel_key_t key; __kernel_uid_t uid; __kernel_gid_t gid; __kernel_uid_t cuid; __kernel_gid_t cgid; __kernel_mode_t mode; unsigned short seq; }。 请回答我或者给我介绍或演示一下:IPC_CREAT | 0666)?>> IPC_CREAT | 0666是一个标志位,用于创建一个新的IPC对象并设置权限为0666。具体的权限位含义如下: - 第一位:文件类型,0表示IPC对象 - 后三位:所有者权限,6表示读写权限 - 后三位:所属组权限,6表示读写权限 - 后三位:其他用户权限,6表示读写权限 这个标志位可以用于创建消息队列、共享内存和信号量等IPC对象,并设置它们的权限为所有用户都具有读写权限。例如,在创建一个新的消息队列时,可以使用IPC_CREAT | 0666标志位来指定权限。 相关问题--: 1. 如何使用IPC_CREAT标志位创建一个新的消息队列? 2. IPC对象的权限如何影响进程对其的访问? 3. 除了0666,还有哪些常用的权限位?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值