Home Assistant Core on Android Tablet

@talss89 you are a genius sir. Your pkg i python-numpy did the trick. I also needed your detail about uninstalling & reinstalling lru-dict

In the end, I think this is a full list of the instructions I needed to get HomeAssistant set up based on @gj9159a post (I’m not sure if there is anything that is unnecessary in the end, but I’m pasting it here in case it helps others):

# set SELinux=Permissive
su
setenforce 0

apt update
apt upgrade
pkg install openssh
passwd #setting the password
sshd #go to kitty/putty on PC
termux-setup-storage #confirm on the device
pkg install tsu python nano termux-api make libjpeg-turbo make rust python-cryptography libcrypt libffi binutils mosquitto wget -y

pkg install git
pkg i python-numpy

python -m venv --without-pip hass
source hass/bin/activate
pip install wheel
pip install tzdata
pip install maturin
pip install setuptools
MATHLIB=m pip install aiohttp_cors==0.7.0
MATHLIB=m pip install numpy==1.24.2
MATHLIB=m pip install PyTurboJPEG==1.6.7
export RUSTFLAGS="-C lto=n"
export CARGO_BUILD_TARGET="$(rustc -Vv | grep "host" | awk '{print $2}')" 
export CRYPTOGRAPHY_DONT_BUILD_RUST=1
pip download homeassistant==2023.2.3
wheel unpack homeassistant-2023.2.3-py3-none-any.whl
nano homeassistant-2023.2.3/homeassistant/package_constraints.txt
#We are looking for aiohttp and change its version to 3.8.3, as well as numpy to version 1.24.2, then press CTRL-X, Y, ENTER.
nano homeassistant-2023.2.3/homeassistant-2023.2.3.dist-info/METADATA
#We are looking for aiohttp and change its version to 3.8.3, press CTRL-X, Y, ENTER.
rm homeassistant-2023.2.3-py3-none-any.whl
wheel pack homeassistant-2023.2.3

pip uninstall lru-dict
pip install git+https://github.com/amitdev/lru-dict@5013406c409a0a143a315146df388281bfb2172d

pip install homeassistant-2023.2.3-py3-none-any.whl
pip install --upgrade pip
hass -v
#wait 5 minutes and restart the device
source hass/bin/activate #don't forget to activate the environment
hass -v #after a couple of minutes, you can try to log in
3 Likes

Great, so glad it worked out, and thank you for contributing your process, this is exactly what I needed!

I’m building a full Home Assistant Core .deb package with dh-virtualenv, so we can all leave this confusion behind and just install with pkg i homeassistant, so your process is really useful to see. I’ll review and merge with my build script.

There are known issues with network reconnects triggering an error loop (socket _accept_connection() error 22), and a discovery bug that relies on /etc/resolv.conf. I have patches for both in the pipeline, but for now you may want to use a restart automation.

Will share once I have something working.

1 Like

Had this error, managed to fix it somehow (can’t remember how) and worked for several days without any issues. Today I restarted Termux and now I get this error again.
I can start with --safe-mode but nothing in the logs (no errors, no warnings, no failures)

EDIT:
I think I solved it. Try this:

pkg in proot
termux-chroot
source hass/bin/activate
hass -v
1 Like

I’ve built an installer for HA Core on Android / Termux (ARM64). It’s alpha, but works on my LineageOS 19 rooted device, and on Termux / ARM64 machines in the cloud.

For anyone eager to try, there is a one-liner web install (although please be prepared for this to possibly break Termux entirely - this is not production ready):

curl -sL https://github.com/talss89/termux-home-assistant-installer/releases/download/v2023.4.4-alpha.3/remote-install.sh | bash

Would be interested to see how this works for others. Please raise issues via the GitHub repo.

5 Likes

Congratulations for the work Talss89!
Awesome works on my Samsung Tab S2 lineage os 18(homeassistant 2023.5.3)! I just have an error for ha-av how can I fix?

talss89, I express my great gratitude to you for the work done! This is exactly what was needed and was asking for! I hope you won’t abandon the script and will update it as much as possible, thank you!

With hass - v boot, did you have any errors with ha-av?

newest HA & clang

yes | pkg update
pkg install python make cmake ninja patchelf rust libcrypt libffi libjpeg-turbo llvm binutils-is-llvm libsodium ffmpeg  libandroid-execinfo -y

pkg install python-numpy python-bcrypt python-cryptography python-pillow -y

python -m venv --without-pip --system-site-packages hass
source hass/bin/activate

pip install wheel
pip install tzdata
pip install maturin
pip install setuptools
pip install webrtcvad
pip install aiohttp_cors==0.7.0
MATHLIB=m pip install PyTurboJPEG==1.7.1

SODIUM_INSTALL=system pip install pynacl

