ryansch / docker-unifi-rpi

Unifi Controller for Raspberry Pi 3+ and x86
https://hub.docker.com/r/ryansch/unifi-rpi/
347 stars 42 forks source link

Unifi controller stopped working after upgrade to "bullseye" on my pi4 #102

Closed RainerSauseng closed 1 year ago

RainerSauseng commented 1 year ago

Hi all,

First of all: Many thanks to @ryansch for this sensational work on creating this docker image and keeping it up to date that frequently!

Now, my problem: Even if I know, that this was not the very best idea, I started running unifi controller on my Windows 10 PC. Not a long time later, I a friend gave me his old pi2, and the first use case was there. I decided to run the controller (version 5.x) as docker image and was very impressed, that it worked like a charm - and in a very short time. With other use cases (pihole, Smart Home ...) the pi2 was too small and I ordered a pi4 with 4GB memory. I installed Raspi OS "buster" and migrated all my docker images to the new pi. About a week ago I upgraded my pi4 from "buster" to "bullseye". All docker containers are working well - except the unifi controller.

After playing around a while I deleted the image and tried to pull a new one, but this failed.

pi@pi4:~/docker.yml/unifi $ docker-compose up -d Pulling unifi (ryansch/unifi-rpi:latest)... latest: Pulling from ryansch/unifi-rpi ERROR: no matching manifest for linux/arm/v8 in the manifest list entries

With buster I never had an error like this - with no container.

After adding the tag 7.3.83-arm64v8 to the image name in my compose.yml the image was downloaded, but it ends up in an endless restart loop.

I also tried to load an (older) armv7 image. This was generally running but this showed only the http 404 error, that i have found in other issues and is probably related to the mongodb incompatibility with 64bit systems

I'm not sure, but it seems, bullseye changed the architecture name from (something like) arm64v8 to aarch64, but this may be only one problem.

pi@pi4:~ $ uname -a Linux pi4 6.1.31-v8+ #1654 SMP PREEMPT Tue May 30 17:18:56 BST 2023 aarch64 GNU/Linux pi@pi4:~ $ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 11 (bullseye) Release: 11 Codename: bullseye

As I'm a M$ admin in real life, i desperately ask for help for this problem ;-)

BTW: On my old pi2, I installed "bullseye" on a new SD card and the unifi controller worked immediately. But to be honest, it can't be compared, because the pi2 is "only" a 32bit machine and I used a 32bit image (7.2.85).

ryansch commented 1 year ago

@RainerSauseng It looks like you've installed the 32-bit version of Raspberry Pi OS. You'll need to migrate your install to a 64-bit version.

RainerSauseng commented 1 year ago

@ryansch Thanks for your quick reply

Why do you think, it's a 32bit OS? I did an inplace upgrade from 64bit buster to 64bit bullseye, and das far as I know, the architecture does not change during an upgrade. Also 'uname -m' or 'arch' reports "aarch64" which is in fact a 64bit OS (32bit would report as armv7l, as my pi2 does).

ryansch commented 1 year ago

I'm wondering if it's a 32-bit userspace on a 64-bit processor/kernel.

linux/arm/v8 tells me that docker thinks it's 32 bit as arm is equivalent to armhf. If you were seeing linux/arm64/v8 then it would be able to resolve the manifest.

Try getconf LONG_BIT. If it spits out 32 then you're in for a reinstall.

RainerSauseng commented 1 year ago

Unfortunately you are right.

pi@pi4:~ $ getconf LONG_BIT 32

But why isn't the 32bit image working then?

RainerSauseng commented 1 year ago

Now it's working again.

Following this article (https://community.ui.com/questions/RPI-4B-HTTP-Status-404---Not-Found/89f1c259-9cc4-41e5-8409-fd3c798ba804), I added "arm_64bit=0" to the file /boot/config.txt and started the 7.2.85 image. First it showed http 404, but then the initial setup screen came up.

Many thanks for your help and guiding me into the right direction!