not so recent news

[2016-06-26] now can not only send email when a log entry matches a (positive) pattern, but will ignore the entry when it matches a (negative) pattern. E.g. if your /usr/local/etc/syswatch.conf looks like this one:

!ERROR debug
!ERROR test

Then will send an email for each log entry that contains the word ERROR, but only if it's not followed by either debug or test, and for each log entry that contains the word faulty.

[2016-05-29] Redundant ethernet bridge with FreeBSD and tinc



[2016-03-30] Adding custom MIBs to SNMP

[2016-03-21] Huawei E392 USB LTE modem on FreeBSD

[2016-01-30] s3blkdev 0.6 comes with an HTML frontend based on Node.js. Here's a screenshot.

[2016-01-17] freebsd-update with a custom kernel




[2015-10-24] Version 0.2 of s3blkdev:

[2015-10-03] s3blkdev is a gateway between S3 compatible storages and Linux network block devices (NBD)



[2015-06-22] Advanced TCP Bandwidth Calculator shows why a single TCP connection almost never saturates a data link

[2015-06-21] adpasswd.php shows how to change your active directory password with PHP

[2015-06-07] OpenVPN routing with BIRD on FreeBSD

[2015-06-04] mksnapback creates and deletes filesystem snapshots on FreeBSD during system boot and shutdown

[2015-05-25] minicom.scpt launches minicom (or any other console program) like a normal Mac OS X application





[2015-04-06] A few things I came across while setting up sslh in transparent mode on FreeBSD


[2014-12-24] Bandnudel V0.3 fixes a tiny bug (minutes vs. seconds) and is a small code cleanup

[2014-12-21] How to create a bootable USB flash drive to install VMware ESXi 5.5 from

[2014-12-09] Both AugTV and graypold 0.6 fix signal handling issues, plus graypold 0.6 fixes two MySQL related issues

[2014-12-07] graypold 0.5 is an almost complete rewrite of my graylisting daemon. There's no blackwhite list anymore as one can easily achieve that functionality with Postfix lookup tables. Mail sent by SASL authenticated users now can open the graylisting for mails sent in the opposite direction. Thus, when an authenticated user sends an email, the reply will be delivered immediately. And by using different local unix sockets, a Postfix admin can now decide whether (s)he wants only graylisting, mail counting, SASL graylisting bypassing, or any combination of those there functions.

[2014-12-06] AugTV no longer comes with a cgi script and thus does not depend on a webserver and any sudo rules for osascript. Instead, I wrote a nice helper app called which contains a small webserver written in Perl and the reminders of the old cgi script.

[2014-11-27] Looking for VMware tools for FreeBSD 10.1? Grab the ones which come bundled with ESXi 5.5U2!

[2014-11-22] Is Firefox moaning Getting printer information failed when you try to print to a network printer? Make sure that you have the correct PPD file in /etc/cups/ppd and that it has the same name as your local printer queue.

[2014-09-12] Let FreeBSD's inetd listen on a Unix socket


[2014-08-10] You might want to use or in order to start Ubuntu 14.04 server or CentOS 7 virtual machines, respectively, on a recent FreeBSD with bhyve installed.


[2014-07-20] openvpn.ovpn is an OpenVPN connection profile template and may be of help if you run OpenVPN on your mobile phone or tablet

[2014-07-12] ftp6proxy is an IPv6 (and IPv4) ftp proxy for FreeBSD based firewalls. In contrast to ftp-proxy and libalias/natd/ppp, it doesn't support NAT or rewrite packets. It just temporarily opens the firewall to pass through the data channel.

[2014-07-02] Released version 0.2 of tcpoptd which you can use to modify tcp header options. It now supports IPv6.

[2014-06-28] How to delete an ipfw rule on FreeBSD using Perl, e.g. firewall rule #2342:

use Socket qw(:all);

my $IP_FW_DEL = 51;
my $rule_num = 2342;

socket(my $ipfw_sock, AF_INET, SOCK_RAW, IPPROTO_RAW) or die $!;
setsockopt($ipfw_sock, IPPROTO_IP, $IP_FW_DEL, $rule_num) or die $!;

[2014-05-31] TightVNC moans "Rect too large"? Replace it by TigerVNC and launch vncviewer with parameter "-AutoSelect=0"!

[2014-05-29] How to update OTRS on FreeBSD


[2014-04-29] NanoBSD for Raspberry PI

[2014-03-24] How I unbricked my WRT610N with OpenWRT

[2014-02-19] If you use GD with Perl, but getting an error like libgd 2.0.33 or higher required for copyRotated support, then apply patch-Makefile.PL to Makefile.PL and recompile GD. See also my post on the freebsd-perl mailing list.

[2014-02-15] VMware Tools on FreeBSD 10

[2014-02-09] You might want to use in order to start Gentoo Linux virtual machines on a recent FreeBSD with bhyve installed. This is a slightly modified version of the shell script normally found in /usr/share/examples/bhyve. See also this related post.

[2014-01-19] Added a wlan card and two antennas to my NanoBSD router, uploaded some pictures and new config files

