Display & Screen

I opted for the model with the i5-5300U, 8GB RAM, 256GB SSD, and the 2560×1440 display. The high resolution display comes in two flavors: touch (glossy) and non-touch (matte). I went with the matte and I’ve been very pleased with it so far. It comes up a bit short on pixels when you compare it with the XPS 13’s 3200×1800 display but it’s still very good. I run GNOME 3 with HIDPI disabled and having a few less pixels makes it much easier to read while still being very detailed.

The display is plenty bright and also very readable when set to very low brightness. Reducing the brightness also extends the battery life by quite a bit (more on that later). Gaming performance isn’t good but you wouldn’t want this laptop as a gaming rig, anyway.

Storage

You can get the PCI-e storage option with 512GB but the high price tag hurts. The 256GB m2 SATA drive in my X1 is plenty fast. The drive in my laptop is a Samsung and it’s a big improvement over some of the Sandisk drives I’ve had in other Lenovo laptops.

Network

The wireless card is an Intel 7265 and is supported out of the box with the iwlwifi module in the upstream kernel. It also provides Bluetooth and it works like a charm. I’ve paired up with many devices easily and transferred data as I’d expect.

There’s no full size ethernet port on this laptop (obviously). However, you can use the Lenovo proprietary ethernet dongle provided with the laptop and use the built-in Intel I218-LM ethernet card. It uses the e1000 driver and works out of the box.

Input devices

The island-style keyboard takes a little getting used to when you’re coming from the chiclets on the MacBook Pro. It feels great and the key travel is quite nice when compared with other laptops. The Dell XPS 13’s key travel is poor in comparison.

The touchpad at the front of the laptop works quite well and the little trough right in front of the bottom of the pad is handy for click and drag gestures. The synaptics driver for X works right out of the box and libinput works, too.

The trackpoint (also called “keyboard nipple”) is fine but I can’t use it worth a darn. I’m downright horrible at it. That’s not Lenovo’s fault — my brain is probably dysfunctional. The trackpoint buttons (below the space bar) are hooked up to the touchpad and this has caused some problems. There’s a fix to get the left and middle buttons working in Linux 4.0 and you’ll find that patch backported in some other distributions, like Arch and Fedora. I don’t use those buttons much but I could see how some people might want to do some two-handed click and drag gestures with them.

All of the keys on the keyboard work as expected, but you’ll need to load up the thinkpad_acpi module to get the brightness buttons working. In my case, I had to force the module to load since the module didn’t recognize my embedded controller:

modprobe thinkpad_acpi force_load=1

Another nice benefit of the module is that you can control some of the LED’s on the laptop programmatically. For example, you could blink the power button to signify your own custom alerts. You could also disable it entirely.

Battery life
Broadwell was supposed to bring some good power benefits and it’s obvious that the X1 Carbon benefits from that CPU. I’ve been off battery for about two hours while writing this post, handling email and updating some packages. GNOME says there is 84% of my battery left and it’s estimating about 7 hours and 45 minutes remaining. I’ve yet to see this laptop actually empty out entirely. I’ve gone for 10 hour stretches with it and it still has one or two hours left.

I’m not using any powertop tweaks, but I did install tlp and I’m using it on startup. Some folks have tweaked a few additional things from powertop and they’ve messed with the i915 module’s refresh rate. That might give you another 5-10% on the battery but I’m already very pleased with my current battery life.

Linux compatibility
There are two main issues:

Trackpoint left/middle buttons don’t work (fixed in 4.0 and backported in many distros)

Brightness and display switch keys don’t work (load the thinkpad_acpi module for that)

Considering that the fix for the first issue is widely available in most distributions and the second one is only a modprobe away, I’d say this laptop is pretty darned Linux compatible. I’m currently running Fedora 21 without any problems.

Wrap up

Thanks for reading this far! Let me know if I’ve missed anything and I’ll be glad to update the post.

There are some situations where you want to do the opposite of creating a wireless hotspot and you want to share a wireless connection to an ethernet connection. For example, if you’re at a hotel that offers only WiFi internet access, you could share that connection to an ethernet switch and plug in more devices. Also, you could get online with your wireless connection and create a small NAT network to test a network device without mangling your home network.

Doing this in older versions of GNOME and NetworkManager was fairly easy. Newer versions can be a bit more challenging. To get started, I generally like to name my ethernet connections with something I can remember. In this example, I have a USB ethernet adapter that I want to use for sharing a wireless connection. Opening the Network panel in GNOME 3 gives me this:

