devil (Surface Go)
Table of Contents
Summary
A swell small portable. This is also my Wayland test machine. It runs a clone of my i3 environment in sway, plus considerations for touchscreen interaction.
Notes
- N-trig pen also works with my magedok USB-C portable monitor so it's a nice companion display.
Hardware
Make | Microsoft |
Year | 2018 |
Model | Surface Go |
Processor | Pentium Gold 4415Y |
Memory | 8 GB |
Ports | Surface Connect |
USB C 3.0 | |
Micro SD | |
3.5mm Headset | |
Graphics | Intel HD 615 |
Storage | 128GB Toshiba BG3 NVMe SSD |
Display | 10" 1800x1200 |
Int. Peripherals | Qualcomm Atheros QC6174 802.11AC |
Qualcomm USB Bluetooth | |
Realtek RTS522A SD Card Reader | |
Ext. Peripherals | Surface Type Cover |
Surface Pen | |
Dimensions | |
Length/Depth | 18.0 cm |
Width | 24.8 cm |
Height/Thickness | 1.5 cm |
Weight | 0.77 kg (1 lb 11 oz) |
Software
Operating System | Debian |
Unique applications | Wayland/Sway |
Log
OS install and hardware notes
I decided to try going very modern on this machine setup. After playing about in a Windows 11 eval copy (why did the seller reformat after posting photos of win 10) I tried to boot Void linux and OpenBSD, but decided against those rabbit holes. I put on Debian and eventually moved to testing branch (bookworm, 12.x). This also became my first time trying Wayland using the sway compositor.
Overall hardware support was pretty good on recent kernels. One required intervention was replacing the wifi firmware (board-2.bin
) with a different version specific to the Surface Go. A second issue is the cameras aren't functional with a mainline kernel. Appears to require a kernel patch, and a recent build of a support library (libcamera). I did test them out while I was on windows and they're pretty satisfactory. I think the rear cam produces a worse picture than the front.
Bluetooth has been shit. I can't pair or see any older devices. Even modern bluetooth 4.x devices and the surface pen connect only when they feel like it. It was suggested 2.4 GHz wifi use might interfere, but I've verified I'm connected to my 5 GHz AP.
The Surface Go I bought was used and came with the Type Cover, and Surface Pen. The type cover has a weird quirk where it resets during fast typing or certain buttons/touchpad actions, but this seems to only occur in legacy modes. That is once a proper kernel is loaded and initialized the device it is fine. I still hit this issue when typing my luks decryption password, but I get by typing the password slowly.
The keyboard layout is ok, but the top row of letters is slightly shifted to the left. I find it mostly noticeable on with the '[]' keys. There isn't any reason for this. Tab could have been wider and '\' narrower to keep a better alignment.
Sway setup
Lots of changes moving to a Wayland setup. I managed to get quite a lot more working than I expected on such a device, but it's taken more than a full day and I still haven't quite achieved feature parity with my i3
setup.
Fancy touchscreen gestures recognition in Wayland seems to not exist. This device can still do a lot with the pen input, but it's basically just a two button mouse. For sway
compositor you really just require a keyboard to do anything beyond switching workspaces and interacting with already running apps, but that's more or less what I expected to get out of this experiment.
Squeekboard
See Squeekboard
Sway
See sway
Dhewm3
I got hold of an original CD copy (pre-BFG remaster). I thought why not try it out on the Surface Go for fun.
For comparison the minimum requirements are a P4 1.5GHz or Athlon XP 1500+. These were single core so comparatively the Pentium 4415Y (at 1.6 GHz) is ~4X the performance, but it does that in a 6W package while those would have been close to 60W.
I had doubts about it running under Wayland, but after doing the CD shuffle, running game-data-packager
, and installing dhewm3 it fired right up. Setting the resolution was a bit tricky because you need to account for the display scaling (divide real resolution by scaling factor). I ended up with this invocation and it worked very well.
/usr/games/dhewm3 +set r_fullscreen 1 +set r_mode -1 +set r_customWidth 1200 +set r_customHeight 800
Sway, wayvnc, and Remarkable Vnsee
I tried using the remarkable as a VNC display before with X machines, but found X liked to crash (at least on my radeon based desktop machine). So I got the idea to give it a go with this little machine since having a e-ink display seemed like a nice little companion.
See official docs on Vnsee Sway setup
swaymsg create_output swaymsg output "HEADLESS-1" resolution 1404x1872 scale 2 wayvnc -o HEADLESS-1 --max-fps=10 10.11.99.2
This isn't that great. My main goals were viewing documentation. I found serious issues using atril
as the document viewer. I tried switching to zathura
to alleviate the control issues of using a mouse centric app.
It seems important to limit wayvnc frame rate as above. Otherwise I ran into more rendering issues. Still not perfect, but most edge cases can be worked around by moving the workspace to a real display and sorting things.
Future things: I'd like to be able to rotate the display as well as hide the cursor. Vnsee mentions cursor hiding for x11vnc
, but wayvnc
doesn't seem to have that option in my cursory manpage reading.
Fixing Bluetooth recovery from suspend
Bluetooth always broke on suspend, but resetting the usb device was enough. Was tired of having to attach the type cover or usb keyboard though.
Instead we create a systemd service that runs on resume following this thread.
It looks like:
[Unit] Description=Reset Bluetooth USB on resume Before=sleep.target StopWhenUnneeded=yes [Service] Type=oneshot RemainAfterExit=yes ExecStop=/usr/bin/usbreset 0cf3:e302 [Install] WantedBy=sleep.target
Then enable it:
sudo systemctl enable reset_bluetooth_usb.service
A refurbished Surface Dock 1661
I got a refurbished Surface Dock. It's like a tiny brick. Microsoft didn't just put one chunk of steel in it, but rather made a steel chunk sandwich. It weighs about 0.56 kg.
Here's a nice teardown by Dan S. Charlton (maker of Vertical Docks).
The dock cable was a bit stressed by the refurbisher wrapping it hard around the body, but it seems to be functional. According to that teardown it is a removable connector (glued), but replacements don't seem to be available so I'll leave it in place.
I ran both DisplayPorts, and tested all the USB 3.0 ports individually.
The only thing that isn't working right is the Realtek adapter's USB 3.0 link. Instead it comes up on the USB 2.0 hub, and I get an error "Cannot enable. Maybe the USB cable is bad?". It is a shame, as this thing's WiFi can already pull down USB 2.0 speeds, but at least latency would be reduced. In a pinch I could hook up a USB 3.0 ethernet adapter.