Skip to content

fwupdmgr: /usr/libexec/fwupd/efi/fwupdx64.efi and /usr/libexec/fwupd/efi/fwupdx64.efi.signed cannot be found

From time to time our laptops receive firmware updates, by using the Linux Vendor Firmware Service (short: fwupd). This worked fine for a long time, until it didn't. One day I was facing the following error message:

root@laptop:/root# fwupdmgr update

╔══════════════════════════════════════════════════════════════════════════════╗
║ Upgrade Embedded Controller from 0.1.23 to 0.1.25?                           ║
╠══════════════════════════════════════════════════════════════════════════════╣
║                                                                              ║
║ ...                                                                          ║
║                                                                              ║
╚══════════════════════════════════════════════════════════════════════════════╝

Perform operation? [Y|n]: 
Downloading…             [***************************************]
Decompressing…           [***************************************]
Authenticating…          [***************************************]
Waiting…                 [***************************************]
Waiting…                 [***************************************]
/usr/libexec/fwupd/efi/fwupdx64.efi and /usr/libexec/fwupd/efi/fwupdx64.efi.signed cannot be found

During the first few occasions I basically ignored the error message, and attributed it to a glitch in a software package. Maybe a later update will fix this.

But this never happened, so I looked into the issue.

Ubuntu split the 1.6.x version of fwupd into separate packages, and does not install the packages fwupd-signed and fwupd-unsigned to deal with EFI binaries.

apt-get install -y fwupd-signed fwupd-unsigned

Now everything is working again:

root@laptop:/root# fwupdmgr update
╔══════════════════════════════════════════════════════════════════════════════╗
║ Upgrade Embedded Controller from 0.1.23 to 0.1.25?                           ║
╠══════════════════════════════════════════════════════════════════════════════╣
║                                                                              ║
║ ...                                                                          ║
║                                                                              ║
╚══════════════════════════════════════════════════════════════════════════════╝

Perform operation? [Y|n]: 
Downloading…             [***************************************]
Downloading…             [***************************************]
Decompressing…           [***************************************]
Authenticating…          [***************************************]
Waiting…                 [***************************************]
Writing…                 [***************************************]
Waiting…                 [***************************************]
Successfully installed firmware
Do not turn off your computer or remove the AC adapter while the update is in progress.
Waiting…                 [***************************************]

Voila! Also updated the playbook which installs the laptops, to include the two new packages.

QNAP: exclude files and directories from rsync

I'm moving files from one QNAP system to another, and I'm using rsync for this. It's preinstalled on a QNAP system. So far, so good.

To sync entire shared volumes, I want to exclude the '@Recently-Snapshot' and '@Recycle' entries - I don't want to sync the trash bin and I also don't want to sync entire snapshots.

The usual approach when using rsync is to just use the --exclude option.

rsync --exclude='@Recently-Snapshot' --exclude='@Recycle'

To my surprise this does not work. rsync on the QNAP does not complain, but also does not ignore the entries. Using escapes in front of the '@' doesn't work either. Ok, which version is the rsync program anyway?

[~] # rsync --version
rsync  version 3.0.7  protocol version 30
Copyright (C) 1996-2009 by Andrew Tridgell, Wayne Davison, and others.

Ouch, that is old. Very old. Released December 2009. Pretty sure QNAP did not fix all the bugs in there.

But according to the documentation, and the --help output, it accepts the --exclude option. Still not working though.

Ok, there is one more option: --exclude-from

I create a text file and add the two entries in there:

@Recently-Snapshot
@Recycle

And then I use the --exclude-from option to skip entries in these two directories:

rsync --exclude-from=/tmp/pattern.txt

This option works. At least something.

Summary: The rsync on a QNAP system does not accept the --exclude parameter, but the --exclude-from parameter works.

And for everyone asking why I don't use the integrated file copy: this one skips certain files, but I also want my dot files copied over.

WMF Küchenminis Smoothie-to-go 0,6l

Irgendwann September 2020 wollten wir unseren in die Tage gekommenen Smoothiemaker ersetzen. Nach etwas Recherche wurde es dann der "WMF Küchenminis Smoothie-to-go 0,6l". Es sollte nicht der einzige bleiben.

Das Gerät ist eigentlich gut verarbeitet, aber recht laut im Gebrauch. Stört aber nicht so sehr, weil man es meistens tagsüber verwendet. Solider Rahmen aus Edelstahl, lässt sich leicht reinigen. Ein paar Kleinigkeiten sind mit der Zeit jedoch aufgefallen:

  • Der Verschluss des Behälters mit dem eigentlichen Schneidwerk schließt recht genau mit der Fassung des Gehäuses ab. Nechdem sich einmal nach dem Mixen der Behälter vom Schneidkopf gelöst hat und der Kopf selber nicht aus der Fassung ausrasten wollte, standen wir dann mit einem etwas klebrigen Problem dar. Letzten Endes haben wir den Behälter umgedreht und abgeschraubt und danach mit einer Zange den Schneidkopf herausgedreht. Der glatte Abschluss zwischen Schneidkopf und Rahmen des Motors sieht zwar hübsch aus, ist aber nicht in jedem Fall hilfreich.
  • Das Gehäuse hat Öffnungen zum Motor hin. Mir ist nicht ganz klar wozu diese gut sind, aber wenn etwas Flüssigkeit aus dem Behälter (siehe oben) da hineinläuft, tut man sich schwer diese Öffnungen wieder sauber zu bekommen. Öffnungen nach unten zum Boden hin sollten reichen.

