As you can tell, I've been busy both with work and with things that nerds do for fun. As for the latter, one of my long-term ToDo items was to evaluate whether FreeBSD can serve my needs on the desktop, maybe even on the laptop. I have always had plenty of FreeBSD servers running. But on the desktop, it has only been Linux for me -- for a number of years now.

Well, that has changed! In fact, I am typing this article on my FreeBSD 10.1 desktop. Yes, that's right. It certainly wasn't an easy journey, and I'm tempted to say do not try this at home to anybody who isn't going to leverage any of FreeBSD's strong points. Definitely don't try FreeBSD on the desktop if you haven't used it on servers or virtual machines before. It's got less in common with Linux than you might think.

Anyway, there were a lot of reasons for me personally to give it a go. And after a few weeks of not booting up Linux on the desktop any more, I can sincerely say that it was worth going down this path. But easy it was not.

This list isn't complete, not even remotely. Also, it's of course very much my personal opinion. Keep in mind that these are only reasons why I considered moving from Linux to FreeBSD on the desktop. On servers there are a bunch of other reasons, like pf, jails, securelevel etc. That's beyond the scope here, though.

Not an easy job!

Overall, the hardest part to get right was graphics performance, or more precisely really annoying screen tearing when scrolling pages or moving windows around. That's something which really annoyed me, given that my graphics card (GTX 780Ti) is rather powerful, and not too young to not be supported properly. On the other hand, the card is probably more commonly found amongst gaming people (I admit, I am a sucker for flight simulators, which is why I bought the card in the first place).

Anyhow, after updating the kernel (thankfully only takes a fraction of time compared to compiling a Linux kernel) and manipulating the nvidia-driver port to use the very latest beta driver from NVidia, plus some serious amount of time spent messing with compton's parameters and a few sysctl's, I eventually managed to get rid of any tearing. XFCE (with compton) is working beautifully in dual screen mode here now. Another contender, which also worked okay was compiz, but I liked XFCE better (I don't care for wobbly windows and all the effects, and without them XFCE is slicker and more flexible).

Another issue I'm still fighting is my USB headset (Turtle Beach Z300). Sound works just fine on them, but I can't seem to get the mic to cooperate. It doesn't matter that much, because I only ever use it on Skype (which I don't like anyway, but work requires me to use it; more on that in a second). However, it would be nice to get that set up eventually. I haven't given up yet, it's just not priority at the moment, because I've got a wired headset in the meantime.

The last problem remaining are my two wireless adapters (one is some rubbish mini PCI card, the other an ASUS USB dongle). Funny thing is that they can both see various networks, some of them rather distant from here, but they can't see my own router. Tethering to my tablet works, though, which is very curious. It's not a massive deal though as I normally use a wired connection. Update: This is no longer an issue. It was merely a configuration issue on the home network, which was running on a channel outside of more common bounds. All working beautifully now, using link aggregation in failover mode so that my wired (powerline, not super reliable) connection can fall over and wireless picks up while keeping the connection intact.

On the software side, everything which I want to work, works, including virtualisation with VirtualBox. (I haven't tested bhyve yet.) And as expected, everything is fast and robust. On a side note, I'm running FreeBSD with ZFS in mirror mode on two Crucial SSDs. Two ZFS mirrors, more precisely. One of them is fully encrypted with geli, the other unencrypted. (There's no point in running everything encrypted, though the performance impact is minimal.)

Now, Skype... There currently isn't a working Skype client available for FreeBSD. There used to be one (version 4.2, which is now banned on Skype's network), which used Linux compatibility libraries. But for 4.3 there is none. There are several options to work around this. One is using Wine, which is a no-go for me personally. The other option, which works flawlessly for me is to use Linux in a virtual machine with Virtualbox, install the Skype client there, and then run the VM in headless mode and use ssh with X11 forwarding to display only Skype on the FreeBSD desktop. The neat part here is that the Skype taskbar icon and the notifications and sound work in FreeBSD too, so that it integrates seemlessly.

Another piece of software (or can I say piece of crap?) that doesn't work properly, if at all, is Adobe Flash. According to various articles out there, two options are apparently available to make it work: The first is using a terribly outdated flash player plugin (really, given the massive amount of security issues with Flash, who would want that?). The other option is using pipelight, which is apparently some sort of Wine wrapper. Doesn't seem to work very well on 64bit though. I wasn't keen enough on Flash to spend time on making it work. My estimate is that more than 90% of the videos I watch online are hosted by Youtube, and that's html5 anyway. If I want to watch actual films, I use my “smart” telly and sit on the couch rather than at my desk :) (So don't ask me if Netflix works on FreeBSD. Probably not.)

So, to cut a very long story short, is getting FreeBSD to work on the desktop worth the effort? Yes! For me anyway. But to go back to the headline... this is not the crazy part! The truly mad bit is that I am half way there to making it work on my laptop, too! I know already that the hardware of my Lenovo X1 Carbon is supported rather well. What I am currently struggling with is power consumption. There's some serious tweaking required, because currently I fall around an hour short of the battery lifetime I get with Linux. This is also noticeable by the amount of fan activity. The other tricky bit will be suspend/resume, I guess, but I haven't gotten around to dealing with that yet. Watch this space for updates in the next weeks or months!