[2014-01-12] kvmlib is a shell script I use to start and stop KVM based virtual machines

[2014-01-02] If avahi-daemon sporadically exits with an error like "poll(): Invalid argument", then put patch-avahi-common_simple-watch.c into /usr/ports/net/avahi-app/files on your FreeBSD box and reinstall avahi. See also

[2013-12-22] Building a FreeBSD backup server for Time Machine and Linux boxes

[2013-12-14] Printing on Gentoo is a short howto that features all the good stuff: avahi, dbus, cups, and a Mac :-)



[2013-12-02] graypold 0.4 writes a syslog entry for every mail so that Fail2ban can ban an IP address for sending too many mails

[2013-11-27] released version 0.3 of my graylisting daemon graypold which now can count mails and recipients

[2013-11-09] Updated How to install FreeBSD on a Raspberry Pi (bcm2835-rpi-b.dts and thus bcm2835-rpi-b.dtb were renamed to rpi.dts and rpi.dtb, respectively, added DB_FROM_SRC=1 to make distribution; thanks Derek!)

[2013-11-03] How to resize an UFS2 filesystem on FreeBSD

[2013-11-01] How to update a FreeBSD system (see also)

[2013-10-26] NanoBSD: config files and description of my DSL router

[2013-10-23] Slave root zone and forward zones with Bind might not work as expected

[2013-10-19] How to solve missing icons and symbols on Mac OS X

[2013-10-14] AugTV fixes a small bug and exports playlists (*.m3u) for all your movies and music


[2013-10-03] Uploaded some additional pictures

[2013-09-23] proxies a vnc connection to the console of virtual machine running on a VMware ESXi 5.x host

[2013-08-24] How to create a key and a self-signed certificate in one step without being prompted for any questions using OpenSSL, e.g. for a host called host.domain.tld:

openssl req -new -x509 -batch -days 3650 -newkey rsa:2048 -nodes -subj /CN=host.domain.tld -keyout host.domain.tld.key.pem -out host.domain.tld.cer.pem

[2013-08-13] Python with mod_wsgi


[2013-06-29] Set up two special purpose virtual hosts:

[2013-05-31] Updated my FreeBSD WAN simulator howto

[2013-05-19] How to setup Tagged VLANs on Mac OS X


[2013-05-08] On FreeBSD, the man page of ipfw isn't very specific about the syntax of a dummynet pipe when it comes to the mask and src-ip/src-ip6/dst-ip/dst-ip6 parameters. As long as you stick to IPv4, you have two equivalent options:

pipe 1 config mask src-ip 0xffffff00 bw 23KBit/s ...


pipe 1 config mask src-ip /24 bw 23KBit/s ...

If you're limiting IPv6 traffic, you should use the latter variant only:

pipe 2 config mask dst-ip6 /64 bw 42KBit/s ...

Internally, the variable which holds the value of src-ip/src-ip6/dst-ip/dst-ip6 is an unsigned 32 bits integer, which overflows and yields an error if given anything larger than 0xffffffff.

[2013-05-05] Added PostgreSQL to my FreeBSD package repository for Raspberry Pi

[2013-04-27] How to build a simple FreeBSD WAN simulator

[2013-04-06] tcpoptd modifies TCP header options

[2013-04-01] Seems as if VMware Fusion (when network is set to NAT/PAT mode aka "Share with my Mac") completely rewrites the TCP header. At least TCP header options and source port always get re-arranged and overwritten, while unknown header options are removed.

[2013-03-24] mdnsproxy forwards multicast DNS requests to unicast DNS servers

[2013-02-28] How to build a BGP looking glass with OpenBSD

[2013-02-04] Uploaded some FreeBSD packages for a Raspberry Pi which I compiled from a fresh ports' checkout on FreeBSD 10.0-CURRENT

[2013-02-01] Updated How to install FreeBSD on a Raspberry Pi once again (enabled procfs, vlan, and ipfw)

[2013-01-31] Updated How to install FreeBSD on a Raspberry Pi (enabled devd in /etc/rc.conf, corrected pathes in steps 26 and 27, added /etc/localtime)

[2013-01-27] pomavold 0.4 let you specify a timeout it waits for before accessing devices.

[2013-01-25] How to install FreeBSD on a Raspberry Pi

[2013-01-06] How to netboot and install NetBSD/sparc, a spin-off of a short discussion on G+

[2012-12-19] How to build NVidia drivers 304.64 for Linux 3.7.x on a 64-bit Gentoo box:

  1. mkdir -p /etc/portage/patches/x11-drivers/nvidia-drivers-304.64
  2. download
  3. rename patch_nvidia_304_60.run_for_3.7 to patch_nvidia_304_60.run_for_3.7.patch
  4. move patch_nvidia_304_60.run_for_3.7.patch into /etc/portage/patches/x11-drivers/nvidia-drivers-304.64
  5. emerge nvidia-drivers

[2012-12-18] David Doll found a typo in my VMware Tools on FreeBSD 9 howto


