Mycroft on FreeBSD

Ooooh good thinking @j1nx

Yeah, only once in a while. Don’t get used to it… :rofl:

1 Like
locale -a
C
POSIX
af_ZA.ISO8859-1
af_ZA.ISO8859-15
af_ZA.UTF-8
am_ET.UTF-8
ar_AE.UTF-8
ar_EG.UTF-8
ar_JO.UTF-8
ar_MA.UTF-8
ar_QA.UTF-8
ar_SA.UTF-8
... 193 lines

What you are interesting in exactly?

Damn, that are a lot of them :slight_smile:

Can you run the command without -a. Just; locale

Interested to see these;

LC_ALL
LANG

and perhaps

LANGUAGE

$ locale
LANG=es_ES.UTF-8
LC_CTYPE="es_ES.UTF-8"
LC_COLLATE="es_ES.UTF-8"
LC_TIME="es_ES.UTF-8"
LC_NUMERIC="es_ES.UTF-8"
LC_MONETARY="es_ES.UTF-8"
LC_MESSAGES="es_ES.UTF-8"
LC_ALL=

$ env | grep LANGUAGE
$

With this small hack the cli comes up:

$ diff /usr/home/guru/Mycroft-test/mycroft-core/mycroft/client/text/text_client.p*
1078,1079c1078
<                 # c = scr.get_wch()  # unicode char or int for special keys
<                 c = 27
---
>                 c = scr.get_wch()  # unicode char or int for special keys

Can you try to set the LC_ALL by running the command;

export LC_ALL=en_US.UTF-8

You can try “es_ES.UTF-8” as well, but I believe Mycroft needs en_US. Anyway, try the en first and you could use the ES later if it works.

The curses interface of the LC_ALL=en_US.UTF-8 cli looks like this:

but at the prompt in the bottom line no input is accepted visible, I tried too :help Ctrl-j, nothing happens, only Ctrl-c terminates the proc.

Not visible as in; falls of the screen or as in; it does not take any input whatsoever

The screen does not show any reaction on any keypress I tried.

I found log files below /var/… There is some problem with audio (pymplayer not found)

You can ignore the mplayer error.

But can you type a command blind and insert it via Enter.

Just type; “weather” followed by an enter.

Does mycroft tell you the weather or nothing at all?

I think I have to make an account first and pair the device, what I will do now.

I created an accout and paired my laptop using the code printed in the cli, but typing weather+ CR` does not give any visible reaction.

Ok, so at least we tackled one step, however (at least) one more to go…

Anything in any of the logs?

I spent a lot of time yesterday in debugging the input issue in the file mycroft-core/mycroft/client/text/text_client.py There is at line 1080 the central place where the chars get read from STDIN:

       c = scr.get_wch()  # unicode char or int for special keys

This call gives the above mentioned error message about not havin a valied attribute:

AttributeError: '_curses.curses window' object has no attribute 'get_wch'

That’s why I modified this line to

     c = scr.getch()

and with this change the keyboard input does not work corrctly. The line does not contain chars when ENTER is pressed…

I know less to nothing about Python and do not know how to fix this.

Can some Python guru please send me a 5-line example to test the above call to curses c = scr.get_wch() outside of Mycroft?

I think your issues relates to python and/or libncurses not having unicode wchar support. (wchar = wide characters)

the “scr.get_wch()” basically is a function to get the input as wchar. Considering you have an error of it not understanding the term “wch” which relates to WideCharacter this might be your pointer for google.

A quick google session brought me to this old stuff;

https://bugs.python.org/issue4787

Not sure how valid it still is and I am also at the point that it is getting out of my grasp as I am not a FreeBSD guru, but perhaps it gives you the right pointers to continue your search.

I am sorry I could not help you.

The problem is within the Python3.5 application port in FreeBSD: it does not use libcursesw.so.8, but libcurses.so.8. This issue was fixed in June 2017, I’m on March 2017 with my system. I have to update before doing further tests, which I can’t do before the end of the year.

Give me a break.

I found a way to selectively fix my Python3.5 installation to make it use libwcursesw.so:

History ========================================    Log Output Legend ================ Mic Level ===
 >> I don't understand.                             DEBUG output
 mycroft                                            skills.log, other
 >> Please rephrase your request.                   voice.log
 mycroft, say something
 >> something
 mycroft, how are you?
 >> Could be better
Input (':' for command, Ctrl+C to quit) ===========================================================
>

Great! Is it something that can be done through setup.sh such that experimental freebsd support can be added through a PR?

When I do:

History ========================================    Log Output Legend ================ Mic Level ===
 Hey Mycroft, how is the weather in Munich?         DEBUG output
 >> temperature, 34 °F (wind chill: 27 °F),         skills.log, other
    relative humidity, 93% (dew point: 32 °F),      voice.log
    wind speed, 8.1 mph, (29 minutes ago)
 Mycroft, sing a song
 >> I'm a bit nervous about my voice, but here
    goes nothing.

she (mycroft) answers and plays the song as audio. Is the audio coming from a local file? I do not see enough traffic on my wlan0 interface for coming down the audio from Internet… Anyway, what I have to configure or do for:

  1. Give commands/requests by voice
  2. Mycroft answers by voice and not by text

Is Mycroft a she or a he? :slight_smile: