Zum Inhalt

Autor: Florian Panzer

Systemadministrator aus Bamberg.

Ich bin auch bei Twitter und Google+

Saving battery life on linux using powertop

Most distributions come with a handy tool called powertop, that is able to automatically set kernel parameters to save energy.

sudo powertop --auto-tune

Settings are not permanent, to you can use the following snippet to create and load a systemd unit file to load the settings after rebooting your machine:

cat << EOF | sudo tee /etc/systemd/system/powertop.service
Description=PowerTOP auto tune

ExecStart=/usr/sbin/powertop --auto-tune


systemctl daemon-reload
systemctl enable powertop.service
systemctl start powertop.service

1 Comment

Xiaomi Robot Vacuum 4S2P DIY Battery Pack Repair

My Xiaomi Robot (V1) just sporadically shut down after around 20 Minutes of cleaning, stating "Error 14". I looked it up, and Error 14 stands for battery malfunction.

Since i own a lot of 18650 battery packs I'm able to build my own battery from old laptop battery 18650s, so I decided to upload the pinout of the Xiaomi Charging Pad

Solder your 4S cells here and you're good to go!


gentoo/octane – A modern GNU/Linux system for the SGI Octane Workstation

It took about 6 months of work, and it's done: gentoo/octane 1.0 has been released.

Grab your copy here: gentoo-octane-v1.0-by-rephlex.tar.xz

