Skip to content

Cursor gone after upgrading from 4.2-11 to 4.3-2 #73

Closed

Description

@brianhall

I seem to have lost my cursor after installing the new kernel. I was able to get everything that touchpad.sh does to run successfully, but am still without a cursor. Are there any details I can provide to help troubleshoot? Thanks in advance!

Activity

  1. willmaddrey commented on Jan 7, 2016

    @willmaddrey

    My touchscreen works fine, but my touchpad doesn't work at all. Earlier my touchpad worked but the touchscreen didn't

  2. brianhall commented on Jan 7, 2016

    @brianhall
    Author

    This is the same for me. Touchscreen is still working.

    On Wed, Jan 6, 2016, 7:44 PM Will Maddrey notifications@github.com wrote:

    My touchscreen works fine, but my touchpad doesn't work at all. Earlier my
    touchpad worked but the touchscreen didn't

    —
    Reply to this email directly or view it on GitHub
    #73 (comment).

  3. raphael commented on Jan 7, 2016

    @raphael
    Owner

    I've noticed that this happens too - rebooting seems to fix it. I've narrowed it down to the id assigned to the touchpad in X: if that id is anything but 9 then the touchpad won't work. You can see what the id is by running xinput. I would love for someone that understands better the meaning of that id to shed some light....

  4. willmaddrey commented on Jan 7, 2016

    @willmaddrey

    Even when I reboot, it still is broken for me. I have moved temporally to the linux kernel

  5. raphael commented on Jan 7, 2016

    @raphael
    Owner

    Did you check xinput to see what was reported for the Touchpad? would be interesting to see if it's the same issue.

  6. millserd commented on Jan 7, 2016

    @millserd

    I can confirm this happens for me as well. I checked xinput when the touchpad was not responding and it was assigned id=11. After 2 reboots it is now working with an assigned id=9. The touchscreen always maintained id=10 and always responded.

  7. raphael commented on Jan 7, 2016

    @raphael
    Owner

    ok good to know thanks.

  8. willmaddrey commented on Jan 7, 2016

    @willmaddrey

    My touchpad is id=9, but it still isn't working

    Virtual core pointer id=2 [master pointer (3)]
    ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
    ⎜ ↳ Atmel maXTouch Touchpad id=9 [slave pointer (2)]
    ⎜ ↳ Atmel maXTouch Touchscreen id=10 [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)]
    ↳ Power Button id=7 [slave keyboard (3)]
    ↳ NCM-G102 id=8 [slave keyboard (3)]
    ↳ AT Translated Set 2 keyboard

  9. willmaddrey commented on Jan 7, 2016

    @willmaddrey

    After another reboot it works, my xinput now:
    ⎡ Virtual core pointer id=2 [master pointer (3)]
    ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
    ⎜ ↳ Atmel maXTouch Touchpad id=9 [slave pointer (2)]
    ⎜ ↳ Atmel maXTouch Touchscreen id=10 [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)]
    ↳ Power Button id=7 [slave keyboard (3)]
    ↳ NCM-G102 id=8 [slave keyboard (3)]
    ↳ AT Translated Set 2 keyboard

  10. aaron235 commented on Jan 7, 2016

    @aaron235

    Having the same problem here, it still doesn't work when my trackpad's ID is 9. I diff'd those two outputs, they're the same. I'm gonna be trying some things on my own too, I'll report back if I solve it.

  11. aaron235 commented on Jan 7, 2016

    @aaron235

    I think I've pinpointed the issue. I get a line in dmesg during broken-synaptics boots that I don't get during working ones:

    [ 7.800707] atmel_mxt_ts i2c-ATML0000:01: Wait for completion timed out.

    Also, I've included xinput list --long for both working and non-working.

    workingSynaptics.txt
    brokenSynaptics.txt

  12. willmaddrey commented on Jan 7, 2016

    @willmaddrey

    Yeah i also saw the atmel message when logging in, rolling back temporally fixed the problem till it is updated.

  13. raphael commented on Jan 7, 2016

    @raphael
    Owner

    I had seen that message too, just not sure how to fix it. The code in this repo shouldn't affect the touchpad at all, it only contains changes to the sound driver. The fact that it's random is puzzling too. I'll try to take another look when I get a chance.

  14. ehegnes commented on Jan 9, 2016

    @ehegnes
    Collaborator

    I have encountered a great success in making the touchpad work! I'll do some more digging (I think this issue relates to the CHG pin) but I wanted to get this workaround up ASAP so that people may profit from it.

    If you reset the maXTouch chip that controls the touchpad using atmel-maxtouch/mxt-app, the touchpad will work again.

    Workaround steps:

    1. Install atmel-maxtouch/mxt-app (your official repos may have it, but I opted to DL and compile myself)

    2. modprobe i2c-dev as root (unless it is already built-in to the kernel. This allows us to access i2c devices through /dev/i2c-*)

    3. Discern the i2c bus ID that controls your touchpad. There are a few ways to do this. I ran dmesg | grep -i atmel and took note of the following line:

      input: Atmel maXTouch Touchpad as /devices/pci0000:00/INT3432:00/i2c-7/i2c-ATML0000:01/input/input13
    4. Run mxt-app -d i2c-dev:7-004a with elevated privileges. Replace 7 with your bus number, but keep the 004a address the same.

    5. You will see a menu as such:

      Version:1.26-15-geae11c3
      Registered i2c-dev adapter:7 address:0x4a
      Command line tool for Atmel maXTouch chips version: 1.26-15-geae11c3
      
      Select one of the options:
      
      Enter L:   (L)oad config file
      Enter S:   (S)ave config file
      Enter I:   Read (I)nfo block
      Enter D:   Rea(D) individual object config
      Enter W:   (W)rite individual object
      Enter T:   Run sel(T)-test
      Enter F:   (F)lash firmware to chip
      Enter B:   (B)ackup the config data to NVM
      Enter R:   (R)eset the maxtouch device
      Enter C:   (C)alibrate the maxtouch device
      Enter M:   Display raw (M)essages
      Enter U:   D(U)mp Diagnostic data
      Enter Q:   (Q)uit the application
      
    6. Type R and press Return/Enter to reset the Atmel chip and regain mouse control.

    NOTE: If you're like me, and you don't want to type all that junk every time your touchpad stops working, you can script the following command echo -ne 'r\nq\n' | sudo mxt-app -d i2c-dev:7-004a.

  15. raphael commented on Jan 9, 2016

    @raphael
    Owner

    This is awesome, thank you! I'll wrap that up in a script and document it. I guess that begs the question of what is supposed to happen at boot time that doesn't...

  16. 15 remaining items

  17. raphael commented on Jan 11, 2016

    @raphael
    Owner

    Agreed on using modprobe.d for loading the modules. I wouldn't worry too much on the non-X use case for the Touchpad - we're not saying it won't work - just that it won't work automatically with the setup script this repo provides. The flip side is that the setup script will just work out of the box for most people which seems like a good trade off to me. Thanks for all the great contributions!

  18. burntcookie90 commented on Jan 11, 2016

    @burntcookie90

    @ehegnes just wanted to mention that my devices are setup to i2c-{0,1}

  19. raphael commented on Jan 11, 2016

    @raphael
    Owner

    (oops didn't mean to close) ugh that means the script needs to dynamically figure it out. I guess it could query all the devices listed in /dev/i2c-*, it seems mxt-app is good about reporting an error when accessing the wrong device. The script could read the information block and check the family and variant match...

  20. ehegnes commented on Jan 11, 2016

    @ehegnes
    Collaborator

    @burntcookie90 Oof, that's a shame. I'll bet the proper controllers IDs could be found using a pretty one-liner with a lot of pipes. grep the lines from dmesg containing 'touchpad' or 'touchscreen' and 'atmel', bash regex 'i2c-[:digit:]' in each line, and pipe the result to cut -d'-' -f2 in order to retrieve the number. I suppose awk could do most of that but I've not exactly mastered awk.

    Something like this:

    echo $(dmesg | grep -i "touchpad as" | cut -d'-' -f2 | head -c1)
    echo $(dmesg | grep -i "touchscreen as" | cut -d'-' -f2 | head -c1)

    Then again, @raphael's idea sounds much less convoluted and probably more reliable.

  21. burntcookie90 commented on Jan 11, 2016

    @burntcookie90

    @raphael that does seem like an idea that could work

  22. raphael commented on Jan 16, 2016

    @raphael
    Owner

    I just released 4.4 - let's see if the problem still occurs with it,

  23. recri commented on Jan 16, 2016

    @recri
    Contributor

    Cursor missing after reboot with 4.4, still gone after second reboot into 4.4, fixed by rebooting in ChromeOS and back to 4.4, no audio in 4.4:

    [ 2.477197] haswell-pcm-audio haswell-pcm-audio: error: DMA request channel failed
    [ 2.477260] haswell-pcm-audio haswell-pcm-audio: error: failed to load firmware
    [ 2.478611] bdw-rt5677 bdw-rt5677: ASoC: CPU DAI System Pin not registered

    but, on the positive side, the virtual terminals are displaying again.

  24. raphael commented on Jan 16, 2016

    @raphael
    Owner

    You can re-enable the touchpad with the scripts/setup/enable-atmel.sh script. I'm looking into the audio issue, ugh not a dull moment.

  25. colemickens commented on Jan 17, 2016

    @colemickens
    Contributor

    In case anyone is on NixOS, forgot about this and upgraded to Linux 4.3, I have package "mxt_app" in my nixpkgs fork if you need to reset your touchpad.

  26. raphael commented on Jan 17, 2016

    @raphael
    Owner

    I've updated the enable-atmel.sh script so looks for the i2c devices that corresponds to the Touchpad dynamically. I've also added setup.sh that configures ~/.xinit.rc to run the script on start.

  27. raphael commented on Apr 12, 2016

    @raphael
    Owner

    The script now reconfigures the devices instead of resetting them. The big advantage is that this only needs to be run once so no more messy service or startup hacks. See https://lkml.org/lkml/2016/4/8/536 for the original thread.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions