Install Home Assistant, Mosquitto broker and Node-Red on android

@vladosam
could you please check on your backup installation on Android if upgrading to 2021.5.x brings errors with dhcp and zeroconf? I know about one more user having it too, everything else is working fine.
edit: only now I see you couldn´t install hass on Termux anymore, nevermind, time to move on, thanks, it´s been a ride!

1 Like

You can still run it on android versons < 10. But eventually it will hit the wall. It’s a shame i always had termux as a backup if something happens to my main machine.

Just out of interest, what main machine do you use? And which from several oficially supported options would you recommend as most future-proof in your opinion?

I used rpi 2-3 and now i’m on libre computer le potato board. My setup is small an without cameras, so i don’t need to much power. A couple of my friends runs everything on unraid machines. And they say it works great for them. So in the future i will probably go in that direction.

1 Like

Let me add an example here which might be contradicting. I have HA on my android and installed OTG adapter and plugged in CC2531 and i am redirecting USB to serial port and use ZHA to access Zigbee dongle and everything seems to be working.

While you are right about using old phone, pi is a standardized solution but android is full of tricks/hacks. Yes, it is working as of today but I am dead scared in every update what will be broken.

Another post which was useful to me: Home Assistant Core on Android Tablet

Yes it seems if phone is rooted it can work with cc2531. But again, i’m afraid there is no future with termux. How to use on Android ( TV Boxes, phones via USB-OTG ) · Issue #1861 · Koenkk/zigbee2mqtt · GitHub

why do you think there is no future here? ZHA is working over TCP connection and I am using a python script to mirror serial port into TCP, all seems to be working. Actually, it is working better than Sonoff Zigbee Bridge in my experience :slight_smile:

on another topic, after I ugrade to home assistant 2021.6.3, i had issues with timezone, I fixed it via updating tzdata

  • pip install tzdata

I was having regular resolve.conf error in my logs as there was no file in /etc/resolve.conf. I had to mount system partition as root user and copy termux’s resolve.conf into etc, so it is silent now :slight_smile:

1 Like

This is from termux github.
We do not want to introduce the breaking changes to comply with Google's requirements. But as result Termux does not support Android 10 officially.*
And every next version of android will be even more restricted.

I see, so if we want to move forward with new android versions, we will lose termux support. I will try to hang around with my samsung a7 without updating and see how further i can reach :slight_smile: thanks for great guide again

1 Like

I have this running on LineageOS 18 on an old Samsung S5. Think we’ve hit the limit as over the weekend I updated homeassistant and various things broke. After quite a bit of trial and error, the most recent version I can get to work is 2021.7.4 as after that PyNaCl version 1.4.0 is required and the mobile_app integration breaks. Not sure if there is a workaround to get newer versions but to get 2021.7.4 working I changed:

pip install homeassistant

to

pip install pip==20.2.4
pip install wheel tzdata xmltodict pynacl==1.3.0 idna==2.8
pip install homeassistant==2021.7.4

Hello @vladosam

I have node-red installed with pm2 plus on android 6.0.

The pm2 ressurect command restores a saved node-red process and I can preview them on app.pm2.io.

How to start node-red with termux start now?

I tried something like this but it doesn’t work

You can add pm2 ressurect to bashrc.
nano ~/.bashrc
pm2 resurrect

1 Like

Hi, I installed everything according to your instructions. help please

Summary

