XPS L502x

Once, i decided to never buy a consumer notebook again. Mushy keyboards, glaring displays, flimsy hinges, incompatible ACPI, proprietary wussnots, lack of trackpoint and docking connector, i had enough of that.
But then, money, of which i never seem to have enough. At least not enough to afford what i wanted: a decenly fast quad core i7, at least a mid range GPU, SSD and high-res display. And i could easily take some compromises with this one, as it is mainly intended as a Desktop that can be carried with ease. Thus, i got this one. I knew that neither keyboard, hinges nor general build quality where to bad in this line. From what i could read on the net it worked well with linux. It lacks a trackpoint and has a glaring display. But for a device that i usually would use with external IO or in a darkened room playing games, thats not to much of an issue. Even the lack of a docking port is not that bad, considering that i would rarely have to carry it anyway.
Although, it had all the important connectors on the back side, giving me some $file idea...


  • $file GPU with intel driver
    • $file 3D astonishingly fast
    • $file Video-out using xrandr
  • $file GPU with nvidia driver
    • $file Optimus with Bumblebee
    • $file Video-out with intel-virtual-output
  • Power: 9W - manyW
    • $file S2R (stable)
    • $file cpufreq with p-state driver
  • $file ACPI
    • Battery: 60wh available (rather cheap on ebay)
    • $file Multimedia-Keys as keys (except mute)
    • $file Sensor-Keys poorly as keys (see below)
    • $file brightness as keys or in /proc and /sys
  • $file Lan
  • $file Wlan
    • $file Killswitch
  • $file Sound (headphone sounds good, internal speakers relatively awesome)
  • $file Motion-sensor for now?
  • $file Card reader (works with tweak)
  • $file Keyboard-backlight

Hybrid graphics

  • xf86-video-intel (Intel video driver)
  • mesa (Open source OpenGL implementation, used by the intel driver)
  • bbswitch
  • for hybrid graphics and/or use of the HDMI port
    • bumblebee
    • nvidia
    • lib32-nvidia-utils and lib32-mesa-libgl (optional, for multilib)
  • for use of the HDMI port
    • intel-virtual-output

Disable the nvidia GPU

By default, the Nvidia GPU is powered even when not in use. To disable it, load the bbswitch module and echo "OFF" or "ON" to /proc/acpi/bbswitch.

Hybrid Graphics

Hybrid graphics is pretty neat: the native GPU is only used on demand for specific applications, everything else uses the Intel GPU. Saves energy most of the time, provides performance when needed. That is done by a neat trick: when demanded, a second (headless) X server is started on the native GPU. The application in question runs then on the second X, whose Screen is copied to the primary.
The bumblebee package provides a daemon to handle all the preparations (enabling/disabling the GPU, loading/unloading kernel modules, starting and stopping the second X), and a program that handles the task of copying the screen.
Install bumblebee and start the daemon. Then just run any stuff that shall use the nvidia card as this
optirun STUFF
The optional packages primus provides primusrun, a (most of the time) faster alternative to optirun. the bumblebee daemon is needed nonetheless.

Video Out

As the displayport is connected to the intel card it can be used as usual with xrandr. The HDMI out is sadly connected to the nvidia card (whatever dell...). Its used in a similar (but inverted) way as optimus. The intel video driver provides a way to create virtual outputs. The virtual output is copied to the second X, again running on the nvida GPU.
Just run intel-virtual-output, a new virtual output should appear that can be configured with xrandr like any real one.

Tying it all together


Sensor Keys

Are a Keyboard, but a crazy one. The first key is hardwired as meta-x, the second is mapped as brightnes-up, the third as next track. I did not found a solution for this...

Card Reader

Does not work out of the box, one has to run
echo 1 > /sys/bus/pci/rescan
to make it work. Then it works fine.


Sold off.
total: 989.82ms (include: 0.73, request: 146.26, trace: 0.31, init: 1.2, load: 0, parse: 839.34, menu: 0.98, template: 0.95, minify: 0.05)