Tuesday, August 20, 2013

HP Envy 17t-j000 laptop (4) (misc)

A few miscellaneous remarks and observations:
  • The default marco window manager is working fine.  First time for me, but this is Mint 15 instead of the Mint 13 I've been using in the past.  I also gave compiz a quick try; it seems stable.
  • Problems with hibernate.  About one time out of three, resume from hibernate fails with a hideous kernel stack trace.  I tried uswsusp; resume from s2disk always fails (hangs after displaying the 'splash').  Suspend (which is mostly what I use) seems OK.  I was a little surprised to see it resume from suspend if I close the lid and then open it again.  I guess I can live with just suspend.  This is actually pretty cool once I got used to it.  Use Power Management to configure On Battery Power -> When laptop lid is closed -> Suspend.  Then close the lid to suspend and open it to resume.  Still, I would like to get hibernate working so I could switch to Windows and back without losing my whole Linux session.
  • Problems playing a DVD.  I got this working following RestrictedFormats/PlayingDVDs.  The two specific things I needed to do were to set a region on my DVD player using regionset, and to delete my old $HOME/.dvdcss.  To make vlc work, I need to use 'vlc -V x11'.  With volume turned up to 100%, it's borderline audible, but that seems to be true of all applications that use sound.
  • Similar issues just playing a movie file.  Totem is fine.  vlc needs '-V x11'.  Audio volume is too low.
  • The touchpad is awful.  By default there was no way to get a middle button click.  I was able to configure this as described here
  • Just in case anyone is tempted to take the easy way out and just use Windows 8: German government warns key entities not to use Windows 8.
  • Disregarding the warnings of the German government, I installed Steam on Windows 8 and downloaded a bunch of games I already was playing on Windows XP.  Everything seems to work OK.  Frustrating to see Windows 8 easily accessing the Nvidia GPU.

Saturday, August 17, 2013

HP Envy 17t-j000 laptop (3) (hybrid graphics)

This computer uses hybrid graphics.

When X comes up, graphics are being rendered by the Intel Integrated Graphics Processor (IGP).  Glxgears gets about 60 FPS.

Linux detects the  Dedicated Graphics Processor (DGP):

 # lspci | grep -i nvidia
01:00.0 3D controller: NVIDIA Corporation GK208M [GeForce GT 740M] (rev ff)

The first thing I looked into was vga_switcheroo.  The kernel was built with this feature enabled:
# uname -r
3.8.0-27-generic
# grep -i switcheroo /boot/config-3.8.0-27-generic
CONFIG_VGA_SWITCHEROO=y
However, the key directory that vga_switcheroo uses for everything does not exist:
# ls /sys/kernel/debug/vgaswitcheroo
ls: cannot access /sys/kernel/debug/vgaswitcheroo: No such file or directory
The /sys/kernel/debug directory does exist:
# ls /sys/kernel/debug
acpi       cleancache  gpio       kprobes  pwm             suspend_stats   x86
bdi        dri         hid        kvm      regmap          tracing
binder     extfrag     ieee80211  mce      regulator       usb
bluetooth  frontswap   iwlwifi    mmc0     sched_features  wakeup_sources 
I saw some messages like this in /var/log/syslog:
VGA switcheroo: detected Optimus DSM method \_SB_.PCI0.GFX0 handle
I couldn't find anything in the information available from HP about this computer using Optimus, but I decided to consider the possibility. So I installed Bumblebee.  Bumblebee fails with an error like ' Cannot access secondary GPU - error: Could not load GPU driver'.

I soon found that regardless of Bumblebee, the driver just wouldn't load.
# modprobe nvidia-304
ERROR: could not insert 'nvidia_304': No such device
Error (edited for legibility) from /var/log/syslog when this happens:
nvidia: module license 'NVIDIA' taints kernel.
nvidia 0000:01:00.0: power state changed by ACPI to D0
nvidia 0000:01:00.0: enabling device (0000 -> 0003)
NVRM: The NVIDIA GPU 0000:01:00.0 (PCI ID: 10de:1292)
NVRM: installed in this system is not supported by the 304.88
NVRM: NVIDIA Linux driver release.  Please see 'Appendix
NVRM: A - Supported NVIDIA GPU Products' in this release's
NVRM: README, available on the Linux driver download page
NVRM: at www.nvidia.com.
nvidia: probe of 0000:01:00.0 failed with error -1
NVRM: The NVIDIA probe routine failed for 1 device(s).
NVRM: None of the NVIDIA graphics adapters were initialized!
This page suggests loading a more up to date nvidia driver from ppa:xorg-edgers/ppa.  I tried nvidia-325 from xorg-edgers; still wouldn't load.
Note that if you configure the xorg-edgers repository, it might be difficult to remove it afterwards.  There are some instructions how to do this, but it didn't work for me and I wound up recovering my root file system from backups.

