I've been running FreeBSD servers for several years now and have previously tried to use FreeBSD on the desktop as well. Recently, I bought a laptop and put FreeBSD 11.0 with a graphical desktop on it. This is my one and only laptop I use currently. The laptop is a Lenovo ThinkPad T520 with 8GB RAM and a 120GB SSD in place of the original spinning disk and four gigs of RAM. The T520 was released in 2011.
It works pretty nicely, except that the battery discharges from 100% down to where the laptop shuts down in just 1 hour (pretty much on the second), and also, suspend doesn't work of course. I also have not found out how to get the Fn-buttons to work for screen brightness and such. Also, audio over Bluetooth does not appear to be supported in FreeBSD 11.0, so I can't use my wireless headphones.
Things that do work include:
- The fingerprint reader, thanks to security/fprintd and the security/fprint_demo tool.
- Webcam using cuse4bsd compiled from upstream source and multimedia/pwcview. The cuse4bsd in the ports collection does not work with my camera. pwcview supports up to vga (640x480) resolution and 30 fps, and this works using my camera. Not sure what the real max resolution and frame rate of the webcam is supposed to be but this is good enough for me.
- Hardware accelerated 3d graphics using the proprietary binary driver by Nvidia.
- The most important GUI applications I need all work, including but not limited to; rxvt-unicode, Mozilla Firefox, Chromium, LibreOffice Writer, Blender, Inkscape and VirtualBox.
- External monitors connected to the DisplayPort.
- Built-in WiFi.
- The SD-card reader.
- Speakers, as well as the audio jack. Using audio/pavucontrol, I can play from multiple sources to different destinations at the same time.
There are some parts of the hardware that I have not yet tested, including the built-in 3G modem, because I do not currently have a subscription with a data plan. (My cell phone is not a smart phone, I use an iPod touch on WiFi instead and get almost the same experience I would with an iPhone.) I have also not yet tested audio over DisplayPort as far as I can remember.
Currently, Blender can not be found in the binary packages provided by FreeBSD, even though it is in the ports tree, but that's no biggie since I'm building all the packages myself using Poudriere anyway, because I have some options which I want set differently from what they are set to for the packages in the official repositories.
I intend to figure out how to get suspend working and how to get acceptable battery life eventually. I think most of the bits of what is needed have already been written, and it's mostly a matter of finding out where these things are and how to enable them.
In order to have an environment that I can easily modify and recreate, I forked the FreeBSD source tree and ports tree on GitHub, and I made an additional repository detailing my configuration.
On a newer ThinkPad — X240 (Haswell), battery life under FreeBSD -CURRENT is close to 9 hours. Doesn't resume from suspend though. But yours should! I know people got suspend/resume working on 20 and 30 ThinkPads.
I would recommend OpenBSD for laptops. I'm not sure why, but my machine under FreeBSD had similar power issues and enabling apmd did nothing to resolve them.
I installed OpenBSD because someone said it supports think pads better and they were absolutely right, my machine is cool, quiet and the battery lasts ages. OpenBSD also requires X11 to be installed for ports to work, so maybe it is designed more for desktop use?
The OpenBSD developers dogfood the OS on their own laptops (mostly Thinkpads). I'd imagine that's one big reason why it works so well. In contrast, I've heard (but have not verified) that many FreeBSD devs do much of their work on macOS, and ssh to or virtualize FreeBSD.
It works pretty nicely, except that the battery discharges from 100% down to where the laptop shuts down in just 1 hour (pretty much on the second), and also, suspend doesn't work of course. I also have not found out how to get the Fn-buttons to work for screen brightness and such. Also, audio over Bluetooth does not appear to be supported in FreeBSD 11.0, so I can't use my wireless headphones.
Things that do work include:
- The fingerprint reader, thanks to security/fprintd and the security/fprint_demo tool.
- Webcam using cuse4bsd compiled from upstream source and multimedia/pwcview. The cuse4bsd in the ports collection does not work with my camera. pwcview supports up to vga (640x480) resolution and 30 fps, and this works using my camera. Not sure what the real max resolution and frame rate of the webcam is supposed to be but this is good enough for me.
- Hardware accelerated 3d graphics using the proprietary binary driver by Nvidia.
- The most important GUI applications I need all work, including but not limited to; rxvt-unicode, Mozilla Firefox, Chromium, LibreOffice Writer, Blender, Inkscape and VirtualBox.
- External monitors connected to the DisplayPort.
- Built-in WiFi.
- The SD-card reader.
- Speakers, as well as the audio jack. Using audio/pavucontrol, I can play from multiple sources to different destinations at the same time.
There are some parts of the hardware that I have not yet tested, including the built-in 3G modem, because I do not currently have a subscription with a data plan. (My cell phone is not a smart phone, I use an iPod touch on WiFi instead and get almost the same experience I would with an iPhone.) I have also not yet tested audio over DisplayPort as far as I can remember.
Currently, Blender can not be found in the binary packages provided by FreeBSD, even though it is in the ports tree, but that's no biggie since I'm building all the packages myself using Poudriere anyway, because I have some options which I want set differently from what they are set to for the packages in the official repositories.
I intend to figure out how to get suspend working and how to get acceptable battery life eventually. I think most of the bits of what is needed have already been written, and it's mostly a matter of finding out where these things are and how to enable them.
In order to have an environment that I can easily modify and recreate, I forked the FreeBSD source tree and ports tree on GitHub, and I made an additional repository detailing my configuration.
Here is a screenshot I took of my laptop yesterday: https://raw.githubusercontent.com/eriknstr/ThinkPad-FreeBSD-...