ovos-PHAL-plugin-mk1

July 31, 2026 · View on GitHub

This is a PHAL (Platform Hardware Abstraction Layer) plugin for OpenVoiceOS. It controls the Mark 1 hardware: the eye and mouth faceplate, and the pins on the back of the device.

The firmware for the Mark 1 Arduino, which drives the eyes and faceplate, is in OpenVoiceOS/mycroft-mark1-firmware.

OpenVoiceOS/ovos-mark1-utils has utilities to set the faceplate pixel by pixel.

Install

pip install ovos-PHAL-plugin-mk1

Usage

OpenVoiceOS loads this plugin through the opm.phal entry point. Once installed, PHAL detects and starts it automatically on Mark 1 hardware.

Serial port protocol

See protocols.txt for the full list of commands you can send to the faceplate.

You can send commands from the command line on a Raspberry Pi:

$ echo "eyes.blink" > /dev/ttyAMA0
$ echo "eyes.color=16711680" > /dev/ttyAMA0
$ echo "mouth.text=I am angry!" > /dev/ttyAMA0

These commands blink the eyes, turn them red, then show the phrase on the faceplate.

Graphics

The mouth.icon= command takes a custom format for black-and-white images. Use the HTML editor to create the image strings you send.

IO pins

Looking at the device from the back, the pins are laid out as:

             -----------------------------------------------------------------------------------------------
RCA Port    | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 | 22 | 24 | 26 | 28 | 30 | 32 | 34 | 36 | 38 | 40 |
            | 1 | 3 | 5 | 7 |  9 | 11 | 13 | 15 | 17 | 19 | 21 | 23 | 25 | 27 | 29 | 31 | 33 | 35 | 37 | 39 |
             -----------------------------------------------------------------------------------------------

 HDMI                         Ethernet                        USB     USB
PinDescription
1GND
2+12V
3GND
4+5V
5GND
6+3.3V
7Arduino Reset
8Arduino D5
9Arduino D6
10Arduino D10
11Arduino A2
12Arduino A3
13+3.3V
14+3.3V
15+3.3V
16GND
17GND
18GND
19+5V
20+5V
21+5V
22+5V
23GND
24GND
25Raspberry Pi ID_SC
26Raspberry Pi ID_SD
27Raspberry Pi GPIO 4
28Raspberry Pi GPIO 5
29Raspberry Pi GPIO 6
30Raspberry Pi GPIO 7
31Raspberry Pi GPIO 8
32Raspberry Pi GPIO 9
33Raspberry Pi GPIO 10
34Raspberry Pi GPIO 11
35Raspberry Pi GPIO 12
36Raspberry Pi GPIO 16
37Raspberry Pi GPIO 25
38Raspberry Pi GPIO 26
39GND
40GND

WARNING: This is not the same as the standard Raspberry Pi GPIO headers.

License

Apache-2.0, see LICENSE.