Hardware/Microsoft/Surface Go 2: Difference between revisions
Add LTE modem workaround |
Add reference for LTE modem workaround |
||
Line 43: | Line 43: | ||
</syntaxhighlight>After that rebuild your system and reboot the machine. | </syntaxhighlight>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<syntaxhighlight lang="nix"> | If the LTE modem does not appear in your network manager directly, a [https://github.com/linux-surface/linux-surface/wiki/Surface-Go-2#enabling-the-lte-modem small workaround script] is required. Add this to your system configuration<syntaxhighlight lang="nix"> | ||
systemd.services.lte_modem_fix = let | systemd.services.lte_modem_fix = let | ||
modemFixScript = pkgs.writeScriptBin "fix_lte_modem" '' | modemFixScript = pkgs.writeScriptBin "fix_lte_modem" '' |
Revision as of 14:53, 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"];