It’s been a long time since I used a CLI and never under any kind of linux - so I thought these were great conditions to launch into building a Picroft/Mycroft device.
I’ve got myself into deep water much quicker than I imagined.
The audio output is confused - If I ask it to sing a song, the song comes out of my HDMI connection but nothing else can be heard from any output.
I’ve spent a couple of days on google and determined that I might need to edit one of the mycroft.conf files and that the easiest way to do that is using “mycroft-config edit system”.
This brings up the config file in a kind of nano editor. I make the changes I want and hit exit. It the asks me if i want to save the file and I hit ‘y’. Then it asks if I want to “replace ‘/etc/mycroft/mycroft.conf’ , overriding mode 0664 (rw-rw-r–)”.
Responding “y” to this gets me “cannot move ‘/tmp/mycroft.json’ to ‘/etc/mycroft/mycroft.conf’ : Permission denied”
I’ve tried all sorts to get around this (including “sudo mycroft-config…” and chmod) but they all end in a problem with permissions.
Does anyone else have any suggestions, please?
What user are you running as and does that user own /etc/mycroft/mycroft.conf?
Thanks for responding so quickly.
It’s set to auto-login as the ‘pi’ user. I’m not sure if they own /etc/mycroft/mycroft.com but, based on what I’m seeing, I’m going to guess that they don’t.
I saw somewhere that suggested using something like ‘sudo su mycroft’ but, from memory, that returned something like ‘no such user’ or ‘user unrecognised’, or something like that.
I couldn’t get the official image to work so I ended up using this guide: enclosure-picroft/image_recipe.md at buster · MycroftAI/enclosure-picroft · GitHub
@amartin - Looking at my system, I don’t even see an /etc/mycroft/ directory. I try the same command and get the same error. Sounds like a bug in mycroft-config trying to write to a file in a directory that doesn’t exist.
The user pi cannot create a file under /etc/. This shows the permissions for that directory. It is owned by root and only the owner has write permission:
$ ls -ld /etc
drwxr-xr-x 138 root root 8192 Sep 10 17:57 /etc
Let’s back up on the issue. Have you tried arecord and aplay to test your mic and speakers? I believe this should work (if arecord fails, try removing the -c 2 args):
$ arecord -r 48000 -c 2 -f S16_LE -d 5 /tmp/test-mic.wav
$ aplay /tmp/test-mic.wav
The arecord command will record for 5 seconds, so say anything after you run it. It saves it to a file in /tmp/. The aplay command then should play back what you said.
Hope this helps.
Thanks for your continued help here, Mike.
ls -ld /etc returns
drwxr-xr-x 86 root root 4096 Sep 10 13:34
The same permissions as you shared but the numbers are different (86 and 4096 vs 138 and 8192) - I don’t know if that’s important.
I tried the arecord command but it returned
arecord: main:828: audio open error: No such file or directory
For reference, during the initialisation, the mic test didn’t output any sound either.
I’ve been trying to follow the guidance set out In another thread but keep running into the permissions problem - I’m using a 4B (4Gb) and seem to have everything running correctly except the sound. I haven’t tinkered with anything else or installed any skills other than the ones that came as part of the regular install process.
mycroft-cli-client shows that it’s hearing me and is responding but the only time is has any audible output is when asked to sing and that comes through on the HDMI audio channel.
“mycroft-config edit system” brings up a file that shows the outputs as:
"play_wav_cmdline": "aplay -Dhw:0,0 %1",
"play_mp3_cmdline": "mpg123 -a hw:0,0 %1"
This seems to be the HDMI output but nothing except the singing comes through on that.
I tried running Sonic Pi under Raspbian on the same machine and the sound comes through fine - so I know it’s not a hardware issue.
Resigning myself to the possibility that I may have to run through the whole install again just to choose a different audio output during setup. That’s a project for NEXT weekend.
Well this is a problem. But it may be in how you called arecord - which is finicky because microphones have a lot of variables. So I wrote a wrapper around it to look in
/proc/sound/card* files and pass the correct args. Could you please do this to get the script named
$ git clone https://github.com/mike99mac/mycroft-tools.git
$ cd mycroft-tools
$ sudo ./setup.sh
$ which testrecord
The commands do this:
- cd - change to home directory
- git clone - pull code down from the Internet
- cd mycroft-tools - change to the new directory
- setup.sh - copy the scripts to /usr/local/sbin
- which - test if the executable is found in your PATH
If the which command fails, something went wrong. If it succeeds, you can run
Also, there is a script
lsenv which lists your environment, like where mycroft, pulseaudio and emby are running, plus other info. That might give some clues.
Hope this helps.
Thank you so much for continuing with this!
Installing mycroft-tools went well and seemed to work although there was still no audio after running testrecord followed by testplay (obviiously I was making noises while recording!). No errors were reported.
The lsenv script returned the following
Status of mycroft:
Unit mycroft.service could not be found.
–) WARNING: mycroft is not running as a service ... checking for processes ...
Found matching processes:
pi. 703 1 6 13:29 tty1 00:00:29 python3 -m mycroft.messagebus.service
pi. 706 1 18 13:29 tty1 00:01:30 python3 -m mycroft.skills
pi. 709 1 1 13:29 tty1 00:00:05 python3 -m mycroft.audio
pi. 712 1 5 13:29 tty1 00:00:24 python3 -m mycroft.client.speech
pi. 715 1 4 13:29 tty1 00:00:20 python3 -m mycroft.client.enclosure
pi. 855 712 0 13:29 tty1 00:00:00 /home/pi/.local/share/mycroft/precise/precise-engine/precise-engine /home/pi/.local/share/mycroft/precise/hey-mycroft.pb 2048
pi. 860 855 41 13:29 tty1 00:03:20 /home/pi/.local/share/mycroft/precise/precise-engine/precise-engine /home/pi/.local/share/mycroft/precise/hey-mycroft.pb 2048
Status of emby-server:
Unit emby-server.service could not be found.
–) WARNING: emby-server is not running as a service ... checking for processes ...
WARNING: no porcesses matching emby-server found
Status of pulseaudio:
–) pulseaudio is running as a process:
pi 607 543 3 13:29 ? 00:00:17 /usr/bin/pulseaudio --daemonize=no
IP address: 192.168.0.53
temperature: 55C / 131F
total used free shared buff/cache available
Mem: 3.7Gi 243Mi 3.1Gi 8.0Mi 447Mi 3.4Gi
Swap: 99Mi 0B 99Mi
CPU usage: 18%
EDIT: I’m going to try building the image again on a spare sd card. Then I can experiment with different audio options during setup
@amartin - good you’re making some progress. It sounds like record is working, but not playback is not.
You wrote: "I’m going to try building the image again on a spare sd card. " - yes, good idea. I’ve probably done that a couple dozen times since starting with Mycroft. Take good notes. Practice makes perfect.
I finally got it working!.
It’s possible that it was any one of a number of things that I changed:
- When setting up Buster, before installing Picroft, I changed the audio outputs to 1 instead of 0.
- When installing Picroft, before rebooting to run the setup, I edited the
/etc/mycroft/mycroft.conf file to change the output from 0 to 1
- Finally, as it ran through the guided setup, I chose the HDMI output instead of the more obvious 3.5mm.
I suspect it was the last one that actually did the job since the last stage before the setup is to run the
mycroft-wipe --keep-skills command which would reset everything else to default.
I clearly need to keep working on this - Now it outputs through the 3.5mm no matter what I choose during setup BUT only if the HDM cable is plugged in - as soon as I try to run it headless it goes silent.
I can see the activity like working as normal but no sound again!
Back to the drawing board!
I’d just replace the play commands in mycroft.conf to not hardcode a device at all, let pulseaudio select default sync depending on what is plugged…
This is a picroft issue that people keep running into, i believe its documented in the github repo…
NOTE: I haven’t used picroft in years, I always found a git install to be much easier to manage
Have you tried running “sudo raspi-config” and setting the audio output under System Options?
That’s the problem - I can’t edit mycroft.conf without running into the permissions problem.
Although, I might try editing it before the guided setup runs as I did to change it from 0 to 1.
Id skip the guided setup completely if I knew what I was doing!
That’s essentially what I did do by changing the settings during the Buster install
Sorry i didnt read the whole thread properly
You can edit the mycroft.conf manually, i never used the config util, that wont ignore sudo for sure
Also you should be changing the user level config at ~/.config/mycroft not system config at /etc/mycroft , no permissions issues editing that one
I ran a new build and when it asked me if I wanted guided setup I said no.
Something in that setup must change permissions because I was now able to edit the /etc/mycroft/mycroft.conf file without getting getting denied.
I removed both lines specifying the audio and restarted the whole thing - it worked!
Thanks for yours and everyone else’s help!
Now, onto the subject of sound design… LOL
[Picroft config permission denied picroft-config-permission-deniedThis requires sudo permission and might ask you for a password… mkdir: cannot create directory mycroft* ': Permission denied . When 192.168.l.254 I try to save I get [ Error writing /boot/config .txt: Permission denied . I have checked the file on my PC and it is not read only. — This requires sudo permission and might ask you for a password… mkdir: cannot create directory ‘/opt/mycroft’: Permission denied.