It's basically a complete tarball of the system. So:

  • attach scsi disk to any machine or netboot the octane using root=/dev/nfs nfsroot=a.b.c.d/path/to/filesystem (if you're a tough guy)
  • prepare the octanes local disks
  • add tarball
  • set envvars (included)
  • profit

What works:

  • everything that would work in any random gentoo that is up-to-date as of April 2019 😉
  • Kernel 4.12 with audio, and all the funny devices inside the octane including impact graphics.

What doesn't work yet:

  • xf86-video-impact xorg module ;/ – see /etc/motd for how to achieve running xorg. It's ALMOST DONE!
  • Kernel newer than 4.12. The patches need to be tested and maybe adjusted, that's it.


If you want to donate money, my paypal is rephlex@rephlex.de 😉

Awesome quickstart writeup by Alex Ernst:

root@SomeLinuxMachine:~# fdisk /dev/sdc

Command (m for help): p
Disk /dev/sdc: 136.8 GiB, 146815737856 bytes, 286749488 sectors
Disk model: BD1468A4C5
Geometry: 255 heads, 63 sectors/track, 17849 cylinders
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: sgi

Device         Start       End   Sectors   Size Id Type       Attrs
/dev/sdc1    2097153 278921217 276824065   132G  a SGI xfs     boot
/dev/sdc2  278921218 286744184   7822967   3.7G 82 Linux swap  swap
/dev/sdc9          0   2097152   2097153     1G  0 SGI volhdr
/dev/sdc11         0 286744184 286744185 136.7G  6 SGI volume

root@SomeLinuxMachine:~# mount /dev/sdc1 -t ext4 /mnt
root@SomeLinuxMachine:~# cd /mnt

root@SomeLinuxMachine:/mnt# ln -s boot/linux linux
root@SomeLinuxMachine:/mnt# ln -s boot/linux vmlinux

root@SomeLinuxMachine:/mnt# cat /mnt/boot/arc.cf
linux {
 image system /linux;
 append "root=/dev/sdc1";
 append "rw";
 append "init=/sbin/init";
 append "console=/dev/ttyS0";

root@SomeLinuxMachine:/mnt# dvhtool -d /dev/sdc --unix-to-vh /mnt/usr/lib/arcload/sash64 sash64
root@SomeLinuxMachine:/mnt# dvhtool -d /dev/sdc --unix-to-vh /mnt/boot/linux linux
root@SomeLinuxMachine:/mnt# dvhtool -d /dev/sdc --unix-to-vh /mnt/boot/arc.cf arc.cf

root@SomeLinuxMachine:/mnt# dvhtool -d /dev/sdc --print-all
----- partitions -----
Part#  0, start 2097153, blks 276824065, type XFS
Part#  1, start 278921218, blks 7822967, type Linux Swap
Part#  8, start 0, blks 2097153, type Volume Header
Part# 10, start 0, blks 286744185, type Volume
----- bootinfo -----
Root partition: 0
Swap partition: 1
Bootfile: "/unix"
----- directory entries -----
Entry #0, name "sash64", start 4, bytes 141392
Entry #1, name "linux", start 281, bytes 11429200
Entry #2, name "arc.cf", start 22604, bytes 130

root@SomeLinuxMachine:~# cd
root@SomeLinuxMachine:~# umount /mnt
root@SomeLinuxMachine:~# sync

Command Monitor.  Type "exit" to return to the menu.

>> setenv SystemPartition xio(0)pci(15)scsi(0)disk(3)rdisk(0)partition(8)
>> setenv OSLoadPartition xio(0)pci(15)scsi(0)disk(3)rdisk(0)partition(8)
>> setenv OSLoadFilename linux
>> setenv OSLoader sash64

>> boot
1216+51120+768+4256+592 entry: 0xa80000005fff0000
ARCLoad version 0.5 (c) 2004-5 Stanislaw Skowronek
Loading configuration for 'linux'...
GRUB Filesystem Error FILE_NOT_FOUND: 'ArcOpen failed'
Loading xio(0)pci(15)scsi(0)disk(3)rdisk(0)partition(8)/linux...
Reading 9488032 bytes... OK.
Entering kernel.

login as: root
Welcome to gentoo/octane 1.0!


Preferred settings for Macs Fan Control on older iMacs that run hot and make funny noises

Yesterday I encountered a customers iMac which ran crazy hot on the backside. Macs Fan Control indicated that the PSU was running on 70°C and more, and something made a buzzing sound (like a wire dangling inside a fan, which was not the case).

So I decided to set up the fans manually, the Mac now runs much cooler and still it's not too loud.

Here's my settings:

Set everything to manual
ODD Fan is controlled by GPU Diode. 40°C – 75°C (this controls the right hand side of the iMac)
The HDD fan is controlled by the HDD temperature. We set it to 45°C – 55°C. If your disk runs hotter, you'll shorten its lifetime and jeopardize your data. This stuff is sitting in the middle of the iMac case.
OK, and this one here is most important. Set the CPU fan to be controlled by the PSU Primary temperature.

I learned that Apple did decide to "cool" the PSU by blowing the CPUs hot air onto it. Duh. So since we need to make sure the PSU does not overheat and melt your display panels LED strips on the right side, we set the CPU fan speed in relation to the PSU temperature. We want the PSU to be 40°C – 53°C. The CPU temperature will also stay in this healthy temperature range.

Download Macs Fan Control on the dev's website, on github, or from my local mirror (v4.1.12).


Fix IcedTea "cannot grant permissions to unsigned JARs" error

In case you are a Linux user unsuccessfully trying to connect to your IPMI/LOM Console using IcedTea / OpenJDK 8 or newer, you will likely run into this error.

You know, because if you're a major hardware vendor selling expensive enterprise class servers, you don't care about your IPMI hardware once you sold it.

Here's how to fix the issue on the client side:

Find the java.security file. In my case it is located in /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/java.security

Then find the row

jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024

Comment it out, copy it, delete the word "MD5".

jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
jdk.jar.disabledAlgorithms=MD2, RSA keySize < 1024

1 Comment

Workaround of the month: Fix broken n32 o32 virtalenv on Gentoo mips when emerging spidermonkey-52.9.1pre1

Virtualenv ist utterly broken when you run Gentoo on MIPS using n32.

This will lead to spidermonkey-52.9.1pre1 failing to emerge, because of "ImportError: No module named pkgutil" or the like. Here's how to fix it:

Step 1: as root, create a user patch directory and download my patch for virtualenv into it, so emerge applies it to the source as soon as you re-emerge the package

mkdir -p /etc/portage/patches/dev-python/virtualenv-16.0.0
wget -O /etc/portage/patches/dev-python/virtualenv-16.0.0/virtualenv-16.0.0-multilib.patch https://rephlex.de/blog/wp-content/uploads/2019/01/virtualenv-16.0.0-multilib.patch.txt

Step 2: and download multiarch.patch into the directory we just created

Step 3: as root, test if the patch executes:

cd /usr/portage/dev-python/virtualenv
ebuild virtualenc-16.0.0.ebuild clean prepare

Step 4: re-emerge dev-lang/python-exec and dev-python/virtualenv

emerge dev-lang/python-exec dev-python/virtualenv

Step 5: Create a necessary symlink

ln -s /usr/lib32/python2.7 /usr/lib/python2.7

You're done!

Leave a Comment

Fix errors when compiling Linux Kernel 4.12 with GCC 8


In file included from arch/mips/kernel/syscall.c:17:
./include/linux/syscalls.h:196:18: Fehler: »sys_mips_mmap« Alias zwischen unverträglichen Funktionstypen »long int(long unsigned int, long unsigned int, long unsigned int, long unsigned int, long unsigned int, off_t)« {alias »long int(long unsigned int, long unsigned int, long unsigned int, long unsigned int, long unsigned int, long int)«} und »long int(long int, long int, long int, long int, long int, long int)« [-Werror=attribute-alias]


echo "KBUILD_CFLAGS += -Wno-error=attribute-alias" >> Makefile

Leave a Comment

Gentoo GNU/Linux on an SGI Octane

UPDATE: gentoo/octane is released. CLICK HERE!


More info will be coming soon. Just come teaser to get you interested 😉

I AM running Linux 4.12 in full 64 bits, gcc 8, a current glibc, and all the modern software. WITH audio. WITH accellerated graphics. And my root volume is on 3x147GB SCSI Software RAID-0 stripeset goodness. And yes, I do have multiple backups. Boom!

rephlex@octane ~ $ uname -a && cat /etc/*release && cat /proc/cpuinfo && df -h && free -m
Linux octane 4.12.0 #2 SMP Fri Dec 14 21:41:04 CET 2018 mips64 R12000 V2.3 FPU V0.0 SGI Octane GNU/Linux
Gentoo Base System release 2.2
system type : SGI Octane
machine : Unknown
processor : 0
cpu model : R12000 V2.3 FPU V0.0
BogoMIPS : 449.02
wait instruction : no
microsecond timers : yes
tlb_entries : 64
extra interrupt vector : no
hardware watchpoint : yes, count: 0, address/irw mask: []
isa : mips1 mips2 mips3 mips4
ASEs implemented :
shadow register sets : 1
kscratch registers : 0
package : 0
core : 0
VCED exceptions : not available
VCEI exceptions : not available

processor : 1
cpu model : R12000 V2.3 FPU V0.0
BogoMIPS : 449.02
wait instruction : no
microsecond timers : yes
tlb_entries : 64
extra interrupt vector : no
hardware watchpoint : yes, count: 0, address/irw mask: []
isa : mips1 mips2 mips3 mips4
ASEs implemented :
shadow register sets : 1
kscratch registers : 0
package : 0
core : 0
VCED exceptions : not available
VCEI exceptions : not available

Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
/dev/root 133G 3,1G 123G 3% /
devtmpfs 10M 0 10M 0% /dev
tmpfs 62M 224K 62M 1% /run
shm 310M 0 310M 0% /dev/shm
/dev/md127 269G 7,9G 247G 4% /home
gesamt benutzt frei gemns. Puffer/Cache verfügbar
Speicher: 619 123 63 0 432 471
Swap: 7999 3 7996

1 Comment