Brother QL-810W on Ubuntu 18.04


Although Brother states that Linux is supported for the QL-810W and they even provide a driver package, installing and using the Brother QL-810W on Ubuntu (and probably other modern Linux OSes) can be a little tricky.

First, download the Debian package and install it from the command line with

sudo dpkg -i --force-all ql810wpdrv-<version>.i386.deb

That adds the QL810W printer as a local USB printer. If you would like to print via network, open the Advanced Printer Settings and change and adjust the Device URI in the printer’s properties.

While you are in that properties dialog, go to Printer Options and select the correct Media Size (This is the most important setting of all!).If you want to make sure that the borders of your labels remain as defined in your application, set Trim tape under Cut Option to Off.

Network Protocols

Since I am not fan of black magic like Zeroconf, Avahi, mDNS, I have only kept

  • Web Based Management (Web Server)
  • IPP
  • SNTP

enabled on the Network > Protocol page in the printer’s web management tool.

Label Sizes

For some reason, the “length” of a label cannot exceed 10cm on Linux although continuous labels are used and correctly selected in the printer properties. If you would like to print out larger labels, you need to add custom label sizes with the corresponding tool that comes with the driver package:

sudo brpapertoollpr_ql810w -P QL810W -n "62mmx190mm" -w 62 -h 190
sudo brpapertoollpr_ql810w -P QL810W -n "38mmx190mm" -w 38 -h 190

I used the above two for creating labels for Leitz folders with OpenOffice Draw.


In Brother’s FAQ there is an entry regarding AppArmor and setting the mode to complain for the CUPS service if printing does not work. In my case printing works flawlessly if the setting remains in enforce mode. So for security reasons, I would not recommend to change it to complain.

SSH Agent on WSFL


To automatically spawn an ssh-agent when starting the first Bash instance, and otherwise re-register a running ssh-agent in the Windows Subsystem for Linux, append the following lines to your .bashrc. Kudos to Mathew Johnson!

# wsfl bash is not a login shell
if [ -d "$HOME/bin" ] ; then
# ssh-agent configuration
if [ -z "$(pgrep ssh-agent)" ]; then 
  rm -rf /tmp/ssh-*
  eval $(ssh-agent -s) > /dev/null
  export SSH_AGENT_PID=$(pgrep ssh-agent)
  export SSH_AUTH_SOCK=$(find /tmp/ssh-* -name agent.*)
if [ "$(ssh-add -l)" == "The agent has no identities." ]; then


Running a limited number of scripts in parallel from Bash


Imagine you have a text file with a single parameter for another script on each line, but you want to speed things up. Instead of writing an overly complicated wrapper script, as I did a few times in the past, you could just use xargs. It comes equipped with everything needed for this task. The following example assumes, that for each parameter in parameters.txt the command should be executed, with no more than 20 processes at the same time:

cat parameters.txt | xargs -n 1 -P 20

I guess it’s not hard to figure out that -P is the magic switch to allow multiple instances to be executed at the same time.


Migrating from KVM to LXC


After I had to replace the mainboard of my HTPC, on which also two other virtual machines were running on KVM, the kvm_amd module crashed on every boot on the replacement hardware. Though KVM still worked, I don’t like to see any modules crashing on boot. I began asking myself whether I really need full KVM virtualization or if some kind of container based virtualization would do a good or even better job for me.

After reading into the pros and cons of different solutions, I concluded that LinuX Containers (LXC) should probably first choice for me. As the HTPC is running on Ubuntu 12.04, which also has Apparmor profiles that enhance the security of LXC’s weak security concept, I actually decided to continue with LXC.

I don’t want to explain how to install LXC, because this is already covered by many other sites. The only thing that I found which is not covered well enough, is the conversion of machines from KVM (or similar) to LXC. In my case the KVM guests where using RAW disk images, so I am exclusively focusing on converting such below.

Step 1 – Prepare the rootfs folder

First, the new target folder for the root file system of the LXC guest must be created.

mkdir -p /var/lib/lxc//rootfs

Step 2 – Mount the RAW image

Then the RAW disk image must be mounted to access the files. In my case the disk contained only one partition. Modify the mount command may be necessary.

kpartx -a
mount /dev/mapper/loop0p1 /mnt

Step 3 – Copy files to rootfs

Now that the content of the RAW image can be accessed, the files can be copied into the new rootfs folder created in step 1. I have been using the below command for years, to create more or less exact copies:

cd /mnt
find . -xdev | cpio -pmv /var/lib/lxc//rootfs

Step 4 – Modify the configuration

