Libreoffice update failure

Today, when updating the Debian OS on my Gemini PDA, the upgrade for libreoffice failed complaining about the file dialog.xlc being present in multiple packages. A similar issue already has occurred with the Gemini PDA half a year ago¹. It is quite probable, that the same problem occurs with other Debian based distributions, as well. But let us have a look into the details first.

The usual update process (apt-get update;apt-get upgrade) resulted in apt complaining about the file dialog.tlc being present in both packages, libreoffice-base and libreoffice-common and failed:

Unpacking libreoffice-base (1:5.2.7-1+deb9u5) over (1:5.2.7-1+deb9u4) ...
dpkg: error processing archive /tmp/apt-dpkg-install-Y89hUD/03-libreoffice-base_1%3a5.2.7-1+deb9u5_arm64.deb (--unpack):
 trying to overwrite '/usr/lib/libreoffice/share/basic/dialog.xlc', which is also in package libreoffice-common 1:5.2.7-1+deb9u4
...
Errors were encountered while processing:
 /tmp/apt-dpkg-install-Y89hUD/03-libreoffice-base_1%3a5.2.7-1+deb9u5_arm64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Every subsequent attempt to upgrade the system fails. The system now is in broken state, that prevents upgrades. In example a second try to run apt upgrade only resulted in the hint to try apt –fix-broken install:

root@gemini:/home/gemini# apt upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 libreoffice-base : Depends: libreoffice-base-core (= 1:5.2.7-1+deb9u4) but 1:5.2.7-1+deb9u5 is installed
                    Depends: libreoffice-base-drivers (= 1:5.2.7-1+deb9u4) but 1:5.2.7-1+deb9u5 is installed
                    Depends: libreoffice-core (= 1:5.2.7-1+deb9u4) but 1:5.2.7-1+deb9u5 is installed
 libreoffice-core : Breaks: libreoffice-base (< 1:5.2.7-1+deb9u5) but 1:5.2.7-1+deb9u4 is installed
                    Recommends: libpaper-utils but it is not installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

Unfortunately, running apt –fix-broken install did not solve the problem:

root@gemini:/home/gemini# apt --fix-broken install  
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
...
The following packages will be upgraded:
  libreoffice-base
1 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
22 not fully installed or removed.
Need to get 0 B/1.344 kB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] 
(Reading database ... 125897 files and directories currently installed.)
Preparing to unpack .../libreoffice-base_1%3a5.2.7-1+deb9u5_arm64.deb ...
Unpacking libreoffice-base (1:5.2.7-1+deb9u5) over (1:5.2.7-1+deb9u4) ...
dpkg: error processing archive /var/cache/apt/archives/libreoffice-base_1%3a5.2.7-1+deb9u5_arm64.deb (--unpack):
 trying to overwrite '/usr/lib/libreoffice/share/basic/dialog.xlc', which is also in package libreoffice-common 1:5.2.7-1+deb9u5
E: Sub-process /usr/bin/dpkg returned an error code (1)<br>

Since the error indicates clearly, that dpkg fails to overwrite the file dialog.xlc, I tried the solution I have used to fix the issue with the libreoffice update half a year ago. So I “instructed” apt-get to overwrite the conflicting files:

apt-get -o Dpkg::Options::=”–force-overwrite” -f install

This finally solved the issue and allowed the libreoffice upgrade to complete:

root@gemini:/home/gemini# apt-get -o Dpkg::Options::="--force-overwrite" -f install
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
...
The following packages will be upgraded:
  libreoffice-base
