coder icon indicating copy to clipboard operation
coder copied to clipboard

TTS and Coder as root

Open miniBloq opened this issue 11 years ago • 2 comments

Hi,

I was experimenting with Text2Speech, and found that most TTS node packages do not work with Coder (in fact none in my experiments). Finally, I wrote code to run espeak commands using child_process, and it only worked when running Coder as root. Here is the JavaScript code added at the end of the NODE code (NODE tab in Coder) which worked only when running Coder as root:

var run = require('child_process').exec;

exports.on_socket_say = function( socket, data ) { if ( data.value !== "undefined" ) { console.log('running server side code'); run('espeak -ven-us+f4 -p50 -s170 "Hello humans" --stdout | aplay', function callback(error, stdout, stderr){ console.log('error: ' + error); console.log('stderr: ' + stderr); console.log('stdout: ' + stdout); });
} };

I think that this behavior could also happen for other packages. So I did these changes (just replaced coder user by root) to the coder-daemon and it's working now:


do_start() {

Return

0 if daemon has been started

1 if daemon was already running

2 if daemon could not be started

start-stop-daemon --start --background --quiet --pidfile $PIDFILE --exec $DAEMON
--chuid root --user root --umask $UMASK --chdir $DAEMON_PATH --test > /dev/null RETVAL="$?" [ "$RETVAL" = "0" ] || return 1

start-stop-daemon --start --background --quiet --pidfile $PIDFILE --make-pidfile --exec $DA$ --chuid root --user root --umask $UMASK --chdir $DAEMON_PATH -- $DAEMON_ARGS RETVAL="$?" [ "$RETVAL" = "0" ] || return 2 }


Also changed this:

start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user root --pidfile $PIDFILE


But I have a question: Is there any side effect or something which may stop to work or malfunction by not running the Coder daemon with the Coder user? Or is this okay?

Of course, I can give further details of what happened in the console when running that code as Coder instead of root, but basically, it had problems with the ALSA drivers.

Thanks! Julián

miniBloq avatar Aug 07 '14 18:08 miniBloq

Hmmm. It would be fun to get this working right inside coder, and without using the root user. Do you know what permissions it needs? Can the pi user run this from the command line without using sudo?

jmstriegel avatar Feb 09 '15 05:02 jmstriegel

Adding the pi user to the audio group should be enough

plietar avatar Feb 09 '15 16:02 plietar