Tuesday, June 16, 2015

Gotcha of the Day: Fedora 22 Upgrade Breaks Touchpad, Triggers Hissy Fit

A few weeks back, essentially on a whim, I upgraded my Linux laptop from Fedora 21 to Fedora 22. The process was as easy as running a few commands, including the well named FedUp. The upgrade seemed to go well; though I didn't really notice any changes in my Linux experience. That is until the touch pad on my laptop stopped working.

At first the touch pad just behaved oddly: acting like a scroll wheel on some pages, or like the mouse pointer was stuck in mud. I wasn't sure if I was looking at a Firefox issue, a Fedora issue or a hardware issue. But after recalling the original touchpad issues I had (setting Clickpad=1 saved the day), I realized I was almost certainly dealing with a Fedora 22 incompatibility.

My first response was to curse Fedora. Ugh, how could it manage to break something as fundamental as my touchpad! But then I went to work debugging the problem.

My first attempt at Googling took me to some advice regarding the use of libinput in Fedora 22. The recommendation was to copy /usr/share/X11/xorg.conf.d/50-synaptics.conf to /usr/share/X11/xorg.conf.d/99-synaptics.conf so it would be loaded after 90-libinput.conf. At this point I was groping blindly, not sure what libinput versus synaptics was all about. Of course, this didn't address my problem.