Click the cog wheel at the bottom right and then choose the Identity tab on the next window. Use a name for the interface that is easy to remember. I chose Home USB Ethernet for mine:

Press Apply and then go to a terminal. Type nm-connection-editor and you should get a window like this:

We can add a shared network connection by pressing the Add button. Do the following afterwards:

Choose Ethernet from the list and press Create…

click IPv4 Settings

Choose Shared to other computers in the Method drop-down menu

Enter Share via ethernet as the Connection name at the top (or choose a name you prefer)

When that’s all done, you can close the Network Connections menu we opened via the terminal. Now open the Network control panel once more. It should have two profiles for your ethernet connection now (mine is a USB ethernet device):

If it’s not already selected, just click on the Share via ethernet text. NetworkManager will automatically configure NAT, DHCP and firewall rules for you. When you’re ready to go back to normal ethernet operation and you want to stop sharing, simply click on the other profile (mine is called Home USB Ethernet). NetworkManager will put the ethernet device back into the original way you had it configured (default is DHCP with automatic IPv6 via SLAAC).

There are plenty of guides out there for making ethernet bridges in Linux to support virtual machines using built-in network scripts or NetworkManager. I decided to try my hand with creating a bridge using only systemd-networkd and it was surprisingly easy.

First off, you’ll need a version of systemd with networkd support. Fedora 20 and 21 will work just fine. RHEL/CentOS 7 and Arch Linux should also work. Much of the networkd support has been in systemd for quite a while, but if you’re looking for fancier network settings, like bonding, you’ll want at least systemd 216.

Getting our daemons in order

Before we get started, ensure that systemd-networkd will run on a reboot and NetworkManager is disabled. We also need to make a config file director for systemd-networkd if it doesn’t exist already. In addition, let’s enable the caching resolver and make a symlink to systemd’s resolv.conf:

Configure the physical network adapter

In my case, the network adapter connected to my external network is enp4s0 but yours will vary. Run ip addr to get a list of your network cards. Let’s create /etc/systemd/network/uplink.network and put the following in it:

[Match]
Name=enp4s0
[Network]
Bridge=br0

I’m telling systemd to look for a device called enp4s0 and then add it to a bridge called br0 that we haven’t configured yet. Be sure to change enp4s0 to match your ethernet card.

Make the bridge

We need to tell systemd about our new bridge network device and we also need to specify the IP configuration for it. We start by creating /etc/systemd/network/br0.netdev to specify the device:

[NetDev]
Name=br0
Kind=bridge

This file is fairly self-explanatory. We’re telling systemd that we want a device called br0 that functions as an ethernet bridge. Now create /etc/systemd/network/br0.network to specify the IP configuration for the br0 interface:

This file tells systemd that we want to apply a simple static network configuration to br0 with a single IPv4 address. If you want to add additional DNS servers or IPv4/IPv6 addresses, just add more DNS= and Address lines right below the ones you see above. Yes, it’s just that easy.

Let’s do this

Some folks are brave enough to stop NetworkManager and start all of the systemd services here but I prefer to reboot so that everything comes up cleanly. That will also allow you to verify that future reboots will cause the server to come back online with the right configuration. After the reboot, run networkctl and you’ll get something like this (with color):

My ethernet card has four ports and only enp4s0 is in use. It has a degraded status because there is no IP address assigned to enp4s0. You can ignore that for now but it would be nice to see this made more clear in a future systemd release.

Look at br0 and you’ll notice that it’s configured and routable. That’s the best status you can get for an interface. You’ll also see that my other ethernet devices are in the unmanaged state. I could easily add more .network files to /etc/systemd/network to configure those interfaces later.

I do a bunch of Linux-related tasks daily. Some are difficult and others are easy. Printing has always been my nemesis.

Some printers offer up highly standardized methods for printing. For example, many HP printers simply work with JetDirect and PCL 5. However, the quirkier ones that require plenty of transformations before paper starts rolling can be tricky.

Press the double down arrow button at the top (it’s the one on the left), and then press the button at the top right of the next window that looks like rectangles stacked on top of one another. Choose Manual Install from the menu that appears.

In the next menu, enter a nickname for the printer, the printer’s IP address, and select the correct printer model from the list. The printer should be properly configured in your CUPS system afterwards:

Any new print jobs set to the printer will cause the Xerox printer manager to pop up. This gives you the opportunity to customize your job (collating, stapling, etc) and you can also use secure print (which I highly recommend).