Setup guides and tooling for two common Linux laptop problems:
- Running Roblox on Linux Mint via Sober
- Broadcom STA WiFi driver (
broadcom-sta-dkms) failing to build against kernels 6.15+
Sober is a native Linux Roblox client that runs the Android version of Roblox as a Flatpak — no Wine or Bottles required.
# Ensure Flatpak and Flathub are configured
sudo apt install flatpak -y
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# Install Sober
flatpak install flathub org.vinegarhq.Soberbash scripts/install-shortcut.shThis creates entries in both ~/.local/share/applications/ and ~/Desktop/. If the desktop icon shows a question mark, right-click it and choose Allow Launching.
On first run, Sober initialises and then presents a settings screen before downloading the Roblox APK.
Graphics backend:
- Use Vulkan on Intel Iris Xe or newer integrated graphics
- Use OpenGL on older Intel iGPU generations (Haswell/HD Graphics and earlier) — Vulkan support is incomplete on these
Behaviour settings:
| Setting | Value | Reason |
|---|---|---|
| HiDPI Display Scaling | OFF | Wayland-only; breaks mouse input on X11 (Mint's default session) |
| Enable Touch Input | OFF | Tablets only |
| Force Legacy Rendering | OFF | Only enable as a fallback if Roblox crashes on first launch |
| Enable Gamemode | ON | Prioritises CPU/GPU resources for the game |
After configuration, Sober downloads the Roblox APK and shows the login screen.
~/.var/app/org.vinegarhq.Sober/config/sober/config.json — edit via the Sober Settings UI (right-click the app icon) rather than by hand. The renderer (use_opengl) and graphics_optimization_mode are the most relevant settings for performance tuning.
Roblox's camera uses raw mouse input and ignores OS-level speed settings. To adjust camera speed, open the in-game menu (Escape) → Settings → Camera Sensitivity.
broadcom-sta-dkms (version 6.30.223.271) was last updated in 2015 and fails to build against kernels 6.15 and newer. The patch script in this repo fixes the four breaking changes.
| Kernel | File | Change |
|---|---|---|
| 6.17 | Makefile |
EXTRA_CFLAGS / EXTRA_LDFLAGS removed from kbuild — replace with ccflags-y / ldflags-y |
| 6.15 | wl_linux.c |
from_timer() removed — replaced by timer_container_of() |
| 6.15 | wl_linux.c |
del_timer() removed — replaced by timer_delete() |
| 6.15 | wl_cfg80211_hybrid.c |
Three cfg80211_ops callbacks gained a new int radio_idx parameter |
Full root-cause analysis and diffs are in docs/broadcom-sta-kernel-patches.md.
Install the package first, then run the patch script:
sudo apt install broadcom-sta-dkms
sudo bash scripts/patch-broadcom-sta.shThe Python script (scripts/patch-broadcom-sta.py) applies targeted string replacements to the three affected files under /usr/src/broadcom-sta-6.30.223.271/ and syncs them to the DKMS build directory if it exists. It is idempotent — safe to re-run.
Important: Reinstalling
broadcom-sta-dkmsfrom apt overwrites the patched source. Re-run the patch script any time the package is reinstalled or upgraded.
sudo dkms remove broadcom-sta/6.30.223.271 --all
sudo dkms add /usr/src/broadcom-sta-6.30.223.271
sudo dkms build broadcom-sta/6.30.223.271 -k "$(uname -r)"
sudo dkms install broadcom-sta/6.30.223.271 -k "$(uname -r)"If dpkg was interrupted by the original build failure:
sudo dpkg --configure -aWhen a new kernel breaks the build, check the DKMS log first:
sudo cat /var/lib/dkms/broadcom-sta/6.30.223.271/build/make.logCommon errors and their meaning:
| Error | Cause |
|---|---|
fatal error: typedefs.h: No such file or directory |
EXTRA_CFLAGS gone from kbuild — check Makefile |
implicit declaration of function 'from_timer' |
Timer API changed again — check <linux/timer.h> |
implicit declaration of function 'del_timer' |
Timer API changed again — check <linux/timer.h> |
initialization of '... (*)(struct wiphy *, ...)' from incompatible pointer type |
cfg80211_ops signature changed — diff against <net/cfg80211.h> |
To check what signatures the current kernel expects:
# Kernel's expected callback signatures
grep -A2 "set_wiphy_params\|set_tx_power\|get_tx_power" \
/usr/src/linux-headers-$(uname -r)/include/net/cfg80211.h
# Driver's current signatures
grep -n "set_wiphy_params\|set_tx_power\|get_tx_power" \
/usr/src/broadcom-sta-6.30.223.271/src/wl/sys/wl_cfg80211_hybrid.c
# Check whether EXTRA_CFLAGS still exists in kbuild
grep "EXTRA_CFLAGS" /usr/src/linux-headers-$(uname -r)/scripts/Makefile.lib
# Empty output = it's gone; use ccflags-ydocs/
RobloxLinuxInstall.md Full Roblox installation walkthrough
broadcom-sta-kernel-patches.md Root-cause analysis and patch reference
scripts/
install-shortcut.sh Creates Roblox desktop and launcher entries
startRoblox.sh Launches Sober directly from the terminal
patch-broadcom-sta.sh Root-check wrapper for the Python patcher
patch-broadcom-sta.py Applies all broadcom-sta source patches