Diving further into the problem I learned that I could run the xinput command and get a list of all the input devices in my system:

 Virtual core pointer                     id=2 [master pointer  (3)]
    ↳ Virtual core XTEST pointer               id=4 [slave  pointer  (2)]
    ↳ ELAN Touchscreen                         id=11 [slave  pointer  (2)]
    ↳ MSFT0001:00 06CB:75BD UNKNOWN            id=12 [slave  pointer  (2)]
 Virtual core keyboard                    id=3 [master keyboard (2)]
    ↳ Virtual core XTEST keyboard              id=5 [slave  keyboard (3)]
    ↳ Power Button                             id=6 [slave  keyboard (3)]
    ↳ Video Bus                                id=7 [slave  keyboard (3)]
    ↳ Power Button                             id=8 [slave  keyboard (3)]
    ↳ Sleep Button                             id=9 [slave  keyboard (3)]
    ↳ Integrated_Webcam_HD                     id=10 [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard             id=13 [slave  keyboard (3)]
    ↳ Dell WMI hotkeys                         id=14 [slave  keyboard (3)]

Aha! Fedora 22 wasn't recognizing my touchpad as a meaningful device. I Googled around for MSFT0001:00 and found some useful leads. I went ahead and followed the fix here, creating a blacklist.conf and disabling a particular module.

I rebooted and that left me worse off than before: now the mouse was totally dead.

By now I was downright angry. This is so typical Linux. Here I am trying to be a poweruser, and instead I'm stuck researching low level system internals in the hopes that I can get the most basic of hardware to function.

I decide to put the problem away and leave it for another day. Though before I did, I decide to run a yum upgrade. I've got yum upgrade -y setup to run nightly, so the system should already be up to date. But I figured it wouldn't hurt to double check.

And sure enough, yum reported that there were dozens (if not hundreds) of programs on the system that needed an upgrade. When I tried to run this upgrade it failed with this error:

...
Total download size: 245 k
Downloading Packages:
[SKIPPED] fontconfig-2.11.93-2.fc22_2.11.94-1.fc22.i686.drpm: Already downloaded                                                                                                                

/var/cache/dnf/x86_64/22/updates/packages/fontconfig-2.11.93-2.fc22_2.11.94-1.fc22.i686.drpm: md5 mismatch of result
fontconfig-2.11.94-1.fc22.i686: Delta RPM rebuild failed
fontconfig-2.11.94-1.fc22.i686.rpm                                                 

Delta RPMs reduced 0.2 MB of updates to 0.4 MB (-47.1% saved)
Running transaction check
Transaction check succeeded.
Running transaction test
Error: Transaction check error:
  file /usr/share/fontconfig/conf.avail/10-scale-bitmap-fonts.conf from install of fontconfig-2.11.94-1.fc22.i686 conflicts with file from package fontconfig-2.11.93-2.fc22.x86_64
  file /usr/share/doc/fontconfig/README from install of fontconfig-2.11.94-1.fc22.i686 conflicts with file from package fontconfig-2.11.93-2.fc22.x86_64
  file /usr/share/doc/fontconfig/fontconfig-user.html from install of fontconfig-2.11.94-1.fc22.i686 conflicts with file from package fontconfig-2.11.93-2.fc22.x86_64
  file /usr/share/doc/fontconfig/fontconfig-user.txt from install of fontconfig-2.11.94-1.fc22.i686 conflicts with file from package fontconfig-2.11.93-2.fc22.x86_64
  file /usr/share/man/man1/fc-query.1.gz from install of fontconfig-2.11.94-1.fc22.i686 conflicts with file from package fontconfig-2.11.93-2.fc22.x86_64
  file /usr/share/man/man1/fc-scan.1.gz from install of fontconfig-2.11.94-1.fc22.i686 conflicts with file from package fontconfig-2.11.93-2.fc22.x86_64
  file /usr/share/man/man5/fonts-conf.5.gz from install of fontconfig-2.11.94-1.fc22.i686 conflicts with file from package fontconfig-2.11.93-2.fc22.x86_64

And now it started to make sense: there was a package that was keeping yum from performing the rest of the system upgrade. Included in that upgrade may have been some code to make my trackpad work. I ran the command:

 sudo yum upgrade --exclude=fontconfig

and the system finally went to work downloading and installing the massive update. Once completed, I rebooted for good measure and sure enough, my touchpad was back to working! Incidentally, my touchpad device is still identified as MSFT0001:00 06CB:75BD UNKNOWN and dmesg still reports:

[    0.000000] ACPI: MCFG 0x00000000DAC5C850 00003C (v01 DELL   QA09     01072009 MSFT 00000097)
[   19.275100] i2c_hid i2c-MSFT0001:00: failed to retrieve report from device.
[   19.282697] i2c_hid i2c-MSFT0001:00: failed to retrieve report from device.
[   19.283481] i2c_hid i2c-MSFT0001:00: failed to retrieve report from device.
[   19.284193] i2c_hid i2c-MSFT0001:00: failed to retrieve report from device.
[   19.284980] i2c_hid i2c-MSFT0001:00: failed to retrieve report from device.
[   19.285045] input: MSFT0001:00 06CB:75BD UNKNOWN as /devices/pci0000:00/INT33C3:00/i2c-7/i2c-MSFT0001:00/0018:06CB:75BD.0002/input/input9
[   19.285192] hid-multitouch 0018:06CB:75BD.0002: input,hidraw1: <UNKNOWN> HID v1.00 Mouse [MSFT0001:00 06CB:75BD] on 

But those errors are apparently not show stoppers.

I debugged the issue with fontconfig by noting that I had 3 copies of the package installed:

$ rpm -qa|grep fontconfig
fontconfig-2.11.94-1.fc22.x86_64
fontconfig-2.11.93-2.fc22.i686
fontconfig-2.11.93-2.fc22.x86_64

I removed one of them:

$ sudo rpm -e fontconfig-2.11.94

and now yum was properly able to upgrade fontconfig.

My Linux box is back to functioning and I'm back to thinking, hmmmm that wasn't so bad. Heck, that was better than an Internet Explorer Has Stopped Working error or a Blue Screen of Death.

2 comments:

  1. I switched to everything inside of VMWare. Windows, OS X, and Linux: all inside of VMWare. Sure there are issues, but none of them are due to hardware anymore, ever again.

    ReplyDelete
  2. Grant -

    And what if the underlying hardware has a problem? :-)

    In all seriousness, I think you're probably on to something. Can you tell me some more specifics: What is the host OS that you prefer for VMWare? What's the spec's on the computer and is it snappy in terms of performance?

    ReplyDelete