Solution for: Proxmox backup error due to iothread=1

If you see the following error when trying to backup a KVM VM image on Proxmox:

ERROR: Backup of VM 100 failed – disk ‘scsi0’ ‘zfsvols:vm-100-disk-1’ (iothread=on) can’t use backup feature currently. Please set backup=no for this drive at /usr/share/perl5/PVE/VZDump/ line 77. INFO: Backup job finished with errors TASK ERROR: job errors

edit /etc/pve/qemu-server/100.conf, look for a line similar to

scsi0: zfsvols:vm-100-disk-1,iothread=1,size=70G

and change it to

scsi0: zfsvols:vm-100-disk-1,iothread=0,size=70G

Afterwards, it’s possible to backup the VM.

How to check filesystems in a qcow2 image

A useful post how to fsck (check and fix) a filesystem in a qcow2 image (as typically used for KVM VMs, e.g. in Proxmox):

How to recover a qcow2 file using fsck

On Proxmox or Debian, one does the following:


  • Make sure the according VM isn’t running, i.e. the partition not mounted
  • Adjust the commands below to match your system, use the correct qcow2 image, use the correct fsck-variant, fsck the correct filesystem, note that -p tries to automatically fix errors!
# modprobe nbd max_part=8
# qemu-nbd --connect=/dev/nbd0 /var/lib/vz/images/100/vm-100-disk-1.qcow2
# fdisk -l /dev/ndb0
/dev/nbd0p1            2048     7813119     3905536   82  Linux swap / Solaris
/dev/nbd0p2   *     7813120   119537663    55862272   83  Linux
# fsck.ext4 /dev/nbd0p2
# fsck.ext4 -p /dev/nbd0p2
# qemu-nbd --disconnect /dev/nbd0

Like this, one doesn’t need to boot the VM using a boot ISO/CDROM and can fix the filesystem right from the host node.


How to repair a Logitech Laser Mouse G9x/G9 with a shorted cable

Recently, my beloved Logitech Laser Mouse G9x showed signs of a broken, i.e. shorted cable. This is a well-known problem with these mice – I had a Laser Mouse G9 before and it suffered from the same problem, and the forums are full of similar reports. It’s also well-known however, that the G9/G9x is one of the best and most wanted fingertip grip mice apart from its cabling weakness (and if you use a mouse for 14+ hours daily or if you’re a pro gamer, you won’t ever want to use any other grip (video)).

Unfortunately, Logitech doesn’t produce the G9/G9x model anymore – though they probably could have easily fixed this weakness in the next revision and even improved some other aspects, like reducing the mouse’s weight. One thus has to find a dealer that still has some G9/G9x mice on stock (and accept a high “connoisseur’s” price, these mice usually sell for around 250 USD – mind fakes!) or go with a not quite equivalent, but similar Alienware TactX mouse (which is based on the G9/G9x and produced by Logitech). Alternatively, one can try soldering and fixing the shorted cable or order a spare cable from China, which are both better options than throwing away an otherwise still working mouse.

I decided to order a replacement cable including mouse feet at LittleWStore through Aliexpress for roughly 15 USD including shipping (it arrived within 2 weeks, earlier than the 4 to 5 weeks I expected to wait).

Unsurprisingly, there’s already a nice and informative YouTube video showing how to disassemble a Logitech Laser Mouse G9x, replace the cable and even how to repair a shorted cable (thanks to MrLiquidArrogance for the video – otherwise, I would have had to upload a video myself):

This allows me to only emphasize those points that deserve special attention:

  • Be aware that this repair requires advanced manual skill due to the somewhat unfortunate cabling inside the mouse and the not very maintenance-friendly attachment of the flex flat cable.
  • I’d strongly recommend ordering new replacement mouse feet as it’s almost impossible to remove the feet without tearing them, particularly if you’ve used the mouse for some years already. To remove the remaining glue, I used ethanol, but something hydrophobic (e.g. straight-run gasoline) might actually work better [Warning: Disconnect your mouse before doing this!].
  • I used my Victorinox CyberTool 34’s (video) phillips screwdrivers and it worked fine, but if you have thinner screwdrivers at hand, use those, as some of the smaller screws are a bit difficult to reach.
  • The most tricky thing to reassemble, in my view, is the mouse cable inside the mouse, which is laid out and bent in quite an odd (and scary) way. It’s also the reason why most of the G9x/G9 suffer from a shorted cable sooner or later. You have to bend and route the bundled wires in a way that they neither cover the hole for the screw in the bottom shell, nor the according plastic nut in the upper shell. This puts a lot of stress on the inner mouse cable and requires quite some manual force.
  • Other not so easy things:
    • Detaching the flex flat cable/ribbon (for the LEDs in the upper shell) without popping off the little latch (using a flathead screwdriver works though)
    • Putting the rubber grommet in place again (you need to apply quite some force and the grommet doesn’t really fit very well anyway)