ERROR: Command errored out with exit status 1:
command: /data/data/com.termux/files/usr/bin/python3 /data/data/com.termux/files/usr/lib/python3.10/site-packages/pip/_vendor/pep517/in_process/_in_process.py build_wheel /data/data/com.termux/files/usr/tmp/tmpd5tdmly6
cwd: /data/data/com.termux/files/usr/tmp/pip-install-d4ffz0gc/cryptography_6ce5e81098154b449fdf476a5b41a8b6
Complete output (165 lines):
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-aarch64-3.10
creating build/lib.linux-aarch64-3.10/cryptography
copying src/cryptography/fernet.py → build/lib.linux-aarch64-3.10/cryptography
copying src/cryptography/utils.py → build/lib.linux-aarch64-3.10/cryptography
copying src/cryptography/about.py → build/lib.linux-aarch64-3.10/cryptography
copying src/cryptography/init.py → build/lib.linux-aarch64-3.10/cryptography
copying src/cryptography/exceptions.py → build/lib.linux-aarch64-3.10/cryptography
creating build/lib.linux-aarch64-3.10/cryptography/hazmat
copying src/cryptography/hazmat/_der.py → build/lib.linux-aarch64-3.10/cryptography/hazmat
copying src/cryptography/hazmat/_oid.py → build/lib.linux-aarch64-3.10/cryptography/hazmat
copying src/cryptography/hazmat/init.py → build/lib.linux-aarch64-3.10/cryptography/hazmat
copying src/cryptography/hazmat/_types.py → build/lib.linux-aarch64-3.10/cryptography/hazmat
creating build/lib.linux-aarch64-3.10/cryptography/x509
copying src/cryptography/x509/extensions.py → build/lib.linux-aarch64-3.10/cryptography/x509
copying src/cryptography/x509/ocsp.py → build/lib.linux-aarch64-3.10/cryptography/x509
copying src/cryptography/x509/base.py → build/lib.linux-aarch64-3.10/cryptography/x509
copying src/cryptography/x509/init.py → build/lib.linux-aarch64-3.10/cryptography/x509
copying src/cryptography/x509/oid.py → build/lib.linux-aarch64-3.10/cryptography/x509
copying src/cryptography/x509/general_name.py → build/lib.linux-aarch64-3.10/cryptography/x509
copying src/cryptography/x509/certificate_transparency.py → build/lib.linux-aarch64-3.10/cryptography/x509
copying src/cryptography/x509/name.py → build/lib.linux-aarch64-3.10/cryptography/x509
creating build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/cmac.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/_cipheralgorithm.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/poly1305.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/constant_time.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/_serialization.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/keywrap.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/padding.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/hmac.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/init.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/_asymmetric.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/hashes.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives
creating build/lib.linux-aarch64-3.10/cryptography/hazmat/backends
copying src/cryptography/hazmat/backends/interfaces.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/backends
copying src/cryptography/hazmat/backends/init.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/backends
creating build/lib.linux-aarch64-3.10/cryptography/hazmat/bindings
copying src/cryptography/hazmat/bindings/init.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/bindings
creating build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/algorithms.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/base.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/aead.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/modes.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/init.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/ciphers
creating build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/serialization
copying src/cryptography/hazmat/primitives/serialization/ssh.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/serialization
copying src/cryptography/hazmat/primitives/serialization/pkcs12.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/serialization
copying src/cryptography/hazmat/primitives/serialization/init.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/serialization
copying src/cryptography/hazmat/primitives/serialization/pkcs7.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/serialization
copying src/cryptography/hazmat/primitives/serialization/base.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/serialization
creating build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/scrypt.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/pbkdf2.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/init.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/concatkdf.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/kbkdf.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/x963kdf.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/hkdf.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/kdf
creating build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/twofactor
copying src/cryptography/hazmat/primitives/twofactor/hotp.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/twofactor
copying src/cryptography/hazmat/primitives/twofactor/init.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/twofactor
copying src/cryptography/hazmat/primitives/twofactor/utils.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/twofactor
copying src/cryptography/hazmat/primitives/twofactor/totp.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/twofactor
creating build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/x448.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/ed448.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/dh.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/utils.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/ed25519.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/padding.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/x25519.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/init.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/ec.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/rsa.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/dsa.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/primitives/asymmetric
creating build/lib.linux-aarch64-3.10/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/ciphers.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/backend.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/x25519.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/poly1305.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/hashes.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/ec.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/dsa.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/ocsp.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/init.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/x448.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/decode_asn1.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/dh.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/rsa.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/ed448.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/ed25519.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/cmac.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/aead.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/encode_asn1.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/utils.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/x509.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/hmac.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/backends/openssl
creating build/lib.linux-aarch64-3.10/cryptography/hazmat/bindings/openssl
copying src/cryptography/hazmat/bindings/openssl/init.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/bindings/openssl
copying src/cryptography/hazmat/bindings/openssl/binding.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/bindings/openssl
copying src/cryptography/hazmat/bindings/openssl/_conditional.py → build/lib.linux-aarch64-3.10/cryptography/hazmat/bindings/openssl
running egg_info
writing src/cryptography.egg-info/PKG-INFO
writing dependency_links to src/cryptography.egg-info/dependency_links.txt
writing requirements to src/cryptography.egg-info/requires.txt
writing top-level names to src/cryptography.egg-info/top_level.txt
reading manifest file ‘src/cryptography.egg-info/SOURCES.txt’
reading manifest template ‘MANIFEST.in’
no previously-included directories found matching ‘docs/_build’
warning: no previously-included files found matching ‘vectors’
warning: no previously-included files matching ‘’ found under directory ‘vectors’
warning: no previously-included files matching '
’ found under directory ‘.github’
warning: no previously-included files found matching ‘release.py’
warning: no previously-included files found matching ‘.coveragerc’
warning: no previously-included files found matching ‘codecov.yml’
warning: no previously-included files found matching ‘.readthedocs.yml’
warning: no previously-included files found matching ‘dev-requirements.txt’
warning: no previously-included files found matching ‘tox.ini’
warning: no previously-included files found matching ‘mypy.ini’
warning: no previously-included files matching ‘’ found under directory ‘.zuul.d’
warning: no previously-included files matching '
’ found under directory ‘.zuul.playbooks’
adding license file ‘LICENSE’
adding license file ‘LICENSE.APACHE’
adding license file ‘LICENSE.BSD’
adding license file ‘LICENSE.PSF’
writing manifest file ‘src/cryptography.egg-info/SOURCES.txt’
copying src/cryptography/py.typed → build/lib.linux-aarch64-3.10/cryptography
running build_ext
generating cffi module ‘build/temp.linux-aarch64-3.10/_padding.c’
creating build/temp.linux-aarch64-3.10
generating cffi module ‘build/temp.linux-aarch64-3.10/_openssl.c’
running build_rust

  =============================DEBUG ASSISTANCE=============================
  If you are seeing a compilation error please try the following steps to
  successfully install cryptography:
  1) Upgrade to the latest pip and try again. This will fix errors for most
     users. See: https://pip.pypa.io/en/stable/installing/#upgrading-pip
  2) Read https://cryptography.io/en/latest/installation.html for specific
     instructions for your platform.
  3) Check our frequently asked questions for more information:
     https://cryptography.io/en/latest/faq.html
  4) Ensure you have a recent Rust toolchain installed:
     https://cryptography.io/en/latest/installation.html#rust
  5) If you are experiencing issues with Rust for *this release only* you may
     set the environment variable `CRYPTOGRAPHY_DONT_BUILD_RUST=1`.
  =============================DEBUG ASSISTANCE=============================