I tried nouveau.

I tried downloading the latest driver from the Nvidia web site.  The web site specifically says this supports the GeForce GT 740M, but I was still unable to load the driver.  Error is:
  WARNING: 
You do not appear to have an NVIDIA GPU supported by the 319.32     
NVIDIA Linux graphics driver installed in this system.  For further 
details, please see the appendix SUPPORTED NVIDIA GRAPHICS CHIPS in 
the README available on the Linux driver download page at           
www.nvidia.com.
It feels like there's something fundamental I don't understand about this... maybe something about this hybrid graphics environment is preventing the driver from being loaded, even when it's the right driver.

Saturday, August 10, 2013

HP Envy 17t-j000 laptop (2) (dual boot Linux install with UEFI)

The new laptop arrives.  Here are some highlights:

HP ENVY 17t Quad
    Windows 8 64
    4th generation Intel(R) Core(TM) i7-4900MQ Processor
    NVIDIA GeForce GT 740M Graphics with 2048MB of dedicated video memory
    17.3-inch diagonal Full HD Anti-glare LED-backlit Display (1920 x 1080)
    16GB DDR3 System Memory (2 Dimm)
    2TB 5400 rpm Dual Hard Drive
    Blu-ray player & SuperMulti DVD burner
    HP TrueVision HD Webcam w/ integrated digital mic
    802.11b/g/n WLAN and Bluetooth(R)



I replaced the second 1TB hard drive with a 250GB SSD, to give me SSD performance on the root file system and my home directory.

The UEFI architecture poses some challenges to doing a dual-boot install.  The following represents something like 3 days worth of research.  I hope this will spare someone else all this trouble.  UEFI is supported by Linux, but it's relatively new and there are some things to get used to.

This all kind of assumes you care about keeping Windows 8.  I read many accounts of people who cheerfully blew away Windows which would certainly make this a lot easier.

I punted on secure boot.  Ubuntu in particular seems to have solved this problem, if you really care about secure boot.
  • (optional, recommended) Burn your recovery disks.  If you're super-paranoid like me, you'll then use those to reinstall Windows 8 on a different drive, and test all of the following on that drive, before proceeding.
  • In the BIOS, disable Secure Boot.
  • Enable 'Legacy Support' in Boot Options. 
  • Boot System Rescue.  Run gparted and delete the recovery partition.
  • Boot Windows 8.  Use compmgmt.msc (run as administrator) to shrink the 'C:' drive partition.  I left my Windows 8 C drive at 200 GB leaving over 700 GB available for Linux.
  • Boot Linux distro.  Mint 15 MATE 64 bit is what worked for me.  I couldn't get Mint 13 or Ubuntu 12.04 to work.  Use the 'compatibility mode' line.  Choose 'Install Linux Mint alongside Windows 8' or 'Something Else'.  Finish the install.
  • At this point, rebooting brings Windows 8 up by default.
  • Reboot.  Choose 'Boot From EFI File' and navigate down the tree to 'NO VOLUME LABEL/EFI/linuxmint/grubx64.efi'.
  • X login menu comes up, but it's almost invisibly dim.  Once I log in (blindly), brightness increases to normal.  Alternatively, when the GRUB menu comes up, hit 'e' for edit and add 'acpi_backlight=vendor' (no quotes) to the boot line (line that starts with 'linux').
  • Install 'boot repair' and run it.  Click on 'Recommended repair'.  Reboot.
  • GRUB should now come up when you reboot.  It looks weird... I have 16 choices.  (Awe your co-workers with your 733t boot menu!)  Linux boot should work.  'Windows 8 (loader) (on /dev/sde4)' or 'Windows Recovery Environment (loader) on /dev/sda5' got me an error like this:
error: can't find command 'drivemap'.
error: invalid EFI file path.
  • I tried to fix this following these instructions, but unsuccessfully.  However, I'm able to boot Windows 8 with 'Windows Boot UEFI loader'.  Good enough.
  • Next, configure GRUB to add 'acpi_backlight=vendor' always at boot time. I went to edit /etc/default/grub but no such file exists.  After a bit of googling, I installed grub-efi-amd64 which provides this file.  This seems like a bit of a MINT bug for this file not to be present.
  • Edit /boot/default/grub.  Add this setting
GRUB_CMDLINE_LINUX=acpi_backlight=vendor

(see Simple Configuration Handling) and rebuild the GRUB configuration:

grub-mkconfig -o /boot/grub/grub.cfg

Now you should be able to boot Linux from the GRUB menu and see the login prompt when it comes up.