Im Juni 2021 ergab sich ein größeres Problem: der Einschaltknopf schaltete das Gerät nicht mehr in jedem Fall ein, sondern blockierte ab und zu. Im Boden des schwarzen Kopfes der den Schneidkopf aufnimmt ist eine mechanische Verriegelung angebracht die durch den Schneidkopf betätigt wird. Das stellt sicher dass der Motor nur angeschaltet werden kann wenn ein Behälter eingesetzt ist. Diese Verriegelung ist irgendwie mechanisch mit dem Einschaltknopf innerhalb des Gehäuses verbunden. Wenn man (mit gezogenem Stecker) die Verriegelung eindrückt stellt man fest wie die Verriegelung am Schalter aufgehoben wird. So weit, so gut. Jedoch funktionierte dieser Mechanismus nach rund 9 Monaten nicht mehr zuverlässig, sondern blockierte immer häufiger.

Garantiefall aufgemacht, das Gerät wurde getauscht. Das neue Gerät funktionierte anfangs einwandfrei - bis zum Dezember. Danach trat das gleiche Problem auf, jedoch diesmal sofort. Während beim ersten Gerät immer mal wieder der Einschaltknopf noch betätigt werden konnte, blockierte das zweite Gerät von einem Tag auf den anderen und ließ sich nicht mehr einschalten. Nach rund 8 Monaten genau das gleiche Problem?

Diesmal habe ich das Gerät einfach zurück gegeben. Jetzt muss ich noch einen anderen Smoothiemaker finden, nicht von WMF.

Delete directories recursive on Hetzner Storage Box

Among other external solutions, I store some data on Storage Boxes from Hetzner. The Storage Box allows you to have sub-accounts, so for every server and system storing data there, I use a separate account. For each sub-account, one can select a subdirectory where the data is stored, and the sub-account then can only see this data. The Admin account can see all data, and see all directories.