CARGO_BUILD_TARGET="$(rustc -Vv | grep "host" | awk '{print $2}')" pip install homeassistant

hass -v --skip-pip-packages numpy
#after 2 min kill hass and start again
2 Likes

In order to avoid logspam due to wifi disconnection you can start HA with wifi turned off and then turn it on.

Or just change default network adapter in settings to “lo”

pycares fix

wget https://files.pythonhosted.org/packages/01/50/e3015e6e03a3cf64113f509e8b86b71af37169b59ccedfcb182f3d031329/pycares-4.3.0.tar.gz

tar -xf pycares-4.3.0.tar.gz

sed -i s/'#define HAVE_GETSERVBYPORT_R 1'//g ./pycares-4.3.0/deps/build-config/config_android/ares_config.h

pip install ./pycares-4.3.0

Hi Daaflip, I also have the same problem, but I can’t solve it. What do you mean termux pinned?

Can this Home Assistant give any glitches when you use non-original hardware or ops?

Great script, two things though.

Maturin uses rust, so you need the cargo build target variable as well.

There is a problem currently with python 3.11: module ‘urllib3.util’ has no attribute ‘PROTOCOL_TLS’
The fix is currently to run pip install git+https://github.com/boto/botocore

@the.joker many android phones allow you to “pin” an app, this means it will stay active.

no problems for me on the fresh install, only numpy 1.23.2 had dlopen error
dlopen failed: cannot locate symbol “npy_nextafterf” referenc

I was to lazzy to fix it and just installed python-numpy (1.25.2)

pip uninstall numpy

pkg i python-numpy

hass -v --skip-pip-packages numpy
1 Like

Unfortunately I’ve had lot of issues with this recently. I use the tablet to launch another app to monitor cameras, and it looks like a recent update of this app introduced a memory leak.
And if your foreground app requests more and more memory, Android will terminate even the “wake lock” or “pinned” processes, it seems.

At least that’s what has happened to me for about a month, whenever I let this camera app run: Termux gets memory collected.

About fresh install, I’ve actually had a bunch of issues recently.
I’ve had my venv and most packages installed in there for more than 2 years now. Last week I messed up a command and ended up deleting the entire venv folder.

I’ve recreated from scratch, but I’m now experiencing issues I never had before.
First, I can’t start the stream domain because of a missing library, and I’m not sure where is it supposed to take it from:

2023-09-08 11:11:58.865 ERROR (MainThread) [homeassistant.setup] Error during setup of component stream
Traceback (most recent call last):
  File "/data/data/com.termux/files/usr/lib/python3.11/site-packages/homeassistant/setup.py", line 288, in _async_setup_component
    result = await task
             ^^^^^^^^^^
  File "/data/data/com.termux/files/usr/lib/python3.11/site-packages/homeassistant/components/stream/__init__.py", line 224, in async_setup
    from .recorder import async_setup_recorder
  File "/data/data/com.termux/files/usr/lib/python3.11/site-packages/homeassistant/components/stream/recorder.py", line 9, in <module>
    import av
  File "/home/.homeassistant/deps/lib/python3.11/site-packages/av/__init__.py", line 20, in <module>
    from av._core import time_base, library_versions
ImportError: dlopen failed: library "libandroidicu.so" not found

Second and more annoying, I’m getting the same error as @djdery and @tzachov. I cannot start hass anymore unless I run termux-chroot before, because I get a “Bad System Call” error, and no detail whatsoever.

It never happened before, only since I reinstalled from scratch.
Not sure how to properly fix this one, or why it was working before that.


Edit: found this topic about the library [Bug]: opencv 4.8.0 program link libandroidicu.so error · Issue #17509 · termux/termux-packages · GitHub
It mentions:

i found, before i try to run the program, i should change my environment, so i run termux-chroot. after this i get the error.

Could be nothing, but could also be a hint that the first issue is caused by the second one :thinking:

system lib, I have it at
/apex/com.android.i18n/lib64/libandroidicu.so

You can rename /data/data/com.termux/files/home and /data/data/com.termux/files/usr and restart termux, after it you will have clean termux whitout erasing old one.

Hi, iam beginer. Homeassistant my phone termux but started many errors.
Use Termux Docker no root phones ???

pkg install root-repo
pkg install docker (version v1:20.10.24-ce)
pkg install docker-compose (version 2.19.1)
apt update
-that seems fine

How to install Docker-Compose other command???

??? what about:
wget https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.deb
dpkg -i homeassistant-supervised.deb

Hm, I don’t have access, I haven’t rooted the tablet.
That could explain the error, I suppose. But what I don’t understand is that a week ago, everything worked. I cannot figure out what was set on my previous venv that it worked without issues on a non-rooted tablet