- Burn jessie to SD card. Use:
2016-09-23-raspbian-jessie-lite.img - Boot Raspberry Pi and login as pi/raspberry
sudo passwd pi
and change to 'mycroft'sudo raspi-config
then select
- '1 Expand Filesystem'
- '3 Boot Options'
- --> 'B2 Console Autologin'
- '4 Wait for network at boot'
- --> 'No'
- '5 Internationalization Options'
- --> 'I3 Change Keyboard Layout'
- --> 'Generic 101-key PC'
- --> 'Other'
- --> 'English (US)'
- --> 'English (US)'
- --> 'The default for the keyboard layout'
- --> 'No compose key'
- '9 Advanced Options'
- --> 'A2 Hostname'
- --> Enter: 'mark_1'
- Finish and allow the reboot
- Plug in network cable (if not already)
- (Optional) Connect via SSH so you can copy/paste all of the following.
sudo apt-get update
sudo apt-get install apt-transport-https -y
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F3B1AA8B
sudo bash -c 'echo "deb http://repo.mycroft.ai/repos/apt/debian debian main" > /etc/apt/sources.list.d/repo.mycroft.ai.list'
sudo apt-get update
sudo apt-get install mycroft-core -y
sudo apt-get install vim -y
sudo apt-get install ufw -y
nano .bashrc
and uncomment 'alias ll='ls -l' (about 25 lines from the bottom)
sudo mkdir /etc/mycroft
sudo nano /etc/mycroft/mycroft.conf
and add the following:
{
"enclosure": {
"platform": "mycroft_mark_1",
"platform_build": 3,
"port": "/dev/ttyAMA0",
"rate": 9600,
"timeout": 5.0,
"update": true,
"test": false
},
"VolumeSkill": {
"default_level": 6,
"min_volume": 0,
"max_volume": 83
}
}
Platform build should be updated with each new image.
sudo nano /etc/pulse/daemon.conf
and uncomment (9 lines from the bottom)
default-sample-rate = 44100
sudo systemctl stop [email protected]
sudo systemctl disable [email protected]
sudo timedatectl set-ntp true
sudo nano /boot/config.txt
-
Uncomment all of these to enable the optional hardware interfaces (about 10 lines from bottom)
- dtparam=i2c_arm=on
- dtparam=i2s=on
- dtparam=spi=on
-
Comment out the following to disable audio (loads snd_bcm2835)
#dtparam=audio=on
-
Add the following lines at the bottom:
# Disable Bluetooth, it interferes with serial port dtoverlay=pi3-disable-bt dtoverlay=pi3-miniuart-bt # Enable Mark 1 soundcard drivers dtoverlay=rpi-proto
-
sudo nano /boot/cmdline.txt
- Make sure it contains no mention of ttyAMA0, as this is where the boot logging to serial would be enabled in the past.
- Delete this option: 'console=serial0,115200'
-
Reboot
sudo reboot now
Set correct volume and sound card settings
alsamixer
- Press F6 and select 'snd_rpi_proto'
- Press F5 to show all settings
- Adjust settings to match as shown below. User right-arrow to change selection, Up to change numbers, 'M' to change between options
- Raise 'Master' volume to 46 with up arrow presses
- Press right and enable 'Master Playback' with press of 'M'
- Press right three times and enable 'Mic' 'Capture' with press of spacebar
- Press right three times and enable 'Playback Deemp' with press of 'M'
- Press right three times and set 'Input Mux' to 'Mic' with press of up arrow
- Press right and enable 'Output Mixer HiFi' with press of 'M'
- Press right three times and enable 'Store DC Offset' with press of 'M'
- ESC to save and exit
Enable ufw for a simple firewall allowing only port 22 incoming as well as dns, dhcp, and the Mycroft web socket
Block all incoming by default
sudo ufw default deny incoming
Allow ssh on port 22 when enabled
sudo ufw allow 22
WiFi setup client: Allow tcp connection to websocket
sudo ufw allow in from 172.24.1.0/24 to any port 8181 proto tcp
Allow tcp to web server
sudo ufw allow in from 172.24.1.0/24 to any port 80 proto tcp
Allow udp for dns
sudo ufw allow in from 172.24.1.0/24 to any port 53 proto udp
Allow udp for dhcp
sudo ufw allow in from 0.0.0.0 port 68 to 255.255.255.255 port 67 proto udp
Turn on the firewall
sudo ufw enable
sudo mkdir /ramdisk
edit /etc/fstab
and add the following line:
tmpfs /ramdisk tmpfs rw,nodev,nosuid,size=20M 0 0
Edit /etc/mycroft/mycroft.conf
and add the line
"ipc_path": "/ramdisk/mycroft/ipc/"
at the end. (remember the comma on the line before)
Upgrade all packages except raspberrypi-kernel
sudo apt-get update
echo "raspberrypi-kernel hold" | sudo dpkg --set-selections
sudo apt-get upgrade
Install the packagekit package.
apt-get install packagekit
Set a policy allowing the mycroft user to install packages using this by creating the file /etc/polkit-1/localauthority/50-local.d/allow_mycroft_to_install_package.pkla
and enter the following
[Allow mycroft to install packages using packagekit]
Identity=unix-user:mycroft
Action=org.freedesktop.packagekit.package-eula-accept;org.freedesktop.packagekit.package-install
ResultAny=yes
Pip doesn't interact with policy kit so a sudoer rule is needed to allow pip install
from mycroft without password. Edit /etc/sudoers.d/011_mycroft-nopasswd and add:
mycroft ALL=(ALL) NOPASSWD: /usr/local/bin/pip install *
Afterwards remove write flag of the file
chmod -w /etc/sudoers.d/011_mycroft-nopasswd
curl -sL https://dtcooper.github.io/raspotify/install.sh | sh
Then disable the raspotify service:
sudo systemctl stop raspotify
sudo systemctl disable raspotify
The spotify connect client can now be started from a skill by executing librespot --user USER --password PASS --name Mycroft
history -c
history -w