Upgrading Home Assistant

I run Home Assistant Core on a Raspberry Pi. I installed it in a Python venv and now and then I feel a need to upgrade. Today was such a day.

So, having backed everything up, I went for the plunge. Let’s install version 2025.1.2.

The usual dance goes a bit like this:

sudo systemctl stop homeassistant
sudo su homeassistant
cd /opt/homeassistant
source bin/activate
pip install --upgrade homeassistant
exit
sudo systemctl start homeassistant

Then all the dependencies are installed, so I usually go for a coffee, and once things have settled down (I use top to check that the system is idle), I usually restart homeassistance, just to make sure that it stops and starts nicely.

This time, I had no such luck. Lots of little issues. The major one seemed to be that import av in one of the core modules suffered from some sort of ValueError exception.

Having duckducked the issue for a while, I realized this meant that I had to do the upgrade from Python 3.12 to 3.13. Upgrading va to version 14.x using pip does not help. Since I always forget how to do this, I’m now writing this blog post.

Recollecting the steps, the moves are, more or less these:

sudo apt-get install python3.13 python3.13-venv python3.13-dev
sudo systemctl stop homeassistant
sudo su homeassistant
cd /opt/homeassistant
mkdir old
mv bin/ cache/ include/ lib/ lib64 LICENSE pyvenv.cfg share/ old
python3.13 -m venv .
source bin/activate
pip install homeassistant
exit
sudo systemctl start homeassistant

Again, restarting Home Assistant takes a while and a bit more since all the dependencies are built. Go grab a snack or just a quiet coffee and, viola, you will end up with a fresh install of Home Assistant version 2025.1.2

I’ve had my Creality CR-6 SE for quite some while now and it’s worked very well. I’ve even moved with it a couple of times. However, it seems that now was the time for it to give up the ghost, as the extruder casing developed a crack. Apparently something not completely uncommon.

The extruder casing removed. The spring is quite powerful.
The crack.

So I searched the internet for spare parts before I realized that this is a common failure mode and that there are all-metal replacements. A few clicks later, I had one ordered from Amazon. I took a chance and ordered one for CR-10, as it looked like it would fit from the photos, and it did (phew). Here is a link to the one I got: link.

The replacement extruder installed.

The installation went smooth. The only tricky part was getting the threads of the screw being pushed by the spring right. The spring is quite strong, so it is really a three hand operation in the area where my fingers have a hard time fitting. Having done that, it seems like it just work straight out of the box.

First print.

The print has been going on for a couple of hours now, and there has been no hickups. Big shout-out to OctoPrint while I’m at it. Being able to keep an eye on things without having to sit next to the printer is just great (and not having to fiddle around with SD-cards is also really nice).

NextCloudPi on Raspberry Pi 5

I finally took an evening to get NextCloudPi installed on a Raspberry Pi 5 with a large-ish NVMe drive. This was not a smooth ride. For your pleasure, this is how I got it working.

First, use Jeff Geerling’s guide to get the Pi booting from the NVMe drive.

Second, use this guide to move from Debian networking to systemd-networkd, but do not hold the avahi-daemon package.

Third, run the NextCloudPi curl install script.

Next up – the migration from my old instance. I have 1.5TB of files on a spin disk connected via USB that I need to move to the new NVMe storage – but that is for another night.

For the record – I do love NextCloud and NextCloudPi, so no finger pointing here, just sharing some frustration and how I got around the issue.

The next foss-north

This year’s foss-north was the tenth incarnation. I’ve been organizing foss-gbg since 2013, and foss-north since 2016 (two events in 2020 makes it ten in total). It’s been quite a journey – moving between three venues, working with amazing speakers and sponsors, finding a way through the pandemic, while getting to know so many people.

The conference continued when fscons moved from town. Henrik, who helped start fscons has been invaluable during the foss-north years.

Over the years, there has been multiple people helping out with things like announcing speakers, manning the registration booth, finding speakers and creating a program. One of the people who has been around the whole time is Tobias, who is ran a large portion of the show this year and is taking over the lead organizer role.

Private life has been rough over the past two years, so the decision to step back from foss-north has been more or less inevitable. So it’s a great feeling to be able to sit down and enjoy the show and know that the event is in good hands with Tobias.

Thank you all for speaking, visiting, helping out at, and sponsoring foss-north. See you at next year’s event. I’ll have more time to mingle than ever before! ;-)

Learning a language

Learning a language is, to me, about grinding. Continously exposing yourself.

Ich lerne Deutsch. Oder, ich versuche Deutsch zu lernen. 😉

I try to expose my self to the language via YouTube (thx Nils for the tip about 7 gegen Wild), but also news papers and just chatting with people. I’d say the biggest hurdle is that people find English easier than having me try to find and reorder the words, so practice at full speed is hard to find.

I guess I do the same for people trying to learn Swedish, and i really shouldn’t.

If you have tips for how to expose myself more to German – spoken or written – please drop a comment here or join the conversation at mastodon.

Porting Godot

I just took the time to start porting the epic Mattemonster app to Godot 4.1, as Google thinks it is getting a bit too old.

You can tell that the Godot developers have done a stellar job. Up until now I’ve just fiddled with Godot 4, so I haven’t really done anything proper in it – until today.

The main porting task was to change to an object driven approach to signals, rather than the old string-based on. Great – because it catches so much more early on. The only tricky part here was that in order to pass along arguments with a signal I had to use the bind function. That was not really what the error message complained about :-)

Also, I had to re-add the translations into the project settings, and to handle some messages from the window manager differently (close and quit). I’m still not sure I got the latter right…

Now, all that is left is the UI styling, so I guess I know what I will be doing in the rain this evening…