1 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
21 not fully installed or removed.
Need to get 0 B/1.344 kB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] 
(Reading database ... 125897 files and directories currently installed.)
Preparing to unpack .../libreoffice-base_1%3a5.2.7-1+deb9u5_arm64.deb ...
Unpacking libreoffice-base (1:5.2.7-1+deb9u5) over (1:5.2.7-1+deb9u4) ...
dpkg: warning: overriding problem because --force enabled:
dpkg: warning: trying to overwrite '/usr/lib/libreoffice/share/basic/dialog.xlc', which is also in package libreoffice-common 1:5.2.7-1+deb9u5
dpkg: warning: overriding problem because --force enabled:
dpkg: warning: trying to overwrite '/usr/lib/libreoffice/share/basic/script.xlc', which is also in package libreoffice-common 1:5.2.7-1+deb9u5
Processing triggers for mime-support (3.60) ...
Processing triggers for desktop-file-utils (0.23-1) ...
Processing triggers for libc-bin (2.24-11+deb9u3) ...
Processing triggers for man-db (2.7.6.1-2) ...
Processing triggers for shared-mime-info (1.8-1+deb9u1) ...
Unknown media type in type 'all/all'
Unknown media type in type 'all/allfiles'
Setting up fonts-opensymbol (2:102.7+LibO5.2.7-1+deb9u5) ...
Setting up uno-libs3 (5.2.7-1+deb9u5) ...
Processing triggers for hicolor-icon-theme (0.15-1) ...
Setting up ure (5.2.7-1+deb9u5) ...
Processing triggers for fontconfig (2.11.0-6.7+b1) ...
Setting up libreoffice-style-galaxy (1:5.2.7-1+deb9u5) ...
Setting up libreoffice-common (1:5.2.7-1+deb9u5) ...
Setting up libreoffice-core (1:5.2.7-1+deb9u5) ...
Setting up libreoffice-gtk2 (1:5.2.7-1+deb9u5) ...
Setting up python3-uno (1:5.2.7-1+deb9u5) ...
Setting up libreoffice-base-drivers (1:5.2.7-1+deb9u5) ...
Setting up libreoffice-draw (1:5.2.7-1+deb9u5) ...
Setting up libreoffice-avmedia-backend-gstreamer (1:5.2.7-1+deb9u5) ...
Setting up libreoffice-java-common (1:5.2.7-1+deb9u5) ...
Setting up libreoffice-script-provider-python (1:5.2.7-1+deb9u5) ...
Setting up libreoffice-impress (1:5.2.7-1+deb9u5) ...
Setting up libreoffice-math (1:5.2.7-1+deb9u5) ...
Setting up libreoffice-base-core (1:5.2.7-1+deb9u5) ...
Setting up libreoffice-calc (1:5.2.7-1+deb9u5) ...
Setting up libreoffice-writer (1:5.2.7-1+deb9u5) ...
Setting up libreoffice-base (1:5.2.7-1+deb9u5) ...
Setting up libreoffice-librelogo (1:5.2.7-1+deb9u5) ...
Setting up libreoffice-report-builder-bin (1:5.2.7-1+deb9u5) ...
Setting up libreoffice (1:5.2.7-1+deb9u5) ...
Processing triggers for libc-bin (2.24-11+deb9u3) ...

The referenced thread¹ on oesf.org, regarding the past libreoffice upgrade issue, indicates there are quite some more possibilities that might fix the problem, but this one seems to be the easiest. So if this solution does not work for you, you might want to try one of the other solutions being shown there.

The libreoffice upgrade issue seems to be a reoccurring problem, thus a long term solution should be to fix the debian packages for libreoffice to not inlcude the same file in multiple packages. For the time being, the solution presented here solves the problem and gets the system back into a operational and upgradeable state.

Jürgen

References:
1. oesf.org: apt-get upgrade broke libreoffice

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading...

Modular Linux kernel for the Gemini PDA with lid close fix

Sometimes, well, quite often, maybe one out of twenty times when closing the lid, the Gemini PDA running Debian did not turn off the screen and go to sleep, because of keys being pressed by the closing screen before the keyboard gets turned off. When one recognized the Gemini getting hot in the pocket already a quarter to a half of the battery juice was lost.

Recently Adam Boardman has fixed this annoying issue within the Gemini’s Linux kernel. His fix disables the keyboard directly upon lid close, rather than waiting for screen blanking via userspace control. Within a few days after the fix I have not noticed the issue anymore. This fix is more than worth another kernel build. Again, I want to share my kernel build below:

The kernel configuration is unchanged (with respect to the previous article), but included for completeness: gemini-3.18.41+-config.gz (112 downloads)

For the build, again the updated kernel source the from https://github.com/gemian/gemini-linux-kernel-3.18 has been used.

Again the kernel modules for the iptables MIRROR target (will not be usable with the default iptables version on the Gemini) and frandom are included.

Those who do not want to go through the build themselves can download my prebuild kernel from here:

Kernel Image: linux_boot-gemini-3.18.41+.img (121 downloads)
Modules: modules_firmware-gemini-3.18.41+.tar.gz (142 downloads)
(the kernel modules in the previous article should still work, however, the new build is included for completeness)