Now comes the trickiest part: The configuration of the new machine must be modified, otherwise it is unlikely that it will boot successfully. Most required changes can be extracted from the template files in /usr/lib/lxc/templates/, which are typically used for the creation of new machines. Below are the modification for Debian machines, which worked perfectly well for Debian Lenny (shame in me) and Squeeze.


cat < $rootfs/etc/inittab
l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
# Normally not reached, but fallthrough in case of emergency.
1:2345:respawn:/sbin/getty 38400 console
c1:12345:respawn:/sbin/getty 38400 tty1 linux
c2:12345:respawn:/sbin/getty 38400 tty2 linux
c3:12345:respawn:/sbin/getty 38400 tty3 linux
c4:12345:respawn:/sbin/getty 38400 tty4 linux

mkdir -p $rootfs/selinux
echo 0 > $rootfs/selinux/enforce

mknod $rootfs/dev/tty1 c 4 1
mknod $rootfs/dev/tty2 c 4 2
mknod $rootfs/dev/tty3 c 4 3
mknod $rootfs/dev/tty4 c 4 4

# reconfigure some services

locale="$LANG $(echo $LANG | cut -d. -f2)"
chroot $rootfs echo "locales locales/default_environment_locale select $LANG" | chroot $rootfs sh -c "LANG=C debconf-set-selections"
chroot $rootfs echo "locales locales/default_environment_locale seen true" | chroot $rootfs sh -c "LANG=C debconf-set-selections"
chroot $rootfs echo "locales locales/locales_to_be_generated seen true" | chroot $rootfs sh -c "LANG=C debconf-set-selections"
chroot $rootfs sed -i -e "0,/^[# ]*$locale *$/ s/^[# ]*$locale *$/$locale/" /etc/locale.gen
chroot $rootfs sh -c "LANG=C dpkg-reconfigure locales -f noninteractive"

# remove pointless services in a container
chroot $rootfs /usr/sbin/update-rc.d -f remove # S
chroot $rootfs /usr/sbin/update-rc.d stop 09 S .

chroot $rootfs /usr/sbin/update-rc.d -f umountfs remove # 0 6
chroot $rootfs /usr/sbin/update-rc.d umountfs start 09 0 6 .

chroot $rootfs /usr/sbin/update-rc.d -f umountroot remove # 0 6
chroot $rootfs /usr/sbin/update-rc.d umountroot start 10 0 6 .

# The following initscripts don't provide an empty start or stop block.
# To prevent them being enabled on upgrades, we leave a start link on
# runlevel 3.
chroot $rootfs /usr/sbin/update-rc.d -f remove # S 0 6
chroot $rootfs /usr/sbin/update-rc.d start 10 3 .

chroot $rootfs /usr/sbin/update-rc.d -f remove # S
chroot $rootfs /usr/sbin/update-rc.d hwclockfirst start 08 3 .

chroot $rootfs /usr/sbin/update-rc.d -f module-init-tools remove # S
chroot $rootfs /usr/sbin/update-rc.d module-init-tools start 10 3 .

rm $rootfs/etc/udev/rules.d/70-persistent-net.rules

Step 5 – Create LXC config

Finally we have to create a LXC configuration file for the new machine. Lazy as I am, I have copied an existing config file into /var/lib/lxc// and modified the paths and network configuration accordingly.

After that the machine can be started with

lxc-start -n

Keep in mind that you won’t be able to detach from that console again. But to debug boot problems it is essential to not launch the machine in background mode (-d).

Open Rhein Ruhr 2013


Wieder ist ein spannendes Open Rhein Ruhr Wochenende vorueber. Fuer mich war es diesmal etwas Besonderes, da ich nicht als Helfer sondern als Orga dabei und auf der Veranstaltung fuer das Netzwerk verantwortlich war. Ausser zwei nicht so ganz sauberen DSL-Leitungen gab es jedoch keine groesseren Probleme, weshalb mir genug Zeit blieb mich unter die Besucher zu mischen und interessante Gespraeche an den Staenden zu fuehren.

ORR Social Event

Auch das Social Event war wie in der Vergangenheit eine tolle Sache, nicht zuletzt wegen der Location.

Was mich aber wirklich jedesmal auf solchen Linux und Open Source Events begeistert, ist der Umgang miteinander. Es fuehlt sich eigentlich immer so an, ob als ob es kein oben oder unten gibt, kein gut oder schlecht gibt und jeder ist in irgendeiner Weise Anbieter und Konsument zugleich. Alle packen mit an wo Haende gebraucht werden. Ich hoffe, dass mich mein Eindruck nicht taeuscht und dass all diese Menschen im Alltag genau so einen offenen Umgang miteinander pflegen.