error: can’t find Rust compiler

If you are using an outdated pip version, it is possible a prebuilt wheel is available for this package but pip is not able to install from it. Installing from the wheel would avoid the need for a Rust compiler.

To update pip, run:

  pip install --upgrade pip

and then retry package installation.

If you did intend to build this package from source, try installing a Rust compiler from your system package manager and ensure it is on the PATH during installation. Alternatively, rustup (available at https://rustup.rs) is the recommended way to download and update the Rust compiler toolchain.

This package requires Rust >=1.41.0.

ERROR: Failed building wheel for cryptography
Failed to build cryptography
ERROR: Could not build wheels for cryptography, which is required to install pyproject.toml-based projects

You can try to set env variable

export CRYPTOGRAPHY_DONT_BUILD_RUST=1

But I really don’t recommend running homeassistant on termux anymore. Termux is a rolling release and its packages moves much faster than homeassistant. Also, termux won’t work as intended on newer versions of android.

if someone has some issue with pynacl==1.4.0
this works to me

pkg install clang python libffi openssl libsodium
SODIUM_INSTALL=system pip install pynacl

After serveral good years I reached the end of the road with HA on Termux. However I now have the latest version of HA running nicely on the same phone using Linux Deploy w/ Ubuntu. I flashed it with LineageOS 18.1 to get root. Now there is no concern about which packages are available, mosquitto and other things are already included in the image.

I started following a guide by Luca Cesarano, but once I had the image booted and could ssh in, I installed the latest HA using the instructions in the first post and finally copied my .homeassistant folder across. After the long first boot everything came to life.

I’m not ready to give up on my galaxy s7 just yet.

5 Likes

I’m working through the same problem now while I wait for a Raspberry Pi 4 to arrive :slight_smile:

To work around this issue, I did:

pkg install rust
export CARGO_BUILD_TARGET=aarch64-linux-android
pip install cryptography==35.0.0  # version pin to the one required by homeassistant as of Dec 13

The export line came from error: Don't know the correct rust target for system type aarch64-unknown-linux-android. Please set the CARGO_BUILD_TARGET environment variable · Issue #6679 · pyca/cryptography · GitHub

… I actually ended up just doing pip install cryptography to get the latest version, because 0.35.0 is not compatible with Python 3.10. Then I git clone --depth=1 https://github.com/home-assistant/core.git, cd to that dir, then vimed setup.py just to require plain pip and cryptography rather than their pinned variants. Then running python setup.py develop in that directory installed a version of hass that seems to work, other than it failing to install some dependencies itself when I first ran it (so I did pip install pyotp==2.6.0 PyQRCode==1.2.1 sqlalchemy==1.4.27 to bring in the ones it was looking for).

1 Like

I tried to follow your advice.
But I’m stuck to the point:
pip install homeassistant
It gives me errors.

Can you help install?

Thank you!