Instructions for flashing the image can be found on: support.planetcom.co.uk. Make sure to use a proper scatter file, in example the one that has been used for the initial flashing. Using the Download only mode of the flash tool is sufficient. Uncheck all partitions but boot (or boot1 or boot2, depending on your boot order). For the boot partition respectively the boot1 or boot2 partition select the downloaded kernel image.

Alternatively you can flash the kernel using dd:

dd if=linux_boot-gemini-3.18.41+.img of=/dev/block/disk/by-partlabel/boot

If Linux is not your primary operating system on the Gemini use boot1 or boot2 instead, depending on your partition layout.

After flashing, copy the modules archive onto your Gemini and extract it in your root directory:

cd /
tar -xzf /path_to/modules_firmware-gemini-3.18.41+.tar.gz

After rebooting the device, it should go to sleep reliably after closing the lid.


Jürgen

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading...

Avoid message loops with FHEM2FHEM

Multiple instances of the open source server for house automation FHEM running on different machines can communicate using the FHEM2FHEM¹ module. Unfortunately one runs into big trouble when trying to use the module bidirectionally. FHEM2FHEM reads events from a remote FHEM instance. When using declarations like the following on both sides this results in an event loop because instance1 reads an event from instance2 and generates a new event on instance1. This event then gets read by instance2 again and so on…

define instance2 FHEM2FHEM instance2:7072 LOG:.*

fhem.cfg on instance1

define instance1 FHEM2FHEM instance1:7072 LOG:.*

fhem.cfg on instance2

Eventually this results in an event loop consuming all available CPU power and freezing FHEM.

One could simply prevent this situation by not forwarding all events by using a regular expression filtering the events instead of using LOG:.* . This also means one has to know which event gets received best by which instance. For example for simple radio temperature sensors this is hard to tell. Also one might want to have all sensor data available on all instances. This can be achieved by preventing FHEM from processing events, that got received from a remote instance a second time.

My modified version of 93_FHEM2FHEM.pm does exactly this, when a remote event gets read an additional flag (DISABLEEVENT) is being set. When the event afterwards gets processed a second time it gets discarded and the flag gets removed, so that usual message handling for the device can continue. This might not be the most sophisticated solution for the problem, but at least it prevents FHEM from freezing.

To prevent FHEM from freezing in the bidirectional setup, download the modified version of 93_FHEM2FHEM.pm (201 downloads) and replace the original file in the folder /opt/fhem/FHEM for both instances. Then edit the file fhem.cfg for both instances and add the attribute avoidMsgLoop to the FHEM2FHEM device, like in the following example. To get useful states for some devices, like CUL_TCM97001 sensors one still has to add the addStateEvent attribute.² Without this, for example plots would not work properly.

define instance1 FHEM2FHEM instance1:7072 LOG:.*
attr instance1 avoidMsgLoop 1
attr instance1 addStateEvent 1

With this modification it should be possible to set up a “cluster” of FHEM instances that can operate independent from each other but have the same data available. Thus the failure of one instance has less impact and the range of most radio devices can be extended transparently.

For completeness and in case someone wants to include this or an improved variant into FHEM the diff is available from here: 93_FHEM2FHEM-avoidMSgLoop.patch (154 downloads)

Jürgen

References:
1. fhem.de
2. forum.fhem.de

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Modular Linux kernel for the Gemini PDA with FOTA5 fixes

Recently the fixes in Planet Computers over the air update found their way into the Gemini Linux kernel sources. Thus the Linux kernel binaries I have shared before are a bit outdated now. So I have decided to build another kernel from the newer kernel sources with the following configuration changes with respect to the previous version:

•Enabled CONFIG_TOUCHSCREEN_MTK_SSL_SSD20XX (touchscreen driver for newer Gemini revisions)
•Added aeon_ssd2092_fhd_dsi_solomon to CONFIG_CUSTOM_KERNEL_LCM (use the touchscreen driver)
•Enabled CONFIG_USER_NS (for lxc and snapd)
•Enabled CONFIG_OVERLAY_FS (for lxc and snapd)
•Enabled CONFIG_SQUASHFS (for lxc and snapd)
•Enabled CONFIG_SQUASHFS_XATTR (for lxc and snapd)
•Enabled CONFIG_SQUASHFS_ZLIB (for lxc and snapd)
•Enabled CONFIG_SQUASHFS_XZ (for lxc and snapd)
•Enabled CONFIG_SQUASHFS_LZO (for lxc and snapd)
•Enabled CONFIG_SQUASHFS_LZ4 (for lxc and snapd)
•Enabled CONFIG_CRYPTO_LZ4HC (for lxc and snapd)

