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.
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.