My Dell XPS 13 `sputnik’ Linux configuration

So, back in September I decided to purchase a new laptop, the one I decided on was the Dell XPS 13 Sputnik (9333). This is an Intel Core i7, 8GB RAM, 256GB mSATA based laptop which ships with Ubuntu 12.04 LTS.

Dell_XPS_13_Sputnik_3_Large

My first thoughts on this laptop are positive, in general the build quality is high, screen looks great, as fast (very fast for such a thin ultrabook). That said the unit initially shipped to me suffered from the dreaded coil whine issue discussed on this thread, as well as a few other issues which, with the help of others I’ve been able to solve pretty quickly.

There’s a great blog which details most of the things which you need to take care of to get this system working well. That said there’s a few more things that you’ll need to do. If you’re like me, you’ve probably blown away the stock OS, and installed something more recent.

First thing I did was modify the als.sh script on the xps13 blog:

--- als.sh      2014-10-15 22:20:26.592234453 -0600
+++ /usr/local/bin/als.sh       2014-10-11 23:37:33.150956572 -0600
@@ -85,15 +85,17 @@
 fi
 
 # Check idle time
-. /usr/share/acpi-support/power-funcs
-getXuser
-currIdleTime=`su $XUSER -c "dbus-send --session --dest=org.freedesktop.ScreenSaver \
-                            --type=method_call --print-reply --reply-timeout=1000 \
-                            /ScreenSaver org.freedesktop.ScreenSaver.GetSessionIdleTime \
-                            | grep uint32 | sed 's:.*uint32 \+\([0-9]\+\).*:\1:g'"`
-if [ $currIdleTime -gt $idleTimeout ]; then
-    echo "Timeout expired, ignoring ambient light changes"
-    exit 0
+if [ -f /usr/share/acpi-support/power-funcs ]; then
+       . /usr/share/acpi-support/power-funcs
+       getXuser
+       currIdleTime=`su $XUSER -c "dbus-send --session --dest=org.freedesktop.ScreenSaver \
+                                   --type=method_call --print-reply --reply-timeout=1000 \
+                                   /ScreenSaver org.freedesktop.ScreenSaver.GetSessionIdleTime \
+                                   | grep uint32 | sed 's:.*uint32 \+\([0-9]\+\).*:\1:g'"`
+       if [ $currIdleTime -gt $idleTimeout ]; then
+           echo "Timeout expired, ignoring ambient light changes"
+           exit 0
+       fi
 fi
 
 # Use xbacklight if the given path is wrong
@@ -115,6 +117,7 @@
         fi
         for i in `seq $curr $incr $target`; do
             echo $i > $backlightPath
+            echo $i > /tmp/als_state
             sleep $timeout
         done
     else
@@ -129,4 +132,4 @@
         break
     fi
     j=$(($j+1))
-done
\ No newline at end of file
+done

Effectively the patch above simply checks to see if power-funcs  actually exists.

Next I upgraded to 3.17 kernel. This solved problems with white noise, as well as wireless stability issues.

After that you’ll want to disable power features on the mSATA SSD by creating /etc/pm/config.d/hook_blacklist.conf and adding the following line:

HOOK_BLACKLIST="95hdparm-apm sata_alpm"

 

After some discovery, I found that not all power control features are here. A large number of them are stored in /etc/power.d/10-power_script. you’ll want to patch this file to omit the features which will adversely affect the SSD

--- power.d/10-power_script     2014-10-18 15:34:15.820269065 -0600
+++ power.d/10-power_script     2014-10-18 15:33:08.976265876 -0600
@@ -41,16 +41,16 @@
 #echo $GOVERNOR > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor
 
 # Enable SATA link power Managmenet for host0
-echo $SATA > /sys/class/scsi_host/host0/link_power_management_policy
+#echo $SATA > /sys/class/scsi_host/host0/link_power_management_policy
 
 # Enable SATA link power Managmenet for host1
-echo $SATA > /sys/class/scsi_host/host1/link_power_management_policy
+#echo $SATA > /sys/class/scsi_host/host1/link_power_management_policy
 
 # Enable SATA link power Managmenet for host2 - it used to slow down keyboard typing
-echo $SATA > /sys/class/scsi_host/host2/link_power_management_policy
+#echo $SATA > /sys/class/scsi_host/host2/link_power_management_policy
 
 # Enable SATA link power Managmenet for host3
-echo $SATA > /sys/class/scsi_host/host3/link_power_management_policy
+#echo $SATA > /sys/class/scsi_host/host3/link_power_management_policy
 
 # Autosuspend for USB device Synaptics Large Touch Screen [SYNAPTICS]
 findPath 06cb 0af8
@@ -79,7 +79,7 @@
 echo $CONTROL > /sys/bus/pci/devices/0000:00:1f.3/power/control
 
 # Runtime PM for PCI Device Intel Corporation Lynx Point-LP SATA Controller 1 [AHCI mode]
-echo $CONTROL > /sys/bus/pci/devices/0000:00:1f.2/power/control
+#echo $CONTROL > /sys/bus/pci/devices/0000:00:1f.2/power/control
 
 # Runtime PM for PCI Device Intel Corporation Haswell-ULT Integrated Graphics Controller
 echo $CONTROL > /sys/bus/pci/devices/0000:00:02.0/power/control

Lastly, I had to upgrade xserver-xorg-video-intel to at least version 2.99.916 to ensure that resume would function correctly.

Leave a Reply

Your email address will not be published. Required fields are marked *