For now, I’ve just quickly replaced the whole cable with a new one, but I will try fixing the old, damaged cable with my new Ersa i-CON1 digital solder station when I find time for it.

What I particularly like about the Logitech Laser Mouse G9x:

  • Its perfect geometry for finger tip grip users
  • Good quality of plastics, springs, buttons, wheel, laser sensor
  • Moderate weight (extra weights removed) as compared to the Mad Catz R.A.T. 7 (extra weights removed) – it’s still quite heavy though compared to other mice, this could be improved (if you intend to lift your mouse often, this is the wrong mouse)
  • Removable shells
  • “Hyper-fast scrolling” (this almost seems like a USP of Logitech – I like this feature a lot!)
  • Good, stable drivers
  • Has well-placed back and forward buttons with clearly defined clicking points
  • It’s a wired mouse, there’s thus no need to replace batteries, no risk of running out of battery in the worst possible moment, no added weight, no lag.

Alternatives might be:

Mad Catz R.A.T. 7:

– heavier

– no hyper-fast scrolling (I really miss that)

– less ergonomic forward and backward buttons

– terrible, totally unusable Mad Catz drivers (works well on Mac OS X though using the SteerMouse driver version 4.2.3 and newer – I tested a beta version of it – thanks, Yoshi!)

+ super customizable and adjustable geometry

+ handy precision-aim button (can also be programmed to show Mission Control or the desktop, for example)

+ handy horizontal thumb scroll wheel

Mad Catz R.A.T. 5:

If you can do with fewer or without customization options, the R.A.T. 5 or 3 will likely suit your needs as a fingertip grip user more as they’re lighter and smaller.

If you don’t care about (supposedly) durable, high-quality material, some of the other Mad Catz mice might be good alternatives too (e.g. the hard-plastic mice are generally lighter than those incorporating steel and/or aluminium)

Mad Catz R.A.T. Prox

This pro gamer mouse looks very exciting and promising for fingertip grip users – it looks like the perfect mouse to have, also for non-gamers with that grip. I really hope Mad Catz will dramatically improve their drivers though, as terribly bad drivers is currently their biggest weakness.

Microsoft IntelliMouse Explorer 3.0

Many people, particularly gamers, still like this mouse a lot, despite its age. It has a nice geometry and is light-weight (best for palm grips, but suitable for fingertip grip users with big hands too). I once had and used this mouse too (also its predecessor) and liked it a lot. The sensor is quite outdated (but liked by some gamers for its 400 dpi resolution) and used to prematurely die from one day to another. Nonetheless it was the last good mouse produced under the Microsoft brand.

Luckily, you can still find the Microsoft IntelliMouse Explorer 3.0 on Amazon.

[Edit 20150201: Fixed some typos, clarified some things, added a warning]

Homebrew package for t-prot: TOFU protection for e-mail

In a current LUGS mailing list thread, mowgli pointed to the t-prot script as a nice tool to “fix” the so-called (and very common) TOFU style message quoting and some other annoyances (like commercial webmail provider signatures, overly excited !!!! statements, etc.) in e-mail messages. t-prot was originally developed for mutt, but can also be used with other mail clients.

As there wasn’t any t-prot package for my favourite Mac OS X package manager Homebrew yet (apparently only for MacPorts), I quickly created one myself [Edited on Feb 24, 2015: Updated for t-prot version 3.3]:

  1. Create the file /usr/local/Library/Formula/t-prot.rb and add the following (fantastically trivial) content:
    require "formula"
    class TProt < Formula
      homepage ""
      url ""
      sha1 "9be24629abc598b24e887f47e9a62feddc3ed4ad"
      def install
        bin.install 't-prot'
        man1.install 't-prot.1'
  2. Install t-prot (run the following Homebrew command in a terminal window):
    brew install t-prot
  3. Add the following line to your .muttrc (or check ‘man t-prot’ or the t-prot web page for options and examples):
    set display_filter="t-prot -cemt -M=mutt"

HP 48G: How to fix the “Warning: Invalid Card Data” problem

Recently, my good old HP 48G calculator (one of the best calculators ever built and my longtime personal favourite till today) started displaying the following message whenever I switched it on:

Warning: Invalid Card Data

Which seems a bit odd at first, considering the 48G model has no card slot (only the 48GX model has one). Luckily, there’s a simple solution: Execute the PINIT command by typing “PINIT” (without the double quotes) and pressing the ENTER key.

There’s a great, detailed explanation of this problem and the according fix in the “invalid card data at my hp48g” thread over at the independent HP calculator museum. If this warning message appears on a HP 48GX and the problem persists after applying this fix, take a look at step 3 described in the  article titled “Message, Invalid Card Data, is Displayed when the Calculator is Turned On” on HP’s support forum.

Wouldn’t it be a pity if a company with such a great history and so many great hardware products ceased to be a hardware company?

Gentoo: Mailman 2.1.11 incompatibility with Python 2.6

