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.