Skip to main content
mteaching
Associate III
November 15, 2022
Solved

Command “ alsamixer�? doesn't work in SDK "en.FLASH-stm32mp1-openstlinux-5.15-yocto-kirkstone-mp1-v22.06.15"

  • November 15, 2022
  • 1 reply
  • 3588 views
root@stm32mp1:~# uname -a
Linux stm32mp1 5.15.24 #1 SMP PREEMPT Wed Feb 16 11:56:41 UTC 2022 armv7l armv7l armv7l GNU/Linux
root@stm32mp1:~# pacmd list-sinks-inputs
No PulseAudio daemon running, or not running as session daemon.
root@stm32mp1:~# alsamixer
ALSA lib ../../alsa-plugins-1.2.6/pulse/pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Access denied
 
cannot open mixer: Connection refused
root@stm32mp1:~#
root@stm32mp1:~# aplay /usr/local/demo/media/ST12266_269_full_technology-freaks_0160.ogg
ALSA lib ../../alsa-plugins-1.2.6/pulse/pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Access denied
 
aplay: main:831: audio open error: Connection refused

My board is STM32MP157F-DK2.

 As expected I can't hear anything, but in SDK V3.X.X everything works fine.

Please fix the bug as soon as possible.

This topic has been closed for replies.
Best answer by Olivier GALLIEN

Hi @mteaching​ ,

Since error return is "access denied" I wonder it may be due to a change in V4.0 compared to V3.0 :

New "weston" user now required for "wayland", which avoids executing some application with root profile for security reasons

  • su -l weston -c "<command>" could be used to specify the user profile

which mainly impacts Graphic and Audio frameworks usage.

No opportunity to validate at my end right now. Could you give a try ?

  

Olivier

1 reply

Olivier GALLIEN
Olivier GALLIENBest answer
Technical Moderator
November 15, 2022

Hi @mteaching​ ,

Since error return is "access denied" I wonder it may be due to a change in V4.0 compared to V3.0 :

New "weston" user now required for "wayland", which avoids executing some application with root profile for security reasons

  • su -l weston -c "<command>" could be used to specify the user profile

which mainly impacts Graphic and Audio frameworks usage.

No opportunity to validate at my end right now. Could you give a try ?

  

Olivier

Olivier GALLIEN In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.
mteaching
mteachingAuthor
Associate III
November 16, 2022

You're right.

root@stm32mp1:~# su weston
weston@stm32mp1:/home/root$ alsamixer
weston@stm32mp1:/home/root$ ls /home/weston/
moon.mp3 sun.wav typescript weston.log
weston@stm32mp1:/home/root$ gst-launch-1.0 playbin uri=file:///home/weston/sun.wav
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
Redistribute latency...
New clock: GstPulseSinkClock
Got EOS from element "playbin0".
Execution ended after 0:00:02.212815334
Setting pipeline to NULL ...
Freeing pipeline ...
weston@stm32mp1:/home/root$ gst-launch-1.0 playbin uri=file:///home/weston/moon.mp3
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstPulseSinkClock
Redistribute latency...
Got EOS from element "playbin0".
Execution ended after 0:00:07.860385379
Setting pipeline to NULL ...
Freeing pipeline ...

​After I switch to 'weston' user, everything works fine.

But I'm thinking that if I write a project in C that uses both Audio frameworks and files that need to be accessed by root users, is there an easy way for root users to access audio and graphics frameworks just like SDKV3.x.x? Like the command below, gst-launch-1.0 cannot play the audio under "/home/root/"

weston@stm32mp1:/home/root$ ls /home/root/
ls: cannot open directory '/home/root/': Permission denied
weston@stm32mp1:/home/root$ gst-launch-1.0 playbin uri=file:///home/root/moon.mp3
Setting pipeline to PAUSED ...
ERROR: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstFileSrc:source: Could not open file "/home/root/moon.mp3" for reading.
Additional debug info:
../gstreamer-1.20.1/plugins/elements/gstfilesrc.c(557): gst_file_src_start (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstFileSrc:source:
system error: Permission denied
ERROR: pipeline doesn't want to preroll.
ERROR: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstFileSrc:source: GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure.
Additional debug info:
../gstreamer-1.20.1/libs/gst/base/gstbasesrc.c(3556): gst_base_src_start (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstFileSrc:source:
Failed to start
ERROR: pipeline doesn't want to preroll.
ERROR: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstFileSrc:source: Could not open file "/home/root/moon.mp3" for reading.
Additional debug info:
../gstreamer-1.20.1/plugins/elements/gstfilesrc.c(557): gst_file_src_start (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstFileSrc:source:
system error: Permission denied
ERROR: pipeline doesn't want to preroll.
ERROR: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstFileSrc:source: GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure.
Additional debug info:
../gstreamer-1.20.1/libs/gst/base/gstbasesrc.c(3556): gst_base_src_start (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstFileSrc:source:
Failed to start
ERROR: pipeline doesn't want to preroll.
Failed to set pipeline to PAUSED.
Setting pipeline to NULL ...
Freeing pipeline ...
weston@stm32mp1:/home/root$

I watched the weston demo that comes with the development board. But I didn't find the statement to switch to the user weston. May I ask how it calls the audio framework with the root user?

0693W00000WIRVZQA5.png0693W00000WIRVjQAP.png