Mein besonderer Dank gilt natuerlich allen Helfern und vor allem den Freifunkern, welche durch Bereitstellen von weiterer Hardware sowohl das ORR eigene WLAN verbessert haben, als auch zusaetzlich noch Ihr eigenes Freifunk Mesh bereitgestellt haben.

Bis zum naechsten Jahr,wenn es wieder heisst: “Ein Pott voll Software”.

NRPE on Centos or RHEL6


If you are running NRPE on Centos or RHEL 6 and wonder why check commands that are prepended with a sudo command always fail: remove the “requiretty” option from your /etc/sudoers and everything will work fine again. It’s a shame that it takes strace to get the initial error message our of nrpe-server.

FrOSCon Day 1 – A quick summary


For the seventh time ever the FrOSCon opened its doors this morning. It is my third visit now and it is really great to see that this event seems to become more and more international. Lots of lectures are given in English and in the hallway it seems to be the preferred language this weekend. So it wasn’t surprising that lunch became a meet and greet with Selena who is going to give the keynote tomorrow and who only travelled from Portland just for this event. Looks like my Tuxevara t-shirt seems to be useful if you want others to start a conversation with you 😉

All lectures I visited were pretty good and on an intermediate level of required knowledge. I am expecting that all other I will listen to today will be on the same level. So my resume so far is, that’s it was once again really worth coming here.

Now I’m looking forward to the social event tonight and of cause tomorrow.

Heise Open: “LiMux: Billiger und robuster als Windows”


Wie Heise Open heute in seinem Artikel schreibt, hat Oberbürgermeister Ude in München, festgestellt, dass es nach derzeitigem Verlauf des Projekts darauf hinaus läuft, dass die Kosten vom Linux-Einsatz dauerhaft geringer sind als Windows und auch noch deutlich robustere Systeme hervorbringt.

Selbst mich als Linux-Anhänger überrascht diese Aussage eines Amtsträgers doch sehr. Hoffen wir mal, dass es so weiter geht mit LiMux und es nicht im gleichen Debakel endet wir im Auswärtigen Amt.

Das waren die Chemnitzer Linux Tage 2012


Und schon wieder ist ein Wochenende Chemnitzer Linux Tage vorüber und wir sind auf dem Rückweg. Zeit ein kleines Resume zu verfassen.

Die Organisation des gesamten Events ist wie immer perfekt gewesen. Viele fleißige und freundliche Helfer an allen Orten, gute Beschilderung und übersichtliche Infoscreens. Das Vortragsprogramm war wie immer bunt gemischt und so war für jeden was dabei. Leider hat sich auch mal wieder gezeigt, dass im Programm sehr interessant klingende Vorträge auch schon mal eher weniger spannend sind und hinter denn Erwartungen zurück blieben. Wer allerdings immer in allen Belangen – inhaltlich wie unterhaltsam – klasse Vorträge abliefern sind Peer Heinlein und Martin Loschwitz. Der Vortrag zu Strace war auch recht interessant und hat einem noch ein paar mehr Hintergründe zu diesem alltäglichen Helferlein vermittelt. Allerdings hätten eine Stunde auch gereicht. Leider ein wenig ohne roten Faden war der Django Vortrag. Das war wie mit Dartpfeile auf die vier Tutorials geschossen.

Das Social Event am Samstag Abend war in allen Belangen zwiespältig. Zum einen waren die Besucher auf zwei Räume verteilt, zum anderen war vor allem im Diskoraum die Musik nur zur Hälfte erträglich, was man auch daran festmachen konnte, dass die Tanzfläche nur bei einem DJ Beachtung gefunden hat. Im Nebenraum gab es die Möglichkeit auf der Retro-Party alte Konsolen und PC spiele noch einmal zu erleben. Kindheitserinnerungen wurden da sicher bei den Allermeisten noch einmal geweckt.

Auf jeden Fall steht fest, dass wir (Turrican, Killefiz, Rudi und ich) auch nächstes Jahr wieder dabei sein werden.

Looking for a perfect Linux desktop system?


I think I just found it: Installed Ubuntu 10.04 on an Acer Aspire X3910 PT.SEDE2.240 and must say that I am really suprised how well it works. Everything was detected automatically. The whole machine has a very small form factor and is very silent but on the other hand very powerful with its dual-core Intel E6700 CPU. Unfortunately it is not mine 😉