[2012-10-29] What a productive weekend - publicating all the stuff that has piled up over the past few weeks: clucp is a copy tool for Corosync clusters


[2012-10-27] howto build Percona on FreeBSD

[2012-10-24] pomavold 0.3 doesn't dim the light if you just mute the left (=mono) channel

[2012-10-20] pomavold 0.2 doesn't die if a mixer hasn't a mute button and takes into account that light intensity of a PowerMate isn't linear

[2012-10-08] fproxy 0.6 doesn't die if

[2012-09-05] Updated Block allocation strategies of various filesystems as I did some tests on NTFS, too.

[2012-09-04] Block allocation strategies of various filesystems


[2012-09-01] Fun with sparse files

[2012-08-13] pomavold lets you control the volume of your soundcard with a Griffin PowerMate

[2012-08-05] VMware Tools on FreeBSD 9 (updated the howto, not the patches)


[2012-06-26] fproxy 0.5: new commandline option -d, 2-clause BSD license applied

[2012-05-20] VMware Tools on FreeBSD 9

[2012-05-11] How to read the Windows eventlog (warning, source code included)

[2012-02-19] Updated finitrd, my ramdisk for Linux systems that have their root partition inside an LVM volume. The ramdisk uses ext4 by default now.

[2012-02-18] Updated after 4 years: graypold (part of my Postfix policy daemons) is now IPv6 ready. Added an improved rc script for FreeBSD, too.

[2012-01-15] fproxy 0.41 - just a code cleanup

[2011-12-28] Simple DVD authoring on Linux

[2011-11-29] Removed and its 6to4 address. Published a real IPv6 address for and


[2011-08-14] el-cheapo XML-RPC with Perl and xinetd - don't try this in a hostile environment

[2011-08-05] How to join Unix-like systems to an Active Directory

[2011-08-01] Some thoughts about splice() on Linux

[2011-07-31] Updated after 4 years: fproxy 0.4 comes with a bugfix and an enhanced log format

[2011-07-07] Uploaded a CORBA howto which shows my experience with several ORBs

[2011-03-21] Got some strange error like input must be 8 bytes long at /usr/local/lib/perl5/site_perl/5.10.1/mach/Crypt/ line 59 with Perl's Net::SSH::Perl? Try my patch for It inserts a utf8::downgrade($data); in encrypt() and decrypt() along with a use utf8;.

[2011-03-21] I wrote a small server in C# that creates a thread for each connection. It looks like this:

TcpClient client = tcpListener.AcceptTcpClient();
MyHandler handler = new MyHandler(client);
Thread thread = new Thread(handler.Run);
thread.IsBackground = true;

After it served some clients, I noticed in the Task Manager that it consumes several hundreds of RAM, holds thousands of handles, but only runs 15 threads. The Process Explorer revealed that these handles are thread handles. Turns out that you have to call thread.Abort() explicitly to get rid of those handles. So I added the following:

foreach (Thread t in allThreads) {
  if (!t.IsAlive) {

This is different from Java where a threads terminates as soon as its run() method returns. Of course I could use System.Threading.ThreadPool. But then I don't know which threads are currently running unless I track each instance of MyHandler. For that I would have to extend the MyHandler class:

class MyHandler {
  private bool _running = true;

  public void Run() {
    try {
    } finally {
      _running = false;

  public bool Running { get { return _running; } }

I don't like both of these approaches.

[2011-01-30] On my workstation at home I sometimes use qemu-kvm to start a virtualized Windows XP. For my personal reference I uploaded my and shell scripts. Put the later one in /usr/local/libexec.

[2011-01-06] updated my short howto on IPv6, added a section called Impact on home networks

[2011-01-02] short howto on IPv6

[2011-01-01] IPv6 is here! See Same stuff, different protocol. Magic!

[2010-11-28] With FreeBSD 8.1 running in VirtualBox, Jonsen Yang discovered that my patch for CARP IP loadbalancing panics the kernel. So I setup a VirtualBox on my Mac Mini, recompiled the kernel with options WITNESS, and encountered some non-sleepable locks being held. Here is an adjusted patch.

[2010-11-11] smtppipe version 0.21 fixes an embarrassing bug

[2010-11-01] uploaded two patches against Libidn 1.16 to support the German ligature ß (sharp s, unicode codepoint 0x00df) as part of IDNA2008 or IDNA-bis.
Put both files into /usr/ports/dns/libidn/files on your FreeBSD box and do a portupgrade -f libidn


[2010-09-20] Note to self:

[2010-07-01] The beauty of FreeBSD. Today: Fibre Channel and Multipathing

That's it. Works out of the box.

[2010-06-19] updated my patch for carp ip loadbalancing to build on FreeBSD 8.0

[2010-06-13] released AugTV, a plugin for TV-Browser to schedule recordings on EyeTV

[2010-06-12] released AmpControl, a small Java application to control your Onkyo receiver or amplifier

[2010-06-07] registered the domain

[2010-05-16] wrote a howto about WANem hard disc install & bridge setup


[2010-04-03] some selected photos I took