2017-11-27
md
Google Assistant on an Orange Pi Zero running DietPi
Raspian from OrangePi.org for the Orange Pi Zero-> <-Domoticz on the Orange Pi Zero, a First Look
Hotword Detection with snowboy on an Orange Pi Zero running DietPi->

I could not leave well enough alone, so it was back to the Orange Pi Zero to see if I could install Google Assistant. That was the plan, and I did manage it but there were complications along the way. Not least of which was the fact that I could not log into the OPiZ with either WiFi or Ethernet. So I had to flash the SD card with an OS image again and decided to try DietPi this time around. I was impressed with that distribution of Debian Jessie (light or server) and I did manage to install Google Assistant after jumping through a few hoops.

Unfortunately, the instructions in this post are out of date. Setting up a project in Google Assistant has changed. There were no details about that operation in this but it does change how Google Assistant is launched, at least the first time it is used.

Also, the DietPi image is now up to Stretch (Debian 9) so that a number of extra steps described below are no longer needed.

I should rewrite this post, but I am currently working on a similar project using a Raspberry Pi 3 which takes precedence.
April 3, 2018

 

Table of Contents

  1. WiFi Woes
  2. Installing DietPi
  3. Which Linux Distribution?
  4. Testing the OPiZ Audio
  5. Installing Python 3
  6. Installing Google Assistant
  7. Some Like It Hot

  1. WiFi Woes
  2. Looking back at what I was doing with the OPiZ, I can guess why it would no longer connect to the local area network. I probably disabled the Ethernet interface to save power and hence reduce the heat generated by the H2+ SOC. At the same time, the wireless connection had a static IP address for testing the Domoticz server. That is a no, no on the OPiZ because, apparently, the WiFi cannot have a static address without connecting to the LAN with Ethernet. And since the Ethernet was disabled, well you can see where that is going.

    Others have also had problems with the WiFi on the OPiZ. In his December 2016 blog entitled The Orange Pi Zero, Pete Scargill goes on at length about it and more or less gives up on the device because of it. Apparently, he had not changed his mind in September of this year, saying that ... the WIFI on the Orange Pi Zero was and is basically rubbish (though that is possibly down to implementation rather than hardware – others may know better) in Orange Pi Time. However, in answers to comments, he does seem to have found uses for the OPiZ, presumably in stand alone applications or when using an Ethernet connection.

  3. Installing DietPi
  4. Since an OS image had to be installed again, why not use DietPi mentioned by Pete Scargill? With luck, a recent update may have solved the network interface problems.

    The latest compressed image file (DietPi_OrangePiZero-armv7-(Jessie).7z, as of November 6, 2017) can be downloaded from dietpi.com.

    I followed the Getting started instructions and did not edit the dietpi.txt file so that the WiFi interface was not enabled. As before, an Ethernet connection to the OPiZ was needed to set it up. I performed a Quick scan using Zenmap/Nmap and found the OPiZ at 192.168.0.136

    michel@hp:~$ ssh root@192.168.0.136 The authenticity of host '192.168.0.136 (192.168.0.136)' can't be established. ... Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.0.136' (ECDSA) to the list of known hosts. root@192.168.0.136's password: dietpi not shown on screen

    Then the GPL License screen was displayed

    and after I accepted its terms, the OS was automatically updated from version 145 to version 157. Patience must be exercised, in particular when the swap file is created or recreated which takes quite a while.

    DietPi-Update ───────────────────────────────────────────────────── Mode: Completed Please wait... [Info] Current Version : 157 [Info] Server Version : 157 [Ok] Update completed Please reboot your system now, using the command reboot Connection to 192.168.0.136 closed by remote host. Connection to 192.168.0.136 closed.

    When a new ssh session is opened, then the configuration screen will be displayed.

    The first thing I did was to run the configuration utility DietPi-Config. I will not go into details, DietPi-Config is a pretty straight forward configuration utility.

    In Audio Options, I changed the sound card to default 3.5mm Analogue which is found on the extension board purchased with the OPiZ.

    In Language/Regional Options, I changed the Timezone to America/Moncton which is the nearest city in my time zone.

    In Security Options, I changed the Root Password and the Hostname, to domopiz.

    In Network Options: Adapters, I enabled the WiFi interface, set the credentials for my network. This was done using the Scan option although it can be done with the Manual option. Finally I enabled Auto Reconnect.

    The system will now ask to reboot. Do so. It would probably be a good time to power down the system, disconnect the Ethernet cable and power up the OPiZ to verify that WiFi does work. You may find that it does take some time for the OPiZ to log on to the network.

    I should mention that I modified the WiFi router so that it will assign a fixed IP address to the OPiZ. Having a fixed IP address is a very good thing when running a headless server. In principle, the address could have been fixed in the previous step but, as stated before, there are reports of problems and I was impatient to get on with installing Google Assistant.

    Back in dietpi-software, I changed the SSH Server from Dropbear to OpenSSH which is needed for SFTP transfers with FileZilla.

    At this point, I stopped logging in as root and used the already defined user dietpi (password: dietpi).

    michel@hp:~$ ssh dietpi@192.168.0.25 dietpi@192.168.0.25's password: dietpi not shown on screen Welcome to ARMBIAN 5.31 stable Debian GNU/Linux 8 (jessie) 3.4.113-sun8i System load: 0.03 0.05 0.05 Up time: 13 min Memory usage: 11 % of 494MB IP: 192.168.0.136,192.168.0.25 CPU temp: 57°C Usage of /: 14% of 5.5G [ General system configuration: armbian-config ] ─────────────────────────────────────── DietPi | 15:36 | Tue 07/11/17 ─────────────────────────────────────── V158 | OrangePi Zero (armv7l) ─────────────────────────────────────── IP Address | 192.168.0.136 ─────────────────────────────────────── Created by : Daniel Knight Web : http://DietPi.com Twitter : http://twitter.com/dietpi_ Donate : http://goo.gl/pzISt9 Device image possible thanks to: ARMbian DietPi's web hosting is powered by: MyVirtualServer.com dietpi-launcher = All the DietPi programs in one place. dietpi-config = Feature rich configuration tool for your device. dietpi-software = Select optimized software for installation. htop = Resource monitor. cpu = Shows CPU information and stats.
    As of November 26, 2017 the distribution will be updated to version V158. The proportions of RAM and storage used are different.

    This is a good time to change the user password

    dietpi@domopiz:~$ passwd Changing password for dietpi. (current) UNIX password: dietpi not shown on screen Enter new UNIX password: new_password_xxx not shown on screen Retype new UNIX password: new_password_xxx not shown on screen passwd: password updated successfully

    Adding the OPiZ to the list of sites in FileZilla was not a problem

    but a connection could not be established even though it was obvious that FileZilla was connecting to the board:

    Status:	Connecting to 192.168.0.25...
    Response:	fzSftp started, protocol_version=2
    Command:	open "dietpi@192.168.0.25" 22
    Command:	Pass: ********
    Error:	Connection timed out after 20 seconds of inactivity
    Error:	Could not connect to server
    Status:	Waiting to retry...
    

    As usual a solution can be found on the web (I am sorry that I forgot to note where in order to give proper credit). The bash configuration file had to be modified.

    dietpi@domopiz:~$ nano .bashrc
    # ~/.bashrc: executed by bash(1) for non-login shells. # If not running interactively, don't do anything case $- in *i*) ;; *) return;; esac # Note: PS1 and umask are already set in /etc/profile. You should not # need this unless you want different defaults for root. # PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ ' # umask 022 # You may uncomment the following lines if you want `ls' to be colorized: export LS_OPTIONS='--color=auto' eval "`dircolors`" alias ls='ls $LS_OPTIONS' alias ll='ls $LS_OPTIONS -l' alias l='ls $LS_OPTIONS -lA' ...

    I also removed the comments to the colour options for the directory listing command ls. This also added some aliases. From now on ll will be the equivalent of ls -l and l the equivalent of ls -lA. The -A switch means that all will be listed including hidden files and directory except for the current and parent directory ("." and "..").

    That completed my initial configuration of DietPi on the Orange Pi Zero.

  5. Which Linux Distribution?
  6. The initial log in screen shows quite a bit of information as seen above. In particular, the top line identifies the distribution

    Welcome to ARMBIAN 5.31 stable Debian GNU/Linux 8 (jessie) 3.4.113-sun8i

    but it is quickly erased to be replaced by the DietPi log on screen.

    I tried the usual commands to identify the Linux distribution and kernel version.

    dietpi@domopiz:~$ uname -a Linux domopiz 3.4.113-sun8i #18 SMP PREEMPT Thu Jun 15 02:16:06 CEST 2017 armv7l GNU/Linux dietpi@domopiz:~$ ls /etc/*release* /etc/armbian-release /etc/os-release dietpi@domopiz:~$ cat /etc/armbian-release # PLEASE DO NOT EDIT THIS FILE BOARD=orangepizero BOARD_NAME="Orange Pi Zero" VERSION=5.31 LINUXFAMILY=sun8i BRANCH=default ARCH=arm IMAGE_TYPE=stable dietpi@domopiz:~$ cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 8 (jessie)" NAME="Debian GNU/Linux" VERSION_ID="8" VERSION="8 (jessie)" ID=debian HOME_URL="http://www.debian.org/" SUPPORT_URL="http://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" dietpi@domopiz:~$ ls /etc/*issue* /etc/issue /etc/issue.net dietpi@domopiz:~$ cat /etc/issue.net Debian GNU/Linux 8 dietpi@domopiz:~$ ls /etc/*version* /etc/debian_version dietpi@domopiz:~$ cat /etc/debian_version 8.9 dietpi@domopiz:~$ less /etc/armbian.txt -------------------------------------------------------------------------------- Title: Armbian 5.31 Orangepizero Debian jessie default Kernel: Linux 3.4.113 Build date: 15.06.2017 Authors: http://www.armbian.com/authors Sources: http://github.com/igorpecovnik/lib Support: http://forum.armbian.com/ Changelog: http://www.armbian.com/logbook/ Documantation: http://docs.armbian.com/ --------------------------------------------------------------------------------

    The often recommended lsb_release command cannot be used, at it is not installed.

    So the OPiZ is running Debian GNU/Linux 8.9 (jessie) and the kernel is Linux 3.4.113. Armbian is a "[l]ightweight Debian ... based distribution specialized for ARM developing boards. Compiled from scratch". And DietPi is a pared down image of Armbian with added utilities.

    This is not the newest Debian distribution. Currently, there is a Debian 9 (Stretch) Raspbian image for the Raspberry Pi.

    Things can change quickly!

    The above was written on November 26. Earlier today, I upgraded the system and found Armbian updated to 5.35 with a new bootloader. It looks like the change was done five days ago.

    dietpi@domopiz:~$ sudo apt-get update && apt-get upgrade ... ... patience ... update-initramfs: Generating /boot/initrd.img-3.4.113-sun8i update-initramfs: Converting to u-boot format dietpi@domopiz:~$ sudo reboot Connection to 192.168.0.35 closed by remote host. Connection to 192.168.0.35 closed. michel@hp:~$ ssh dietpi@192.168.0.35 dietpi@192.168.0.35's password: my password Welcome to ARMBIAN 5.35 user-built Debian GNU/Linux 8 (jessie) 3.4.113-sun8i System load: 0.76 0.23 0.08 Up time: 0 min Memory usage: 6 % of 494MB IP: 192.168.0.35 CPU temp: 53°C Usage of /: 37% of 5.5G New to Armbian? Check the documentation first: https://docs.armbian.com ─────────────────────────────────────── DietPi | 15:51 | Mon 27/11/17 ─────────────────────────────────────── V158 | OrangePi Zero (armv7l) ─────────────────────────────────────── IP Address | 192.168.0.35 ─────────────────────────────────────── Created by : Daniel Knight Web : http://DietPi.com Twitter : http://twitter.com/dietpi_ Donate : http://goo.gl/pzISt9 Device image possible thanks to: ARMbian DietPi's web hosting is powered by: MyVirtualServer.com dietpi-launcher = All the DietPi programs in one place. dietpi-config = Feature rich configuration tool for your device. dietpi-software = Select optimized software for installation. htop = Resource monitor. dietpi@domopiz:~$ uname -a Linux domopiz 3.4.113-sun8i #4 SMP PREEMPT Wed Nov 22 13:45:28 CET 2017 armv7l GNU/Linux dietpi@domopiz:~$ ls /etc/*release* /etc/armbian-release /etc/os-release dietpi@domopiz:~$ cat /etc/armbian-release # PLEASE DO NOT EDIT THIS FILE BOARD=orangepizero BOARD_NAME="Orange Pi Zero" VERSION=5.35 LINUXFAMILY=sun8i BRANCH=default ARCH=arm IMAGE_TYPE=user-built BOARD_TYPE=conf INITRD_ARCH=arm KERNEL_IMAGE_TYPE=zImage

    The contents of the other information files, /etc/os-release, /etc/issue, /etc/issue.net and /etc/debian_version have not changed except for /etc/armbian.txt which has disappeared.

    The IMAGE_TYPE went from stable to user-built; hope that is not an ominous development.

  7. Testing the OPiZ Audio
  8. For the most part I followed the instructions give in How to Setup an Orange Pi Zero DIY Smart Speaker with Google Assistant SDK.

    The first step was to test the audio hardware. I powered down the OPiZ, plugged in the expansion board and then connected powered speakers to the expansion board. I put everything in the case also purchased at the same time as the Orange Pi Zero. As can be seen, it makes for a small neat package.

    After opening an ssh session over WiFi as user dietpi, I made sure that dietpi is part of the audio group.

    dietpi@domopiz:~$ groups dietpi dietpi : dietpi adm tty dialout cdrom sudo audio www-data video plugdev games users input netdev

    Had dietpi not been a member of audio, it would have been a simple matter to join the group:

    dietpi@domopiz:~$ adduser dietpi audio

    The first step in testing the audio hardware is to record sounds through the microphone to a temporary file sample.wav.

    dietpi@domopiz:~$ arecord -M -f S16_LE -r 16000 -c 1 --buffer-size=204800 -v /tmp/sample.wav Recording WAVE '/tmp/sample.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono Hardware PCM card 0 'audiocodec' device 0 subdevice 0 Its setup is: stream : CAPTURE access : MMAP_INTERLEAVED format : S16_LE subformat : STD channels : 1 rate : 16000 exact rate : 16000 (16000/1) msbits : 16 buffer_size : 204800 period_size : 51200 period_time : 3200000 tstamp_mode : NONE period_step : 1 avail_min : 51200 period_event : 0 start_threshold : 1 stop_threshold : 204800 silence_threshold: 0 silence_size : 0 boundary : 1677721600 appl_ptr : 0 hw_ptr : 0 mmap_area[0] = 0xb6b03000,0,16 (16) bla bla bla that's me speaking ^C that's me hitting the CtrlC keyboard combination Aborted by signal Interrupt... dietpi@domopiz:~$

    Then it's playback time to ensure that the speakers are getting the audio output.

    dietpi@domopiz:~$ aplay -M /tmp/sample.wav --buffer-size=204800 -v Playing WAVE '/tmp/sample.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono Hardware PCM card 0 'audiocodec' device 0 subdevice 0 Its setup is: stream : PLAYBACK access : MMAP_INTERLEAVED format : S16_LE subformat : STD channels : 1 rate : 16000 exact rate : 16000 (16000/1) msbits : 16 buffer_size : 204800 period_size : 51200 period_time : 3200000 tstamp_mode : NONE period_step : 1 avail_min : 51200 period_event : 0 start_threshold : 204800 stop_threshold : 204800 silence_threshold: 0 silence_size : 0 boundary : 1677721600 appl_ptr : 0 hw_ptr : 0 mmap_area[0] = 0xb6b87000,0,16 (16)

    It works! And I did not have to adjust playback and recording volumes. All that remains is to create the asound configuration file. Again I followed the instructions at CNX as modified to use the built-in microphone.

    dietpi@domopiz:~$ nano .asoundrc
    pcm.!default { type asym capture.pcm "mic" playback.pcm "speaker" } pcm.mic { type plug slave { pcm "hw:0,0" format S16_LE } } pcm.speaker { type plug slave { pcm "hw:0,0" } }

  9. Installing Python 3
  10. Python is not installed by default in DietPi but version 3 as well as python3-dev and python3-venv are required for Google Assistant.

    dietpi@domopiz:~$ sudo apt-get update ... dietpi@domopiz:~$ sudo apt-get install python3 python3-dev python3-venv ... Need to get 50.6 MB of archives. After this operation, 84.2 MB of additional disk space will be used. Do you want to continue? [Y/n] y ... Setting up python3-venv (3.4.2-2) ... Processing triggers for libc-bin (2.19-18+deb8u10) ... dietpi@domopiz:~$ python3 --version Python 3.4.2 dietpi@domopiz:~$ python3 -m venv env dietpi@domopiz:~$ env/bin/python -m pip install --upgrade pip setuptools ... Successfully installed pip setuptools Cleaning up...

    Since doing this at the beginning of the month, I have learned a few things about Python, its virtual environments and the package utility pip. Some of what I gathered is explained here: Python 3 virtual environments in DietPi
    November 26, 2017
    .

  11. Installing Google Assistant
  12. There are numerous steps before finally hearing a bad pun (is there such a thing as a good pun?) from Mme Google in reply to a "Hey google, tell me a joke". First you have to jump through hoops at Google Cloud Platform creating a project. As part of that process, you get to download a "secret" file containing a key identifying the project. Then the Google Assistant library and Google authorization tool are downloaded to the OPiZ and the authorization tool is used in combination with the secret key to complete the binding of Google Assistant and the project. And I forgot, you must also activate Voice & Audio Activity in the Google Activity Controls page in your Google account, which of course means you must have such an account.

    Again I followed the CNX instructions Setting Up Google Assistant on Orange Pi Zero. To be honest I muddled through and doubt that I could explain what I did. You could find further help in Voice Control by Google Assistant written by Takanobu Fuse. And as one would expect, there are YouTube presentations.

    The long and the short of it, is that you should end up with a file with a very long file name that looks like client_secret_00000000-0123456xxx.apps.googleusercontent.com.json in the dietpi home directory. From then on here is what I did.

    Installation of the Google libraries

    dietpi@domopiz:~$ source env/bin/activate (env) dietpi@domopiz:~$ python -m pip install --upgrade google-assistant-library Collecting google-assistant-library ... Successfully installed argparse-1.4.0 cachetools-2.0.1 enum34-1.1.6 google-assistant-library-0.0.3 google-auth-1.0.1 pyasn1-0.3.7 pyasn1-modules-0.1.5 requests-2.14.2 rsa-3.4.2 six-1.11.0 (env) dietpi@domopiz:~$ python -m pip install --upgrade google-auth-oauthlib[tool] Collecting google-auth-oauthlib[tool] Downloading google_auth_oauthlib-0.1 ... Successfully installed certifi-2017.11.5 chardet-3.0.4 click-6.7 google-auth-1.2.0 google-auth-oauthlib-0.1.1 idna-2.6 oauthlib-2.0.6 requests-2.18.4 requests-oauthlib-0.8.0 urllib3-1.22

    Authorization

    The command is so long that I broke it up into three parts. The "\" at the end of the first two lines is the continuation symbol and the > at the start of the last two lines is displayed by bash as a prompt for the rest of the command.

    (env) dietpi@domopiz:~$ google-oauthlib-tool --client-secrets \ > ~/client_secret_00000000-0123456xxx.apps.googleusercontent.com.json \ > --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless Please visit this URL to authorize this application: https://accounts.google.com/o/oauth2/auth?response_type... The URL is very long. If I right click on it in the terminal window I am given the choice to follow the link, which I did. Then I had to log into my Google account. A page showing a long authorization code was shown; I copied it in the following step. Enter the authorization code: 3./CCCCCabi8I9Lxç....a902CbJ credentials saved: /home/dietpi/.config/google-oauthlib-tool/credentials.json

    Testing Google Assistant

    And that is it.

    (env) dietpi@domopiz:~$ google-assistant-demo ON_MUTED_CHANGED: {'is_muted': False} ON_START_FINISHED "Hey Google, what time is it?" ON_CONVERSATION_TURN_STARTED ON_END_OF_UTTERANCE ON_RECOGNIZING_SPEECH_FINISHED: {'text': 'what time is it'} ON_RESPONDING_STARTED: {'is_error_response': False} ON_RESPONDING_FINISHED ON_CONVERSATION_TURN_FINISHED: {'with_follow_on_turn': False}

    And Google assistant answered "its eight forty-five".

    CtrlC stops the assistant.

    Using Google Assistant

    Of course all the installation steps do not need to be repeated. From now on, Google Assistant can be used as follows:

    dietpi@domopiz:~$ source env/bin/activate (env) dietpi@domopiz:~$ google-assistant-demo ... play with Google CtrlC stops the assistant (env) dietpi@domopiz:~$ deactivate dietpi@domopiz:~$

    Auto-starting Google Assistant

    The final step is to make sure that Google Assistant automatically starts up when the OPiZ is powered up or reset. Again, I merely adapted what CNX proposed; this stuff is way over my pay scale.

    dietpi@domopiz:~$ sudo nano /etc/systemd/system/google-assistant-demo.service
    [Unit] Description=google assistant service After=network.target ntpdate.service [Service] Type = idle Environment=VIRTUAL_ENV=/home/dietpi/env/ Environment=PATH=/home/dietpi/env/bin:/usr/local/sbin:/usr/local ExecStart=/home/dietpi/env/bin/google-assistant-demo WorkingDirectory=/home/dietpi StandardOutput=inherit StandardError=inherit Restart=always User=dietpi [Install] WantedBy=multi-user.target Alias=google-assistant.service

    All I had to do was to adjust the user name. The service can be enabled and started. This needs to be done only once.

    dietpi@domopiz:~$ sudo systemctl enable google-assistant-demo.service Created symlink from /etc/systemd/system/google-assistant.service to /etc/systemd/system/google-assistant-demo.service. Created symlink from /etc/systemd/system/multi-user.target.wants/google-assistant-demo.service to /etc/systemd/system/google-assistant-demo.service. dietpi@domopiz:~$ sudo systemctl start google-assistant-demo.service dietpi@domopiz:~$

    Test this by powering down the OPiZ and then powering it up. You will have to wait a few seconds before talking to Mme Google, just be patient.

  13. Some Like It Hot
  14. The running temperature of the H2+ SOC is a concern as I mentioned in the first look at the Orange Pi Zero. While the photograph indicated that the OPiZ was in the small case, it was in fact outside the case and being run in a cool room.

    dietpi@domopiz:~$ cpu ───────────────────────────────────────────────────── DietPi CPU Info Use dietpi-config to change CPU / performance options ───────────────────────────────────────────────────── Architecture | armv7l Temp | 58'c | Running warm, but safe. Governor | ondemand Throttle up | 50% CPU usage Current Freq Min Freq Max Freq CPU0 | 1008 MHz 240 MHz 1008 MHz CPU1 | 1008 MHz 240 MHz 1008 MHz CPU2 | 1008 MHz 240 MHz 1008 MHz CPU3 | 1008 MHz 240 MHz 1008 MHz [Info] CPU current frequency, may be affected by this script, due to the processing required to run it.

    That is not too bad, but the fact is that when everything is in the case, the temperature does reach unsafe levels, or so says cpu. Indeed, I have been running Google Assistant for the last twenty minutes or so with talk radio in the background at normal conversation level. Even though the room temperature is only 20° C, the OPiZ reports a temperature of 63° C which is "running hot, not recommended" and the cpu frequency has been lowered from 1008 MHZ to 648 MHZ on all four cores.

    It would be comforting if it were possible to get down to acceptable levels with passive cooling. That will not be easy. For one thing there is not much room for a heat sink between the main board and the expansion board which are only 9.5 mm apart. Furthermore the H2+ rises about 1.8 mm high above the main board. The chip is only 14 mm square but there is room around it. I think it should be possible to put a rectangular 17×22 mm heat sink that is 6 mm high on the chip. I have ordered some hardware and I will see what can be done.

    I also plan on drilling holes in the bottom plate of the case to increase air flow. The trouble is that the board sits just 2.5 mm above the plate so it will block most air movement from the bottom to the top. But I think there is nothing to lose in trying.

    There will be a report on the success, or lack thereof, of these measures when that slow boat from China comes in with my tube of thermal paste and heat sinks.

    In the mean time, I decided to try once more to lower the heat by disabling some of the hardware to reduce power consumption. The Armbian utility h3consumption remains available on DietPi. Using it to check the default settings, the graphics processor is inactive, which makes sense given the absence of an HDMI output on the OPiZ. I don't think that was the case with stock Armbian. I have learned my lesson and will not play with the network interfaces but I decided to disable the USB ports since these are not being used. It probably will not reduce the heat generated by the H2+ in any significant way, but it may reduce overall power consumption which could make the OPiZ a bit less finicky about its power supply.

    dietpi@domopiz:~$ sudo h3consumption -p Active settings: cpu 1200 mhz allowed, 1200 mhz possible, 4 cores active dram 408 mhz hdmi/gpu off usb ports active eth0 100Mb/s/Full, Link: yes dietpi@domopiz:~$ sudo h3consumption -u off Settings changed. Please reboot for changes to take effect and verify settings after the reboot using "h3consumption -p" dietpi@domopiz:~$ sudo reboot Connection to 192.168.0.35 closed by remote host. Connection to 192.168.0.35 closed. dietpi@domopiz:~$ sudo h3consumption -p Active settings: cpu 1200 mhz allowed, 1200 mhz possible, 4 cores active dram 408 mhz hdmi/gpu off usb ports off eth0 100Mb/s/Full, Link: yes
Raspian from OrangePi.org for the Orange Pi Zero-> <-Domoticz on the Orange Pi Zero, a First Look
Hotword Detection with snowboy on an Orange Pi Zero running DietPi->