== Mycroft Mark2 GUI using system QT5 and KDE framework == This is based on the very helpful build log of user AIIX that he published on https://github.com/AIIX/Documentation/blob/master/Custom-RPI4-MycroftImage.md He is doing this on Rasbperry 4 while the target here is Raspberry 3B but also on 64-bit. === Install Linux === I tried to do this on Ubuntu 20.04 but failed to bring the SDDM up so I switched back to 18.04 [https://github.com/TheRemote/Ubuntu-Server-raspi4-unofficial/releases/download/v28/ubuntu-18.04.4-preinstalled-server-arm64+raspi4.img.xz] Flash it to sdcard and boot. After first boot login as ubuntu/ubuntu (takes a while until you can do this), change password ==== Wifi ==== * {{{ ls /sys/class/net }}} on RP3 the wifi interface is the wlan0 * {{{ sudo nano /etc/netplan/50-cloud-init.yaml }}} {{{ # network: {config: disabled} network: ethernets: eth0: dhcp4: true optional: true version: 2 wifis: wlan0: optional: true access-points: "ESSID-of-the-Accesspoint": password: "your-password" dhcp4: true }}} ** Remark: After SDDM is using NetworkManager I had to remove the wifis part otherwise wlan0 was unavailable ** ==== user ==== * {{{ sudo useradd mycroft -g users -G sudo -m -s /bin/bash }}} * {{{ sudo passwd mycroft }}} * {{{ sudo nano /etc/group }}} (add mycroft to all groups like ubuntu) From now on work as user mycroft ==== update / initial apt setup ==== * {{{ sudo apt-get update && sudo apt-get dist-upgrade -y }}} * {{{ sudo apt install git gnupg wget curl apt-transport-https software-properties-common }}} Do the next steps as root: * {{{ sudo su - }}} Add KDE Neon gpg key: * {{{ wget -qO - 'http://archive.neon.kde.org/public.key' | sudo apt-key add - }}} Add the repository * {{{ echo "deb https://archive.neon.kde.org/unstable bionic main" > /etc/apt/sources.list.d/neon.list }}} * {{{ sudo apt-get update }}} ==== swap ==== * {{{ sudo fallocate -l 2G /swapfile }}} * {{{ sudo chmod 600 /swapfile }}} * {{{ sudo mkswap /swapfile }}} * {{{ sudo swapon /swapfile }}} * {{{ sudo nano /etc/fstab }}} add {{{ /swapfile none swap sw 0 0 }}} ==== ramdisk ==== * {{{ sudo mkdir /ramdisk }}} * {{{ sudo nano /etc/fstab }}} add {{{ tmpfs /ramdisk tmpfs rw,nodev,nosuid,size=20M 0 0 }}} === mycroft core === * {{{ sudo apt-get install git python3 python3-dev python3-setuptools libtool libffi-dev libssl-dev autoconf automake bison swig libglib2.0-dev portaudio19-dev mpg123 screen flac curl libicu-dev pkg-config libjpeg-dev libfann-dev build-essential jq }}} * {{{ cd ~ }}} * {{{ git clone https://github.com/MycroftAI/mycroft-core }}} * {{{ cd mycroft-core }}} * {{{ ./dev_setup.sh -sm }}} ==== mimic ==== skipped for now * {{{ wget http://frozenmazegames.se/mimic-arm64_1.2.0.2+1559651054-1.deb }}} * {{{ sudo dpkg -i mimic-arm64_1.2.0.2+1559651054-1.deb }}} === Plasma Nano === ==== Install the system Libraries ==== I will try to come up with a completer list later but I think most of it should be in the dependencies of the following * {{{ sudo apt install sddm kwin-wayland kwin-x11 openssh-server ftp i2c-tools konsole nano plasma-workspace-wayland plasma-workspace plasma-pa plasma-widgets-addons libkf5wallet-bin gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-fluendo-mp3 qml-module-qtmultimedia network-manager plasma-nm konsole plasma-workspace-dev }}} I was not asked for the login manager so I set it manually: * {{{ sudo dpkg-reconfigure sddm }}} ==== build plasma-nano ==== * {{{ sudo apt install cmake kwayland-dev }}} * {{{ cd ~ }}} * {{{ git clone https://github.com/KDE/plasma-nano }}} * {{{ cd plasma-nano }}} * {{{ mkdir build }}} * {{{ cd build }}} * {{{ cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DKDE_INSTALL_LIBDIR=lib -DKDE_INSTALL_USE_QT_SYS_PATHS=ON }}} * {{{ make -j 2 }}} * {{{ sudo make install }}} ==== Mycroft GUI ==== * {{{ sudo apt install -y git-core g++ cmake extra-cmake-modules kio-dev gettext pkg-config pkg-kde-tools qtbase5-dev qtdeclarative5-dev kio-dev libkf5notifications-data libkf5notifications-dev qml-module-qtquick2 qml-module-qtquick-controls2 qml-module-qtquick-controls qml-module-qtwebsockets qml-module-qt-websockets qtdeclarative5-qtquick2-plugin qtdeclarative5-models-plugin cmake cmake-extras cmake-data qml-module-qtquick-layouts libkf5plasma-dev extra-cmake-modules qtdeclarative5-dev build-essential g++ gettext libqt5webkit5 libqt5webkit5-dev libkf5i18n-data libkf5i18n-dev libkf5i18n5 qml-module-qtgraphicaleffects libqt5dbus5 libkf5dbusaddons-dev libdbus-1-dev libdbus-glib-1-dev kio-dev libkf5kio-dev libqt5websockets5-dev libqt5webview5-dev qml-module-qtquick-virtualkeyboard libqt5virtualkeyboard5-dev qtvirtualkeyboard-plugin }}} * {{{ cd ~ }}} * {{{ git clone https://github.com/MycroftAI/mycroft-gui/ }}} * {{{ cd mycroft-gui && mkdir build && cd build }}} * {{{ cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DKDE_INSTALL_LIBDIR=lib -DKDE_INSTALL_USE_QT_SYS_PATHS=ON }}} * {{{ make -j2 }}} * {{{ sudo make install }}} ==== Mycroft-GUI-Mark-2 ==== * {{{ cd ~ }}} * {{{ git clone https://github.com/MycroftAi/mycroft-gui-mark-2 }}} * {{{ cd mycroft-gui-mark-2 && mkdir build && cd build }}} * {{{ cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DKDE_INSTALL_LIBDIR=lib -DKDE_INSTALL_USE_QT_SYS_PATHS=ON }}} * {{{ make -j2 }}} * {{{ sudo make install }}} ==== QML Lottie ==== * {{{ cd ~ }}} * {{{ git clone https://github.com/kbroulik/lottie-qml }}} * {{{ cd lottie-qml && mkdir build && cd build }}} * {{{ cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DKDE_INSTALL_LIBDIR=lib -DKDE_INSTALL_USE_QT_SYS_PATHS=ON }}} * {{{ make -j2 }}} * {{{ sudo make install }}} ==== Scripts/Overlays ==== skipped 93-create_ramdisk.sh and 94-create_swap.sh (done manually above) * {{{ cd ~ }}} * {{{ git clone https://github.com/MycroftAI/mycroft-devices }}} * {{{ cd mycroft-devices }}} * {{{ cd scripts }}} * {{{ chmod a+X 03-setup_locale.sh }}} * {{{ sudo ./03-setup_locale.sh }}} Overlays: * {{{ cd .. }}} * {{{ sudo cp overlays/base-embedded/etc/xdg/* {{{ /etc/xdg/ }}} * {{{ sudo cp overlays/mark2/etc/xdg/* {{{ /etc/xdg/ }}} * {{{ sudo cp -r -v overlays/mycroft/etc/* {{{ /etc }}} * {{{ sudo cp -r -v overlays/base-embedded/etc/skel/.local /etc/skel/ }}} * {{{ sudo cp -r -v overlays/mycroft/etc/sddm.conf.d /etc/ }}} * {{{ sudo cp -v overlays/base-embedded/etc/profile.d/renderloop.sh /etc/profile.d/ }}} * {{{ sudo cp -r -v overlays/mycroft/etc/polkit-1/localauthority/50-local.d /etc/polkit-1/localauthority/ }}} * {{{ sudo cp -v overlays/base-embedded/etc/netplan/config.yaml /etc/netplan/ }}} * {{{ sudo cp -r -v overlays/mycroft/etc/mycroft/* {{{ /etc/mycroft/ }}} === pi config.txt === {{{ # i2c on dtparam=i2c_arm=on # audio on dtparam=audio=on [all] max_framebuffers=2 dtoverlay=vc4-kms-v3d arm_64bit=1 }}} === enable i2c_dev === I did not have an /dev/i2c* device after booting only if I manually loaded i2c_dev so I did * {{{ sudo nano /etc/modules }}} add {{{ i2c_dev }}} the i could use: * {{{ sudo i2cset -y 1 0x4b 30 }}} to make the volume === network manager === I wanted the wifi connection to be established before SDDM comes up so I changed the settings in the connection file * {{{ /etc/NetworkManager/system-connections/ }}} remove the psk-flags=1 line and add {{{ psk= }}} === open issues === ==== screen rotation ==== ==== autostart mycroft-gui ====