Hardware/Microsoft/Surface Go 2: Difference between revisions
Add reference for LTE modem workaround |
mNo edit summary |
||
Line 60: | Line 60: | ||
}; | }; | ||
systemd.services.ModemManager.wantedBy = ["multi-user.target"]; | systemd.services.ModemManager.wantedBy = ["multi-user.target"]; | ||
</syntaxhighlight> | </syntaxhighlight>It will take a couple of seconds for the modem to appear. |
Latest revision as of 15:07, 15 May 2024
Microsoft Surface Go 2 | |
---|---|
Manufacturer | Microsoft |
Architecture | x86_64 |
Bootloader | 64-bit GRUB |
Maintainer | onny |
The Surface Go 2 is a portable 2-in-1 detachable tablet computer by Microsoft, featuring a 10.5-inch PixelSense Display, Intel® Pentium® Gold or Pentium® M processors, and optional LTE connectivity.
Setup
Support for webcam and LTE modem requires a custom kernel from the linux-surface project. Adapt the flake.nix
of your system configuration to include the nixos-hardware repository and the specific module for your device: nixos-hardware.nixosModules.microsoft-surface-go
.
{
description = "NixOS configuration with flakes";
inputs.nixos-hardware.url = "github:NixOS/nixos-hardware/master";
outputs = { self, nixpkgs, nixos-hardware }: {
# replace <your-hostname> with your actual hostname
nixosConfigurations.<your-hostname> = nixpkgs.lib.nixosSystem {
# ...
modules = [
# ...
nixos-hardware.nixosModules.microsoft-surface-go
];
};
};
}
After that rebuild your system and reboot the machine. If the LTE modem does not appear in your network manager directly, a small workaround script is required. Add this to your system configuration
systemd.services.lte_modem_fix = let
modemFixScript = pkgs.writeScriptBin "fix_lte_modem" ''
#!${pkgs.stdenv.shell}
echo -n 16383 > /sys/bus/usb/devices/2-3:1.0/net/wwp0s20f0u3/cdc_ncm/rx_max
echo -n 16383 > /sys/bus/usb/devices/2-3:1.0/net/wwp0s20f0u3/cdc_ncm/tx_max
echo -n 16384 > /sys/bus/usb/devices/2-3:1.0/net/wwp0s20f0u3/cdc_ncm/rx_max
echo -n 16384 > /sys/bus/usb/devices/2-3:1.0/net/wwp0s20f0u3/cdc_ncm/tx_max
'';
in {
wantedBy = ["multi-user.target"];
serviceConfig = {
Type = "oneshot";
ExecStart = "${modemFixScript}/bin/fix_lte_modem";
};
};
systemd.services.ModemManager.wantedBy = ["multi-user.target"];
It will take a couple of seconds for the modem to appear.