Surface Pro 2 and Fedora 28, with some issues I need help with

Greetings everybody, I’m new to the forums!

Recently, I had decided to upgrade my Surface Pro 2 from Fedora 27 to 28. Without enough space left on the SSD (dual-boot, Windows doesn’t like giving up space) for a dnf system-upgrade, I did a clean install, wiping everything that was Fedora 27 off the drive.

The bad things:

  • In GNOME, the auto-display brightness reacts too quickly and choppy causing me to squint to see one moment, and be blinded the next
  • Networking just SUCKS. I’m unable to get DHCP at all (every other device on the network is working perfectly with DHCP), and have to manually set IP and DNS to get a usable internet connection. The built-in Marvell Avastar wireless card doesn’t work at all with the latest kernel, any attempt to connect to a network fails instantly. Using an external Realtek dongle is very iffy too and the same occurs with a Pegasus-based usb ethernet adapter.
  • The issues with the touchpad on the Type Cover still persists.
  • Wacom digitizer still isn’t recognised in any Wacom settings application (however, stylus pressure is detected).
  • Using a stylus with the Wacom digitizer doesn’t automatically disable the touch screen by default yet, and the scripts that do this are getting outdated.
  • Volume buttons and Windows capacitive button aren’t registered in any way (Windows button used to be recognised in GNOME on Fedora 27)

The Good/Improved:

  • Suspend works properly now!!
  • Text Rendering seems to work well again

The untested:

  • Loading pictures in Gwenview or Digicam. Couldn’t use them because pictures were jagged and choppy for whatever reason
  • Mini DisplayPort - I don’t have any adapters
  • Palm Rejection - haven’t put enough time into testing it before I can determine how well it works

Anyway, I hope somebody can help me get networking up and running properly, and I’ll update this in the future.

1 Like

Check you window update becuase it is cause of change the window version. I had same problem and ask on https://babasupport.org/hp/hp-laptop-touchpad-not-working/ they slove my problem. You can ask for your problem like me

Hey dude welcome!
I have no insight as to the driver issue, I have made my own generic wifi drivers before for Lubuntu, but that was a while ago. Have you considered swapping over to possibly Mint or Ubuntu? I have a surface pro 4 running Linux mint 19, everything worked out of the box except for the touchscreen and pen and webcam. There are drivers for that however. I still cant get my webcam to work but thats not super important to me. Just a thought!

I have a SP2 that I use with Ubuntu so I can try to address some of these things, unfortunately many of my answers may be tantamount to “works on my machine” but I’ll do my best.

I have noticed this, it is possible to turn the feature off in Gnome, which is probably the easiest solution.

There’s a specific feature enabled by default that doesn’t work with the WiFi driver. However, the problem didn’t manifest for me in this way. What I experienced instead was that it wouldn’t reject the WPA2 key no matter the password, only allowing me to connect to unsecured networks. I was able to fix this by changing an option, but I don’t immediately recall what it was.

What type cover issues do you have? I have none, but I have noticed that not all type covers are created equal and mine and my sister’s had different issues. Mine wouldn’t reconnect after being detached and re-attached, fixed after upgrading to 18.04.

I don’t believe the Surface Pros have a Wacom digitizer until the SP3 and later.

I’ve heard people have them working on other DEs but they have never worked for me.

I don’t know what causes this. I don’t see this issue with any applications, however I’m using Gnome on it, not KDE, and not these specific applications.

I can confirm that It works, in the past the touchscreen would affect the wrong display but I think they fixed that as I haven’t seen it recently.

Bad news, it doesn’t work. Good news, I have a little bash script that makes it work.
https://github.com/dotWAVE/palmreject/blob/master/palmreject.sh
You may have to edit it if your device names are different, the first comment after the license tells you how to find out.

I’m only reading through this, but that link leads to a 404. So does just https://github.com/dotWAVE

Github is shit. In other news, water is wet.

The entire script
#!/bin/bash
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# configuration. run "xinput list" to see ids for your devices.
touchscreen_device_name='maXTouch'
stylus_device_specifier='Pen'
disable_timeout=10

# code follows. only change this if you know what you are doing.

# find out device ids from xinput:
touchscreen_device=`xinput --list | grep $touchscreen_device_name | grep -Po '(?<=id\=)[0-9]+'`
echo Touchscreen ID'='$touchscreen_device
stylus_device=`xinput --list | grep $stylus_device_specifier | grep -Po '(?<=id\=)[0-9]+'`

#Deprecated from original script
#stylus_device=`xinput --list | grep $stylus_device_name | grep $stylus_device_specifier | head -n 1 | grep -Po '(?<=id\=)[0-9]+'`

#prelimenary loop - some stylus does not appear until used
while [ -z "$stylus_device" ]
do
  echo Pen not found
  stylus_device=`xinput --list | grep $stylus_device_specifier | grep -Po '(?<=id\=)[0-9]+'`
  sleep 2
done

echo Stylus ID'='$stylus_device

last_state=-1
timer=0

# main loop:
while [ 1 ]
do
  state=`xinput query-state "$stylus_device" | grep -c "ValuatorClass Mode=Absolute Proximity=In"`

  if [ "$state" -ne "$last_state" ] || [ "$timer" -lt $((disable_timeout+1)) ];then
    if [ "$state" -ne 0 ];then
      echo "Disabling touchscreen, device $touchscreen_device"
      timer=$((disable_timeout+1))
      xinput --disable $touchscreen_device
    elif [ "$timer" -eq $((disable_timeout+1)) ]; then
      timer=0
    elif [ "$timer" -lt "$disable_timeout" ]; then
      timer=$((timer+1))
    else
      echo "Enabling touchscreen, device $touchscreen_device"
      timer=$((disable_timeout+1))
      xinput --enable $touchscreen_device
    fi
  fi
  last_state=$state
  sleep 0.1
done

Hope that works for you