The changes and dependencies result in this kernel configuration: gemini-3.18.41+-config.gz (147 downloads)

For the build, again the updated kernel source the from https://github.com/gemian/gemini-linux-kernel-3.18 has been used.

Again the kernel modules for the iptables MIRROR target (will not be usable with the default iptables version on the Gemini) and frandom have been added.

Those who do not want to go through the build themselves can download my prebuild kernel from here:

Kernel Image: modules_firmware-gemini-3.18.41+.tar.gz (190 downloads)
Modules: linux_boot-gemini-3.18.41+.img (145 downloads)

Instructions for flashing the image can be found on: support.planetcom.co.uk. Make sure to use a proper scatter file, in example the one that has been used for the initial flashing. Using the Download only mode of the flash tool is sufficient. Uncheck all partitions but boot (or boot1 or boot2, depending on your boot order). For the boot partition respectively the boot1 or boot2 partition select the downloaded kernel image.

Alternatively you can flash the kernel using dd:

dd if=linux_boot-gemini-3.18.41+.img of=/dev/block/disk/by-partlabel/boot

If Linux is not your primary operating system on the Gemini use boot1 or boot2 instead, depending on your partition layout.

After flashing, copy the modules archive onto your Gemini and extract it in your root directory:

cd /
tar -xzf /path_to/modules_firmware-gemini-3.18.41+.tar.gz

After rebooting the device, it should behave somewhat more stable than it did before.

Regards
Jürgen

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Using the auto power on feature with the NVIDIA Jetson TX2 development kit

There has been a discussion about enabling the auto power on feature of the Jetson TX2 development kit on devtalk.nvidia.com. The solutions discussed there involved using a additional micro controller or soldering directly on the quite expensive board which is not desired by quite some users. This article will show a fairly simple and quite safe method to use the auto power on feature without additional circuitry or soldering directly on the board.

According to the Developer Kit Carrier Board Specification the auto power on feature can be enabled by shorting the CHARGR_PRSNT pin (pin 1) of the charge Charge Control Receptacle (J27) to ground (pin 5). This is fairly hard to achieve without having the appropriate connector or soldering the board itself. Since the pins 2-4 also are input pins it is safe to short all these pins (1-4)  to ground. This can easily be achieved by using a small piece of a copper plated circuit board matching the receptacles dimensions.

The piece of circuit board has to be cut and grinded to proper dimensions. A board of approximately 6mm x 8mm x1 mm size is fine. Afterwards the copper plating has to be grinded off in the area that can get contact with any other pin than the five mentioned pins. It is advisable to check this with a Multimeter while moving the board left and right in the receptable before attaching power. If you damage your board due to this procedure, you are the only one responsible. The resulting board is being shown below.

The circuit board.

The completed circuit board.

This board turned out to be a bit to thin to ensure contact, thus a bit of soldering tin has been applied to the copper plating to ensure the contact between the pins. The tiny board can now be inserted into the Charge Control Receptacle

Jetson TX2 with auto-power-on

Jetson TX2 Development board with applied board for auto-power-on

With the crafted piece of circuit board inserted into the Charge Control Receptacle the Jetson TX2 now boots directly after applying power. This has been tested with two different development boardw. For the older board (Revision B04, SATA port facing up) it worked, but it did not work for the newer (Revision C02, SATA port facing to the side) one. So your mileage might vary.

Jürgen

References:
1 NVIDIA development forums
2 JetsonTX1 TX2 Developer Kit Carrier Board Specification p. 31
3 how-to-find-carrier-board-version

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Another improved modular Linux kernel for the Gemini PDA

The time has come for another modular linux kernel for the Gemini PDA. The linux kernel binaries I have shared before were lacking proper USB pendrive support. Whenever a drive got connected it froze and the device begun behaving strange, in example it has been impossible to open applications afterwards. Furthermore, in the meanwhile the Geminis keyboard ghosting issue got fixed in the updated kernel sources. Thus I have decided to build another kernel with the following changes:

•Enabled modules for more USB devices
•Enabled FB_UDL and DRM_UDL (for displaylink devices)
•Disabled SCSI_MQ_DEFAULT (for getting USB pendrives working again)

The changes and dependencies result in this kernel configuration: gemini-3.18.41+-config.gz (217 downloads)

For the build, again the updated kernel source the from https://github.com/gemian/gemini-linux-kernel-3.18 has been used.

Again the kernel modules for the iptables MIRROR target (will not be usable with the default iptables version on the Gemini) and frandom have been added.

Those who do not want to go through the build themselves can download my prebuild kernel from here:

Kernel Image: modules_firmware-gemini-3.18.41+.tar.gz (291 downloads)
Modules: linux_boot-gemini-3.18.41+.img (249 downloads)

Instructions for flashing the image can be found on: support.planetcom.co.uk. Make sure to use a proper scatter file, in example the one that has been used for the initial flashing. Using the Download only mode of the flash tool is sufficient. Uncheck all partitions but linux_boot (or boot if you boot into linux as default). For the linux_boot respectively the boot partition select the downloaded kernel image. With newer scatter files the boot partition names have changed to boot, boot1 and boot2. Select the appropriate  one for your Gemini.

Alternatively you can flash the kernel using dd:

dd if=linux_boot-gemini-3.18.41+.img of=/dev/block/disk/by-partlabel/boot

If Linux is not your primary operating system on the Gemini use boot1 or boot2 instead, depending on your partition layout.

After flashing, copy the modules archive onto your Gemini and extract it in your root directory:

cd /
tar -xzf /path_to/modules_firmware-gemini-3.18.41+.tar.gz

After rebooting the device, USB pendrives and other SCSI like devices like HDDs and DVD drives/burners should work again when attached to the Geminis USB ports.

Regards
Jürgen

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Improved modular Linux kernel for the Gemini PDA

The linux kernel binary I have shared in the article Modular Linux kernel for the Gemini PDA turned out to lack some important features, like not supporting the ethernet port of the Planet Computers USB hub. Thus a second version of the kernel had to be built.

In addition to the original changes, the following changes to the kernel configuration have been performed:

•Enabled modules for more USB devices
•Disabled CONFIG_MTK_CPU_HOTPLUG_DEBUG_0 (for less pollution in dmesg)
•Disabled CONFIG_MTK_CPU_HOTPLUG_DEBUG_3 (for less pollution in dmesg)
•Enabled  CONFIG_RCU_FAST_NO_HZ (for improved energy efficiency)
•Enabled CONFIG_RCU_BOOST (for better performance)

Originally I intended to also disable CONFIG_MTK_CPU_HOTPLUG_DEBUG_2, but then the build fails with an error regarding a static struct declaration.

The changes result in this kernel configuration: gemini-3.18.41+-config.gz (242 downloads)

For the build, the updated kernel source the from https://github.com/gemian/gemini-linux-kernel-3.18 with the fix for the Bluetooth vulnerability cve-2017-1000251 has been used.

Again the kernel modules for the iptables MIRROR target (will not be usable with the default iptables version on the Gemini) and frandom have been added.

Those who do not want to go through the build themselves can download my prebuild kernel from here:

Kernel Image: linux_boot-gemini-3.18.41+.img (281 downloads)
Modules: modules_firmware-gemini-3.18.41+.tar.gz (311 downloads)

Downloads outdated, new version at: Another improved modular Linux kernel for the Gemini PDA

Instructions for flashing the image can be found on: support.planetcom.co.uk. Make sure to use the same scatter file that has been used for the initial flashing. Using the Download only mode of the flash tool is sufficient. Uncheck all partitions but linux_boot (or boot if you boot into linux as default). For the linux_boot respectively the boot partition select the downloaded kernel image. With newer scatter files the boot partition names have changed to boot, boot1 and boot2. Select the appropiate  one for your Gemini.

Alternatively you can flash the kernel using dd:

dd if=linux_boot-gemini-3.18.41+.img of=/dev/block/disk/by-partlabel/boot

If Linux is not your primary operating system on the Gemini use boot1 or boot2 instead, depending on your partition layout.

After flashing, copy the modules archive onto your Gemini and extract it in your root directory:

cd /
tar -xzf /path_to/modules_firmware-gemini-3.18.41+.tar.gz

After rebooting the device some more USB peripherals, including the ethernet port of the Planet Computers hub, should work.

Regards
Jürgen

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

siteinfo

Translator