Hello FydeOS Community!
I wanted to share a working solution for getting the internal LTE modem to initialize properly and automatically after booting on the Microsoft Surface Go 3 LTE.
Hopefully, this workaround helps other users with the same device and maybe provides some useful insights for the FydeOS team for a future SP update!
1. The Problem
While FydeOS generally recognizes the internal LTE modem on the Surface Go 3, it often fails to connect right after booting. In my case, it requires a manual restart of the ModemManager and a quick adjustment to the RX/TX buffer sizes of the cdc_ncm interface (which shows up as wwan0) to get it working reliably.
2. The Solution: The LTE Script
I created a bash script (lte.sh) to automate the buffer adjustment and the ModemManager restart.
Here is the code for the lte.sh script:
`Bash#!/bin/bash
echo “Setze RX/TX Puffergrößen…”
echo 16383 | tee /sys/bus/usb/devices/2-3/2-3:1.0/net/wwan0/cdc_ncm/rx_max
echo 16383 | tee /sys/bus/usb/devices/2-3/2-3:1.0/net/wwan0/cdc_ncm/tx_max
echo 16384 | tee /sys/bus/usb/devices/2-3/2-3:1.0/net/wwan0/cdc_ncm/rx_max
echo 16384 | tee /sys/bus/usb/devices/2-3/2-3:1.0/net/wwan0/cdc_ncm/tx_max
echo “Puffergrößen gesetzt.”
echo “Starte ModemManager neu…”
restart modemmanager
echo “ModemManager-Neustart-Befehl gesendet.”
echo “Skript lte.sh abgeschlossen.”`
3. Important Setup Notes & Troubleshooting
If you want to use this script, please keep the following things in mind:
- Windows Line Endings (CRLF): If you write or edit this script in Windows, it will have CRLF line endings, and FydeOS will throw a `` error. You can easily fix this right in the FydeOS terminal by running:
sed -i 's/\r$//' lte.sh - noexec Warning: When running the script from your Downloads folder, you might see a warning saying
script from noexec mount. This is expected behavior for this specific mount in FydeOS. You can still execute the script by explicitly calling bash:sudo bash lte.sh - Terminal Navigation: Remember that
/home/chronos/user/MyFiles/Downloadsis the path. You cannot just type the path as a command. You need to navigate to it first usingcd ~/MyFiles/Downloadsbefore running the script. (Note:xinputis not available in FydeOS by default).
4. Automating the Script on Boot (ChromeOS-AutoStart)
Since a standard user-autostart method wasn’t reliable after a reboot, I used the extension ChromeOS-AutoStart 5.2.0 (loaded as an unpacked extension).
I placed my script in the Downloads folder: /home/chronos/user/MyFiles/Downloads/lte.sh
In the AutoStart extension, I used the following command sequence:
shellsh -c "sudo bash /home/chronos/user/MyFiles/Downloads/lte.sh"exit
The boot sequence now looks like this: ChromeOS-AutoStart ➔ crosh ➔ shell ➔ executes lte.sh ➔ Modemanager restarts ➔ LTE works!
Crucial Disclaimer for Other Users
Please be aware that this specific fix was tested on FydeOS with a Surface Go 3 LTE.
DO NOT blindly copy and paste the USB device path (/sys/bus/usb/devices/2-3/...). The USB device number (2-3) and the interface path might vary depending on your specific hardware revision or even boot conditions. You must verify your own path for the cdc_ncm interface before using the script, otherwise, the buffer commands will fail.
I hope this helps someone out there!\r’: command not founderror. You can easily fix this right in the FydeOS terminal by running:DISCOURSE_PLACEHOLDER_8`
- noexec Warning: When running the script from your Downloads folder, you might see a warning saying
DISCOURSE_PLACEHOLDER_9. This is expected behavior for this specific mount in FydeOS. You can still execute the script by explicitly calling bash:DISCOURSE_PLACEHOLDER_10 - Terminal Navigation: Remember that
DISCOURSE_PLACEHOLDER_11is the path. You cannot just type the path as a command. You need to navigate to it first usingDISCOURSE_PLACEHOLDER_12before running the script. (Note:DISCOURSE_PLACEHOLDER_13is not available in FydeOS by default).
4. Automating the Script on Boot (ChromeOS-AutoStart)
Since a standard user-autostart method wasn’t reliable after a reboot, I used the extension ChromeOS-AutoStart 5.2.0 (loaded as an unpacked extension).
I placed my script in the Downloads folder: DISCOURSE_PLACEHOLDER_14
In the AutoStart extension, I used the following command sequence:
DISCOURSE_PLACEHOLDER_15DISCOURSE_PLACEHOLDER_16DISCOURSE_PLACEHOLDER_17
The boot sequence now looks like this: ChromeOS-AutoStart ➔ crosh ➔ shell ➔ executes DISCOURSE_PLACEHOLDER_18 ➔ Modemanager restarts ➔ LTE works!
Crucial Disclaimer for Other Users
Please be aware that this specific fix was tested on FydeOS with a Surface Go 3 LTE.
DO NOT blindly copy and paste the USB device path (DISCOURSE_PLACEHOLDER_19). The USB device number (DISCOURSE_PLACEHOLDER_20) and the interface path might vary depending on your specific hardware revision or even boot conditions. You must verify your own path for the DISCOURSE_PLACEHOLDER_21 interface before using the script, otherwise, the buffer commands will fail.
I hope this helps someone out there!