The usual way I access the Storage Box from other systems is by using sftp protocol from ssh (don't confuse this with the "other" sftp). That's all good, until I remove a sub-account and want to delete the subdirectory with the data. The server doesn't know "rm -r" for recursive deletion, which means I have to traverse into every directory, delete all files, then delete the empty directories. And the encrypted backup I'm using is creating plenty of subdirectories.

Or I find a better tool.

 

Continue reading "Delete directories recursive on Hetzner Storage Box"

Grafana: select host for a dashboard

InfluxDB is running on a Raspberry Pi in my home network (with separate attached disk), and I installed a Grafana on top of it, to visualize crucial data.

In Grafana it is possible to define a variable for a dashboard and this variable can query the data source and use the returned list of values. Let's say the variable is $host, then the data query can use:

WHERE host =~ /^$host$/

and limit the current dashboard to the selected host. Also the variable will provide a select field at the top of the dashboard, which allows selecting the system one wants to see:

Now usually - according to the documentation - a "SHOW TAG VALUES" in the data source should be sufficient However as it is, this did not work for me, and the query came back empty:

> show tag values from system with key = host

Looks like I'm not the only one with this problem.

 

Luckily there is a way around with another query:

select distinct("host") from (select "host","load1" from system)

The result:

> select distinct("host") from (select "host","load1" from system)
name: system
time distinct
---- --------
0    host1
0    host2
0    host3
0    host4
0    host5
0    host6

Grafana ignores the "time" column and uses the second column for the host list. Voila.

Move InfluxDB data directory to a SDcard

For my openHAB system I installed InfluxDB (on a separate) Raspberry Pi. The Pi has a 32 GB SDcard, but that is not enough for storing all the data, and that Pi has additional work to do as well. For that reason I also attached a 1 TB disk to the Pi, and mounted it on /data. Now all I have to do is move the InfluxDB data directory to /data.

 

Continue reading "Move InfluxDB data directory to a SDcard"

raspi-config automated

While I installed the Raspberry Pi with the Raspbee board on it, I had to modify the settings for the serial device. That's done using the raspi-config tool on Raspbian.

However since I'm into automation, I don't want to start "raspi-config" manually, but had to figure out how to do that in an automated way.

 

 

Continue reading "raspi-config automated"

HP Color LaserJet: Unable to connect to the network

We have a HP Color LaserJet in the office, one of these which can do both printing and scanning. The newer versions include a very nice feature "Scan to network folder" - so I did setup options to scan different PDF sizes to all of our laptops. Very convenient!

Until it stopped working a while ago.

The printer refuses scans to a network folder with the error message: "Scan Error" "Unable to connect to the network. Check the network, and then try again."

 

Continue reading "HP Color LaserJet: Unable to connect to the network"

Install a Raspbee II on a Raspberry Pi

A while ago I got a recommendation to look into a Raspbee (from dresden elektronik) as Zigbee gateway. That looked like fun, therefore I ordered one of the devices. The first step is the installation of the Pi itself and then the software for the Raspbee. 

For various reasons I decided to use a dedicated Pi for this, and don't install this on the openHAB Pi already running here:

  • The Raspbee needs software from a closed repository
  • During installation and configuration I don't have to reboot my openHAB system all the time
  • The headless install runs a webserver, this conflicts with the redirect I have on port 80 on the openHAB system
  • I still have a couple Raspberry Pi B+ here, which I don't need for other projects

 

Continue reading "Install a Raspbee II on a Raspberry Pi"

Raspberry Pi watchdog for openHAB

The openHAB display in the kitchen is still the problem child. Occasionally it just stops, other times it does not refresh the HABpanel, even though it has a connection to the openHAB server. Then there is the problem with the network card in the Pi. And - ok, that's a server-side problem - occasionally the weather stops updating. All in all that's a lot of trouble for a display which is just supposed to run standalone.

In the latest iteration I looked into activating the integrated hardware watchdog in the Raspberry Pi. Checking the temperature it never goes above ~55°C celcius, even though the display is in an almost closed frame and can't exchange much heat with the environment. But nevertheless occasionally the Pi just halts, and stops operating.

 

Continue reading "Raspberry Pi watchdog for openHAB"

Restic upgrade on Debian Buster

A while ago I switched backups from "Duplicity" to "Restic". About time: I was using Duplicity for many years (I think I started using it around 2010, long before "Restic" became available) and it served me well. But recently I ran into more and more issues, especially with archives getting larger and larger. There is an 11 years old open bug in the Duplicity bugtracker, which describes a showstopper for backing up larger archives. And it doesn't look like this will be solved anytime soon. Therefore it was time for something new.

Since I'm rolling out my backups with Ansible, it was relatively easy to create a set of scripts for Restic which use almost the same infrastructure as the old Duplicity backups. That works as expected on all our laptops. But the Raspberry Pi, which does the fileserver backups, seem to had a problem. Backups took way longer than before, jumped from 30-60 minutes (depending on the amount of changes) to constantly around 10 hours.

After some investigation (means: --verbose --verbose --verbose debugging), it turns out that Restic identifies most of the files as new, even though they did not change at all. Some background information: the Raspberry mounts the QNAP fileserver using the SMB3 protocol. The "mount -t cifs" uses the "serverino" option, but apparently that is not enough to provide a stable inode number. And if the inode for a file changes, Restic assumes it is a new file.

On the bright side, because the content of the files do not change, the deduplication still works, and no additional content is added to the backup. The size of the backup does not increase. Still, Restic fetches all the data from the server, and that takes a long time.

 

Continue reading "Restic upgrade on Debian Buster"

Disable screensaver for Raspberry Pi

The 7" Raspberry display in the kitchen is nice, but unfortunately by default the installation comes with a screensaver enabled. After a while, the display goes dark. No one wants to stare at a blank display, and touch the screen in order to see crucial information.

 

Continue reading "Disable screensaver for Raspberry Pi"

Remove Trashcan Icon from Raspberry Pi Desktop

Our home automation got a nice 7" Raspberry display in the kitchen, showing the most relevant information (like temperature, weather, washing machine, dryer ect) on a dedicated screen. Quite handy, especially the temperature, and the one-click stop to the weather forecast.

While installing the Pi and setting everything up, I stumbled over the Icons which LXDE by default shows on the desktop. Not necessary, I want them removed. All I want on the desktop is the browser icon which directly goes to the HABpanel.

The reason is simple: if the Pi starts up, but the browser for unknown reasons doesn't come up, I don't want anyone to be confused by additional icons on the desktop. After all, usually the LXDE desktop is not seen by default.
 

Continue reading "Remove Trashcan Icon from Raspberry Pi Desktop"

Raspberry Pi: take a screenshot from a display with no keyboard and mouse

The Raspberry Pi in the kitchen runs relatively stable, but recently the browser (which is showing the openHAB HABpanel) popped up a warning in the upper right corner. That's annoying, because this area in HABpanel shows the outside temperature.

Before investigating what's going on, I had to figure out a way to get a screenshot of the display - without running into the kitchen with my mobile phone. And without attaching a keyboard all the time (to press the "Print" button).

 

Continue reading "Raspberry Pi: take a screenshot from a display with no keyboard and mouse"

Hide the mouse cursor on a Raspberry Pi

The openHAB HABpanel we have in the kitchen runs on a Raspberry Pi and uses a touchscreen display. The browser starts in fullscreen mode, and shows a specific HABpanel screen for this display. That's all nice, but by default the mouse cursor is in the way. Let's get rid of it.

 

Continue reading "Hide the mouse cursor on a Raspberry Pi"