Mailman 2.1.11 (or earlier) isn’t compatible to Python 2.6. So if you upgrade your box to Python 2.6 without upgrading to Mailman 2.1.12 at the same time, you’ll run into troubles. And if you’re unlucky (e.g. when running some low-volume mailing lists), you might not even notice it.

One sign of such troubles is that messages sent to your Mailman mailing lists aren’t processed anymore. They simply seem to get “swallowed” by your Mailman server: Messages don’t reach the list, don’t get forwarded to subscribers and there’s no bounce or failure notice. For low-traffic lists, this might go unnoticed for several days or even weeks.

Another sign (that can easily slip through under certain, quite common circumstances) is that as long as you’re running Mailman 2.1.11 with Python 2.6, cron will, every 5 minutes,  send an error message to with a subject similar to

Cron <mailman@myhost> /usr/bin/python -S /usr/lib64/mailman/cron/gate_news

and a content like

/usr/lib64/mailman/Mailman/ DeprecationWarning: the sha module is deprecated; use the hashlib module instead
import sha
Traceback (most recent call last):
File “/usr/lib64/mailman/cron/gate_news”, line 44, in <module>
from Mailman import MailList
File “/usr/lib64/mailman/Mailman/”, line 51, in <module>
from Mailman.Archiver import Archiver
File “/usr/lib64/mailman/Mailman/Archiver/”, line 17, in <module>
from Archiver import *
File “/usr/lib64/mailman/Mailman/Archiver/”, line 32, in <module>
from Mailman import Mailbox
File “/usr/lib64/mailman/Mailman/”, line 21, in <module>
import mailbox
File “/usr/lib64/python2.6/”, line 19, in <module>
import email.message
ImportError: No module named message

That by itself wouldn’t be a big problem and probably get noticed quickly if you forwarded to your admin’s e-mail address. The problem arises if you happen to host a mailing list named “mailman” (which is often set up as a mailing list for testing and debugging). In that (not uncommon) case, all these cron error messages are forwarded to the “mailman” mailing list.  This makes about 288 messages per day that are queued in /var/lib/mailman/qfiles/in and won’t be delivered (due to the compatibility problem with Python 2.6).

Once you upgrade to Mailman 2.1.12 (and restart /etc/init.d/mailman), all these messages in /var/lib/mailman/qfiles/in will be queued by your MTA (e.g. postfix). This may seem like a strange loop problem in Mailman (or your MTA configuration), which is quite irritating at first.

Here’s how to solve the problem (you may need to adjust these steps to your settings/system paths):

1) Temporarily stop the Mailman service

/etc/init.d/mailman stop

2) Delete all the queued messages to/for in your MTA’s mail queue. For postfix as MTA, the following script may be helpful: mailq by Dan Mick.

3) Delete all the cron-generated error messages in /var/lib/mailman/qfiles/in.

In order to determine these error messages, use Mailman’s show_qfiles command to view the message content, e.g.

/usr/lib64/mailman/bin/show_qfiles /var/lib/mailman/qfiles/in/longnumber.longnumber.pck

The best way to identify these messages is by filtering them according to their file size. Usually they have sizes around 1600 bytes. E.g. for a file size of 1635 bytes, try sth similar to:

cd /var/lib/mailman/qfiles/in

find ./ -size 1635c -exec rm {} \;

4) Once you’ve deleted all these cron error messages in Mailman’s in-queue, you can restart Mailman (/etc/init.d/mailman start). Mailman will then start delivering the remaining valid files in its in-queue. Your MTA/postfix queue looks normal again (i.e. there’s no more overflowing)!

5) Finally, you need to manually “discard all messages marked Defer” for the ‘mailman’ mailing list using the web admin interface (usually on or similar). Before discarding these messages, make sure you don’t discard any valid messages.

That’s it!

Thanks to Mark Sapiro AKA msapiro from #mailman @ for very useful hints and help!

P.S. Some other helpful resources in case of Mailman problems:

How to find running Mailman instances (qrunners)

How to integrate postfix and Mailman

Gentoo: How to fix a broken Python installation

If your Python environment seems to be buggy or broken after a recent Python upgrade, it probably is. To fix it, simply execute the following command on your Gentoo box:

# python-updater -v

(note that this process takes quite some time to complete)

Additionally, you might want to make Gentoo check the dependency tree and rebuild broken packages (related to Python or other packages):

# revdep-rebuild

P.S. This is more or less a repost of an earlier post about python-updater.

Why did the line spacing change in Word 2007?

Did you ever wonder why Microsoft changed the line spacing in Word 2007? Well, here’s the answer:

Why did the line spacing change in Word?

And the “fix” is here:

Make my document look like a Word 2003 document

Some general information about how to adjust the line spacing and paragraph settings in Word 2007:

Adjust the spaces between lines or paragraphs

Personally, I like the new GUI approach in Office 2007 and its improved usability, but the new styles (with this very unusual line spacing) kind of overshoot the mark.