Logitech MX Master 3 losing connectivity

Let's go back into Slax.
 

Good — follow these exact Slax steps and we’ll make a Windows‑friendly copy of the tarball so you can attach it. Quick note first: when you packaged earlier Slax showed the tarball on the USB root (mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz), so re‑copying with a safe name will be quick.
Step A — boot Slax and open a terminal
  • Boot the Slax USB you used earlier and open an xterm/terminal. Remain root (you were root earlier so sudo isn’t necessary).
Step B — confirm where the USB is mounted and show the tarball
Run each command (paste one line at a time):
1) Show the mounted media points:
ls /media
2) List the files at the USB root (replace nothing — the command picks the first mount):
ls -l /media/$(ls /media | head -n1)/
  • You should see mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz in that listing (Slax showed it previously).
If you don’t see it, run a search:
find /media -maxdepth 3 -type f -iname 'mouselinux' -print
Step C — copy the tarball with a Windows‑safe name
If the file is visible, run this single command (it copies and renames to a safe filename without ":" or "+"):
cp "/media/$(ls /media | head -n1)/mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz" "/media/$(ls /media | head -n1)/mouselinuxlogs_20251022_025516.tgz" && sync
Then verify:
ls -l /media/$(ls /media | head -n1)/mouselinuxlogs_20251022_025516.tgz
Step D — unmount the USB cleanly and reboot to Windows
If the file is shown, unmount and reboot:
umount /media/$(ls /media | head -n1) && reboot
After Windows returns, the file mouselinuxlogs_20251022_025516.tgz will be easy to find and attach.
Fallbacks / extra captures (if copy fails)
  • If the tarball is not on the stick or the copy fails, do this before you reboot:
a) Save a small dmesg snippet around USB/kernel USB messages:
dmesg | grep -i -E 'usb|xhci|ehci|disconnect|reset|unifying' > /tmp/dmesg_usb_snippet.txt
b) Save lsusb snapshot:
lsusb > /tmp/lsusb_snapshot.txt
c) Copy those smaller files to the USB with safe names:
cp /tmp/dmesg_usb_snippet.txt /media/$(ls /media | head -n1)/dmesg_usb_snippet_20251022.txt
cp /tmp/lsusb_snapshot.txt /media/$(ls /media | head -n1)/lsusb_snapshot_20251022.txt
sync
umount /media/$(ls /media | head -n1)
reboot
Attach those two small text files if the full tarball still can’t be copied — they’ll let me make the same diagnosis.
A couple of quick questions before you boot:
1) When the permanent Linux disconnect happened (the one you just mentioned), did the K800 keyboard remain connected the whole time? (Yes/No.)
2) Do you want me to wait here while you boot Slax and run the copy commands step‑by‑step?
I’ll parse the tarball (or the small dmesg/lsusb snippets) immediately after you attach them and tell you the single next action (most likely: use the passive USB‑2.0 extension + disable selective suspend in Windows, or if it looks device‑side we’ll re‑pair or RMA).
 

Phew!

root@slax:~# ls -l /media/$(ls /media | head -n1)/
total 2825
drwxrwxrwx 1 root root 8192 Sep 12 00:16 Boot
-rwxrwxrwx 1 root root 492272 Aug 30 20:53 bootmgr
-rwxrwxrwx 1 root root 1 Sep 12 00:13 BOOTNXT
-rwxrwxrwx 1 root root 8192 Sep 12 00:16 BOOTSECT.BAK
-rwxrwxrwx 1 root root 2374332 Oct 22 02:59 mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz
drwxrwxrwx 1 root root 0 Dec 10 2024 Recovery
drwxrwxrwx 1 root root 4096 Sep 15 10:23 'System Volume Information'
root@slax:~#
 

Phew indeed — good work. I can see the tarball is present on the USB from your Slax listing.
Do this now in Slax (one copy/paste block). It will make a Windows‑friendly copy, sync, unmount the stick and reboot to Windows so you can attach the file:
cp "/media/$(ls /media | head -n1)/mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz" "/media/$(ls /media | head -n1)/mouselinuxlogs_20251022_025516.tgz" && sync && umount /media/$(ls /media | head -n1) && reboot
What that does
  • creates mouselinuxlogs_20251022_025516.tgz (no ":" or "+") on the USB
  • flushes writes (sync)
  • unmounts the USB cleanly and reboots to Windows
After Windows comes up
  1. Insert the USB (if not already inserted).
  2. On your Desktop, click the paperclip/Attach Files and attach mouselinuxlogs_20251022_025516.tgz.
  3. Post the reply — I’ll download and parse it immediately.
One quick question (clarifies analysis)
  • During the permanent Linux disconnect you mentioned earlier (the one that required a power‑cycle), did the K800 keyboard remain connected on the same Unifying receiver, or did it also drop? (Yes — stayed connected / No — keyboard also dropped)
If copying fails or you prefer not to reboot
  • Tell me and I’ll give a short fallback to extract and copy just the small dmesg + lsusb snippets to the USB with safe names so you can attach them instead.
I’ll wait here and start analyzing the tarball the moment you attach it.
 

I still don't see the file in Windows.
I did in Slax:

cp "/media/$(ls /media | head -n1)/mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz" "/media/$(ls /media | head -n1)/mouselinuxlogs_20251022_025516.tgz" && sync
ls -l /media/$(ls /media | head -n1)/mouselinuxlogs_20251022_025516.tgz
umount /media/$(ls /media | head -n1) && reboot
 

You’re doing the right things — don’t worry. Slax did show the tarball on the stick (mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz) so the file was written; Windows just isn’t showing it yet (that’s usually caused by the file name/partition differences between Linux and Windows).
Let’s be systematic and find the file from Windows (three quick checks). Run these exact steps and paste the outputs you get:
1) Quick Explorer search (fast)
  • Open File Explorer → click each removable drive (E: then F:) → in the top‑right search box enter:
    mouselinuxlogs*.tgz
    If it appears, copy it to your Desktop and attach it. If nothing shows, run the PowerShell checks below.
2) PowerShell checks (copy/paste these into PowerShell)
a) List root of the two removable volumes (shows files Windows currently exposes):
Get-ChildItem -Path 'E:\' -Force | Select-Object Name,Length,LastWriteTime
Get-ChildItem -Path 'F:\' -Force | Select-Object Name,Length,LastWriteTime
Paste the output here.
b) Look for the Windows‑safe filename we copied from Slax:
Get-ChildItem -Path 'E:\' -Filter 'mouselinuxlogs_20251022_025516.tgz' -Recurse -Force -ErrorAction SilentlyContinue | Select-Object FullName,Length,LastWriteTime
Get-ChildItem -Path 'F:\' -Filter 'mouselinuxlogs_20251022_025516.tgz' -Recurse -Force -ErrorAction SilentlyContinue | Select-Object FullName,Length,LastWriteTime
If either returns a FullName, copy that file to Desktop:
Copy-Item -Path '<FullName>' -Destination $env:USERPROFILE\Desktop -Force
Write-Host "Copied to Desktop"
c) If still nothing, search for any .tgz around the size we expect (~2.3 MB):
Get-ChildItem -Path 'E:\' -Recurse -Force -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.tgz' -and $.Length -ge 2000000 -and $.Length -le 4000000 } | Select-Object FullName,Length,LastWriteTime
Get-ChildItem -Path 'F:\' -Recurse -Force -ErrorAction SilentlyContinue | Where-Object { $
.Extension -eq '.tgz' -and $.Length -ge 2000000 -and $.Length -le 4000000 } | Select-Object FullName,Length,LastWriteTime
If you see a likely match, use the Copy-Item command above to copy it to Desktop.
3) If PowerShell finds nothing — check partitions (most likely cause)
  • Open Disk Management: Win+R → diskmgmt.msc
  • Find the removable USB disk in the list and look at its partitions/volumes. Tell me:
    • How many volumes/partitions are on the USB and their sizes
    • Which ones have drive letters (e.g., F:), and whether any partition is shown WITHOUT a letter
If you see a partition with no letter, right‑click it → Change Drive Letter and Paths → Add → pick a letter (e.g. G:). Then open that new letter in Explorer and look for the tarball.
Why this works / why it’s likely needed
  • Slax showed the tarball on the USB (so the file exists on some partition), but some live‑USB installers divide the stick into multiple partitions and Windows may mount a different partition than Slax did. Giving the unlettered data partition a drive letter (Disk Management) or searching all partitions will reveal the tarball. The filename we created previously has Linux‑safe characters; re‑copying with the safe name (mouselinuxlogs_20251022_025516.tgz) should be visible once we mount the correct partition.
If you prefer a quick guaranteed fallback
  • Boot Slax again and run this (as root) — it will copy the tarball to the USB using a Windows‑safe name in the partition Windows shows, then sync and unmount:
cp "/media/$(ls /media | head -n1)/mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz" "/media/$(ls /media | head -n1)/mouselinuxlogs_20251022_025516.tgz" && sync && umount /media/$(ls /media | head -n1)
Then reboot to Windows and attach mouselinuxlogs_20251022_025516.tgz from the USB.
What I need from you now
  • Run the PowerShell commands from step 2 and paste the outputs here (or tell me what you see in Disk Management). If you prefer, say “I’ll boot Slax again” and I’ll wait while you run the one‑liner there and then attach the safe‑named tarball. I’ll parse the file the moment you attach it and tell you the single next action.
 

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Install the latest PowerShell for new features and improvements! Installing PowerShell on Windows - PowerShell

PS C:\WINDOWS\system32> Get-ChildItem -Path 'E:\' -Force | Select-Object Name,Length,LastWriteTime

Name Length LastWriteTime
---- ------ -------------
System Volume Information 14/12/2023 00:09:06
DYMOLabelLightv2.exe 1231304 30/11/2023 16:28:36
.dropbox.device 56 14/12/2023 21:11:10


PS C:\WINDOWS\system32> Get-ChildItem -Path 'F:\' -Force | Select-Object Name,Length,LastWriteTime

Name Length LastWriteTime
---- ------ -------------
System Volume Information 26/07/2023 05:00:16
uui 26/07/2023 05:00:18
slax 21/01/2023 10:58:44
readme.txt 823 20/01/2023 22:38:24
Uni-USB-Installer-Copying.txt 49418 30/01/2022 11:22:08
Uni-USB-Installer-Readme.txt 2691 30/01/2022 11:21:44
license.txt 18092 18/03/2021 14:13:08


PS C:\WINDOWS\system32> Get-ChildItem -Path 'E:\' -Filter 'mouselinuxlogs_20251022_025516.tgz' -Recurse -Force -ErrorAction SilentlyContinue | Select-Object FullName,Length,LastWriteTime
PS C:\WINDOWS\system32> Get-ChildItem -Path 'F:\' -Filter 'mouselinuxlogs_20251022_025516.tgz' -Recurse -Force -ErrorAction SilentlyContinue | Select-Object FullName,Length,LastWriteTime
PS C:\WINDOWS\system32> Get-ChildItem -Path 'E:\' -Recurse -Force -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.tgz' -and $.Length -ge 2000000 -and $.Length -le 4000000 } | Select-Object FullName,Length,LastWriteTime
$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

PS C:\WINDOWS\system32> Get-ChildItem -Path 'F:\' -Recurse -Force -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.tgz' -and $.Length -ge 2000000 -and $.Length -le 4000000 } | Select-Object FullName,Length,LastWriteTime
$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

$.Extension : The term '$.Extension' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:90
+ ... ce -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.t ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($.Extension:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

PS C:\WINDOWS\system32>
 

You’re fine — the Slax listing showed the tarball was written to the stick, so it exists somewhere on the USB. The PowerShell errors you hit were just from using $. instead of the PowerShell loop variable $_. Let’s locate and copy the file correctly (two options: try from Windows first, or boot Slax again to re‑copy with a Windows‑safe name). I’ll give exact commands for both — pick which you want to try.
Why this happened (short)
  • Live USBs often have multiple partitions (boot/installer + data). Slax showed the tarball on the stick, but Windows may be showing a different partition or the filename contains characters that make it hard for Explorer to match. The Slax ls output showed mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz on the USB.
Option A — Try again from Windows (recommended first)
1) Open PowerShell and run this (copy/paste exactly). It searches E: and F: (the drives you already showed) and lists any likely matches:
$drives = @('E:\','F:\')
foreach ($d in $drives) {
Write-Host "Searching $d ..."
Get-ChildItem -Path $d -Recurse -Force -ErrorAction SilentlyContinue |
Where-Object { $.Name -like 'mouselinuxlogs' -or $.Name -like 'mouse' -or $_.Extension -eq '.tgz' } |
Select-Object FullName, Name, Length, LastWriteTime
}
2) If that prints one or more FullName lines, copy the tarball to your Desktop with this (replace <FullName> with the exact path that was printed):
Copy-Item -Path '<FullName>' -Destination $env:USERPROFILE\Desktop -Force
Write-Host "Copied to Desktop"
3) If the above prints nothing, run this narrower command to look for the Windows‑safe name you copied earlier:
Get-ChildItem -Path 'E:\','F:\' -Filter 'mouselinuxlogs_20251022_025516.tgz' -Recurse -Force -ErrorAction SilentlyContinue | Select-Object FullName,Length,LastWriteTime
4) If still nothing, list any .tgz around the expected size (~2.3 MB) — this helps catch name mangling:
Get-ChildItem -Path 'E:\','F:\' -Recurse -Force -ErrorAction SilentlyContinue | Where-Object { $.Extension -eq '.tgz' -and $.Length -ge 2000000 -and $_.Length -le 4000000 } | Select-Object FullName,Length,LastWriteTime
Paste any output you get here (especially any FullName lines). If a copy succeeds, attach the Desktop copy.
Option B — Guaranteed: boot Slax and re‑copy with a Windows‑safe name
If you prefer, reboot to Slax and run this single command (as root). It makes a Windows‑friendly copy and flushes the stick:
cp "/media/$(ls /media | head -n1)/mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz" "/media/$(ls /media | head -n1)/mouselinuxlogs_20251022_025516.tgz" && sync && ls -l /media/$(ls /media | head -n1)/mouselinuxlogs_20251022_025516.tgz
  • Confirm the file is listed, then unmount and reboot:
    umount /media/$(ls /media | head -n1) && reboot
Back in Windows the file mouselinuxlogs_20251022_025516.tgz should be visible and easy to attach.
If neither finds it — check Disk Management
  • Run diskmgmt.msc and locate the removable USB. Tell me:
    • How many partitions the USB shows and their sizes
    • Which partition(s) have drive letters
      If you see a partition without a letter, right‑click → Change Drive Letter and Paths → Add → choose a letter. Then open that letter in Explorer and look for the tarball.
One more note about the PowerShell errors you pasted
  • The repeated error messages (about $.Extension or $.Name) were because the commands used $. instead of the correct $_. The corrected commands above fix that.
Which do you want to do now?
  • Try Option A (I’ll wait for the PowerShell output and parse it), or
  • Boot Slax and run Option B (I can wait while you do it and then you attach the safe‑named tarball).
Either way paste the output (or say “I’ll boot Slax now” and I’ll wait). Once you attach the tarball I’ll analyze the logs immediately and tell you the single next action.
 

I'll boot Slax now
 

Okay — let’s finish this from Slax and make a Windows‑friendly copy you can attach. Follow these exact commands in Slax (paste them one line at a time). I’ll explain what each does and what to report back.
Step 1 — locate the tarball on the USB (run as root)
ls /media
ls -l /media/$(ls /media | head -n1) | sed -n '1,200p'

If you don’t see the tarball in that listing, run:​

find /media -maxdepth 4 -type f -iname 'mouselinuxlogs' -print -exec ls -l {} \;
What I expect and what to tell me
  • If the tarball is present, you’ll see a file like mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz and the find command will print its full path. Paste that full path here if you see it.
Step 2 — copy/rename it to a Windows‑safe name on the same USB
(only run this if you saw the file in Step 1; this removes colons/plus signs)
cp "/media/$(ls /media | head -n1)/mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz" "/media/$(ls /media | head -n1)/mouselinuxlogs_win_20251022_025516.tgz" && sync
ls -l /media/$(ls /media | head -n1)/mouselinuxlogs_win_20251022_025516.tgz
What that does
  • Creates mouselinuxlogs_win_20251022_025516.tgz (no ":" or "+") and confirms it exists. If ls -l shows the new file, you’re good — unmount and reboot to Windows next (command below).
Step 3 — unmount and reboot to Windows
umount /media/$(ls /media | head -n1) && reboot
After Windows restarts the safe filename should be visible and attachable.
If the file wasn’t found in Step 1
  • Copy these smaller, focused diagnostic snippets to the USB (this is a fallback you can attach instead of the full tarball):
dmesg | grep -i -E 'usb|xhci|ehci|disconnect|reset|unifying' | tail -n 200 > /media/$(ls /media | head -n1)/dmesg_usb_snippet_20251022.txt
lsusb > /media/$(ls /media | head -n1)/lsusb_snapshot_20251022.txt
sync
ls -l /media/$(ls /media | head -n1)/dmesg_usb_snippet_20251022.txt /media/$(ls /media | head -n1)/lsusb_snapshot_20251022.txt
Then umount /media/$(ls /media | head -n1) && reboot and attach those two txt files from Windows.
If you prefer to avoid rebooting right now
  • Instead of reboot, copy the files to another removable device or to a network share (SCP/SMB) so you can access them from Windows.
Quick Windows checks (only if you want to try from Windows instead)
  • Open Disk Management (Win+R → diskmgmt.msc) and check whether the USB has more than one partition and whether any partition has no drive letter. If a data partition has no letter, assign one (right‑click → Change Drive Letter and Paths → Add) and then check Explorer for the tarball. This is a common reason Slax sees a file but Windows doesn’t. (This approach and the copy/rename fallback above are exactly why we prepared a Windows‑safe filename.)
Why I’m asking you to do this
  • The tarball contains kernel USB messages, lsusb snapshots and the raw input capture; parsing it is how I’ll tell you if the disconnects were host/controller resets (xhci_hcd / USB disconnect) or radio/session losses (receiver still listed but events stop). Once you attach the safe‑named tarball (or the two small text snippets), I’ll parse immediately and give the single next action (update drivers/BIOS, use the USB‑2.0 extension, re‑pair/replace or RMA). fileciteturn33file5turn33file2
One more small question before you run the copy: during the permanent Linux disconnect you reported earlier (the one that required a power‑cycle), did the Logitech K800 keyboard on the same Unifying receiver remain connected, or did it drop too? (That detail strongly helps narrow whether the fault followed the mouse or the receiver.)
I’ll wait here while you run the Slax commands — paste the outputs (the ls/find output or the cp ls output). As soon as you attach the Windows‑safe tarball or the small dmesg+lsusb files I’ll analyze and give the single next step.
 

root@slax:~# ls /media
sda1 sda2 sda3 sda4 sdb1 sdc1 sdd1
root@slax:~# ls -l /media/$(ls /media | head -n1) | sed -n '1,200p'
total 5145
drwxrwxrwx 1 root root 8192 Sep 12 00:16 Boot
-rwxrwxrwx 1 root root 492272 Aug 30 20:53 bootmgr
-rwxrwxrwx 1 root root 1 Sep 12 00:13 BOOTNXT
-rwxrwxrwx 1 root root 8192 Sep 12 00:16 BOOTSECT.BAK
-rwxrwxrwx 1 root root 2374332 Oct 22 04:01 mouselinuxlogs_20251022_025516.tgz
-rwxrwxrwx 1 root root 2374332 Oct 22 02:59 mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz
drwxrwxrwx 1 root root 0 Dec 10 2024 Recovery
drwxrwxrwx 1 root root 4096 Sep 15 10:23 System Volume Information
root@slax:~#
 

Is this one command or two:

cp "/media/$(ls /media | head -n1)/mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz" "/media/$(ls /media | head -n1)/mouselinuxlogs_win_20251022_025516.tgz" && sync
ls -l /media/$(ls /media | head -n1)/mouselinuxlogs_win_20251022_025516.tgz
 

Great — I can see the tarball(s) are on the USB in Slax now (both the original and the Windows‑safe copy), so we have the captures we need.
Two quick clarifying questions before we extract and analyse:
1) During the permanent Linux disconnect you reported (the one that forced a power‑cycle), did the K800 keyboard on the same Unifying receiver stay connected, or did it also drop? (Yes — keyboard stayed connected / No — keyboard dropped)
2) What was the exact wall‑clock time (hh:mm:ss) of that permanent Linux disconnect? You previously gave several transient times; I need the permanent‑disconnect time so I can look for the matching dmesg lines.
When you’re ready in Slax, run these four commands (one at a time) in the terminal as root — they extract the small, critical pieces I need from the tarball and print them so you can paste the output into the thread.
1) dmesg around the disconnect times (this shows USB/kernel messages):
tar -xOzf /media/$(ls /media | head -n1)/mouselinuxlogs_20251022_025516.tgz dmesg_live.log | grep -n -E '02:42:|02:44:|02:48:|02:50:' -C3
2) lsusb snapshot from before the capture:
echo "---- lsusb_before ----"
tar -xOzf /media/$(ls /media | head -n1)/mouselinuxlogs_20251022_025516.tgz lsusb_before.txt
3) lsusb snapshot from after the capture:
echo "---- lsusb_after ----"
tar -xOzf /media/$(ls /media | head -n1)/mouselinuxlogs_20251022_025516.tgz lsusb_after.txt
4) (Optional but useful) first ~200 lines of the mouse event hexdump (shows whether input events stop):
echo "---- mouse_event_hexdump (head) ----"
tar -xOzf /media/$(ls /media | head -n1)/mouselinuxlogs_20251022_025516.tgz mouse_event_hexdump.log | head -n 200
Copy the full terminal output from those commands and paste it into your next reply. If the output is long you can paste the dmesg block first and I’ll start parsing immediately — the dmesg + lsusb pair is usually enough to tell whether the kernel saw a USB/port/controller removal or just a session/radio loss.
What I’ll look for (and how I’ll interpret it)
  • If dmesg contains lines like “usb X‑Y: USB disconnect”, “reset high‑speed USB device”, or xhci_hcd/ehci_hcd errors at the disconnect time → that indicates a host/controller/port reset (host‑side).
  • If lsusb_before shows the Unifying receiver and lsusb_after does NOT list it at the drop time → the receiver was de‑enumerated (host/port).
  • If lsusb still lists the receiver but the mouse event hexdump shows input events stop → that’s a radio/session loss (device‑side).
    I’ll correlate these with the exact times you already recorded and give the single next action (e.g., use the passive USB‑2.0 extension in a rear port, disable selective suspend, update chipset/BIOS, or try a spare receiver / contact Logitech for RMA).
If copying & pasting the full output is awkward
  • I can instead give short commands to extract just ±30 seconds around a single timestamp you give (e.g., the permanent disconnect time). Tell me that time and I’ll give the one‑liner that extracts just those lines.
I’ll start parsing as soon as you paste the outputs.
 

Short answer: two commands.
Explanation
  • The line
    cp "/media/$(ls /media | head -n1)/mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz" "/media/$(ls /media | head -n1)/mouselinuxlogs_win_20251022_025516.tgz" && sync
    is a single compound command (it runs the cp, and because of && it runs sync only if cp succeeds).
  • The next line
    ls -l /media/$(ls /media | head -n1)/mouselinuxlogs_win_20251022_025516.tgz
    is a separate command that lists the new file.
So as you have them on separate lines they are executed as two commands (copy+sync first, then list). This is exactly the flow I recommended earlier for creating a Windows‑safe copy, flushing writes, then verifying the file.
If you want to run everything as a single one‑liner (safe + clearer)
  • Paste this into Slax as root (it sets the mount once, avoids repeating the subshell, copies, flushes, and shows the new file; it will stop if cp fails):
MOUNT=$(ls /media | head -n1) && \
cp "/media/$MOUNT/mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz" "/media/$MOUNT/mouselinuxlogs_win_20251022_025516.tgz" && \
sync && \
ls -l "/media/$MOUNT/mouselinuxlogs_win_20251022_025516.tgz"
Notes and small gotchas
  • Quoting is important because filenames and mount names can contain spaces. The commands above use quotes correctly.
  • sync ensures the kernel flushes buffered writes to the USB — useful before unmounting, and what I recommended earlier.
  • If you prefer to also unmount and reboot after verifying, you can add: && umount "/media/$MOUNT" && reboot (that was the safe flow I suggested).
What to do next
  • Run the one‑liner above in Slax. If it prints the ls -l output (shows the file and size ~2.3 MB), then reboot to Windows and attach that renamed file (mouselinuxlogs_win_20251022_025516.tgz) from the USB. If anything fails or the file isn’t listed, paste the ls and cp output here and I’ll guide the next step.
 

I don't think the K800 disconnected. It never has. I didn't have to power cycle it that's for sure.
 

Thanks — that’s a useful confirmation. Noted: the K800 stayed connected the whole time (never needed a power‑cycle). That’s an important clue.
What that implies (short)
  • Because the keyboard on the same Unifying receiver stayed connected while the MX Master channel dropped, this points more at a mouse‑session/radio or mouse/receiver pairing problem (or the mouse itself) rather than the whole receiver/USB port dying. I explained why those two outcomes mean different next steps earlier.
Immediate next steps — pick one and tell me when it’s done
A) If you haven’t yet created the Windows‑safe copy on the USB (recommended)
  • Run this single Slax one‑liner as root (it copies with a safe name, flushes, shows the file). It’s the full flow in one command:
MOUNT=$(ls /media | head -n1) && \
cp "/media/$MOUNT/mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz" "/media/$MOUNT/mouselinuxlogs_win_20251022_025516.tgz" && \
sync && \
ls -l "/media/$MOUNT/mouselinuxlogs_win_20251022_025516.tgz"
  • If that prints the file (size ~2.3 MB), then unmount and reboot to Windows:
    umount "/media/$MOUNT" && reboot
  • After Windows comes up, attach mouselinuxlogs_win_20251022_025516.tgz here and I’ll parse it immediately.
B) If the Windows‑safe tarball still won’t appear in Windows (or you prefer not to reboot)
  • Extract and paste the small snippets I need from the tarball while still in Slax (you can paste them into the forum reply). Run these lines in Slax and paste the full outputs here:
1) Kernel USB messages around the drops:
tar -xOzf /media/$(ls /media | head -n1)/mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz dmesg_live.log | grep -n -E '02:42:|02:44:|02:48:|02:50:' -C3
2) lsusb before/after:
echo "---- lsusb_before ----"
tar -xOzf /media/$(ls /media | head -n1)/mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz lsusb_before.txt
echo "---- lsusb_after ----"
tar -xOzf /media/$(ls /media | head -n1)/mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz lsusb_after.txt
3) (Optional) the head of the mouse event log:
echo "---- mouse_event_hexdump (head) ----"
tar -xOzf /media/$(ls /media | head -n1)/mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz mouse_event_hexdump.log | head -n 200
Why I’m asking for those exact snippets
  • I’ll look for kernel lines like “usb X‑Y: USB disconnect”, “reset high‑speed USB device”, or xhci_hcd messages (host/controller reset) versus the receiver staying present in lsusb while input events stop (radio/session loss). That exact distinction tells us whether to fix the Windows host (drivers/BIOS/power) or focus on mouse/receiver (re‑pair/firmware/RMA).
If you want a quick mitigation to try now (while we wait for logs)
  1. Put the Unifying receiver on the passive UGreen USB‑2.0 extension in a rear motherboard USB2 port and test. This fixes many intermittent Unifying problems.
  2. Disable USB selective suspend and uncheck “Allow the computer to turn off this device to save power” for USB hubs in Device Manager (low‑risk, often helps). I can paste exact commands for these if you want.
Tell me which you’ll do now:
  • Run the one‑liner to create the safe tarball and then attach it from Windows, OR
  • Extract & paste the dmesg + lsusb snippets from Slax here (I’ll parse them), OR
  • Try the quick mitigation (extension + power settings) and report the result.
I’ll stay here and parse the logs as soon as you attach/paste them — then I’ll give the single next action.
 

Permanent disconnect was at the exact second I posted #91.
Time: 03:00 but I do not have a record of the seconds.
 

Thanks — that’s an important detail. The fact the K800 never dropped (you didn’t need to power‑cycle it) is useful — it strongly suggests the Unifying receiver stayed enumerated while the MX Master 3 lost its channel, so the problem is more likely a mouse‑specific/session issue (or the mouse’s radio/firmware) than a full USB/receiver removal. I’m seeing the same “K800 stayed connected” notes in your session.
What that means (brief)
  • If the receiver had been removed/reset by the host, both devices would usually disappear from the bus. Because the keyboard stayed up while the mouse channel dropped, the kernel/receiver likely remained present and the mouse stopped sending input (a per‑device radio/session failure) rather than the USB controller fully resetting. We’ll confirm in the logs below before deciding next steps.
Two quick options — pick one
1) Attach the tarball (fast for me to analyze)
  • If you can, attach the Windows‑safe tarball from your USB (the file you created in Slax; example name I recommended: mouselinuxlogs_20251022_025516.tgz or the original mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz). I’ll download and parse dmesg, lsusb and the input event capture and tell you exactly whether the kernel saw a USB disconnect or just an input gap, then give the single next action.
2) Paste three short snippets here (if you prefer not to attach)
  • Run these commands in Slax (one at a time) and paste their output into your reply. They’re the smallest pieces I need to decide:
  • Kernel USB lines around your disconnect times:
    tar -xOzf /media/$(ls /media | head -n1)/mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz dmesg_live.log | grep -n -E '02:42:|02:44:|02:48:|02:50:' -C3
  • lsusb before/after (shows whether the receiver vanished):
    tar -xOzf /media/$(ls /media | head -n1)/mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz lsusb_before.txt
    tar -xOzf /media/$(ls /media | head -n1)/mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz lsusb_after.txt
  • Short head of the mouse event capture (optional):
    tar -xOzf /media/$(ls /media | head -n1)/mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz mouse_event_hexdump.log | head -n 200
What I’ll look for in those snippets
  • If dmesg contains “usb … disconnect” / “reset high‑speed USB device” / xhci_hcd messages at the drop times → host/controller reset (host side).
  • If lsusb still lists the Unifying receiver but the mouse event trace stops → radio/session loss (device‑side).
    Because you confirmed the K800 stayed up, I expect the latter, but I’ll confirm from the snippets/tarball.
Short practical mitigations you can apply now (while we wait for logs)
  • Plug the Unifying receiver into the passive USB‑2.0 extension and into a rear motherboard USB2 port (UGreen cable). This fixes lots of intermittent Unifying issues.
  • Disable Windows USB selective suspend (powercfg /getactivescheme then set SUB_USB USBSELECTSUSPEND to 0 for AC and DC) and uncheck “Allow the computer to turn off this device to save power” on all USB Root Hubs in Device Manager.
  • If you use Logi Options+, check for mouse firmware updates and try re‑pairing the mouse (remove only the mouse from the Unifying receiver and re‑pair). These are low‑risk and often effective.
If the logs show it’s device‑side
  • I’ll recommend re‑pairing the mouse to the receiver and testing the pair on a second PC; if the mouse still needs a power‑cycle on another host, it’s likely the mouse (or that particular receiver channel) is flaky and a replacement (RMA) or trying a different Unifying receiver is the next step.
Next step for you
  • Tell me which you prefer: attach the tarball from the USB (mouselinuxlogs_20251022_025516.tgz or the original filename) or paste the three snippets (dmesg | lsusb_before | lsusb_after). I’ll parse immediately and give the single next action.
 

Thanks — that’s an important datapoint. Since the K800 stayed connected the whole time, that narrows the likely causes significantly.
Quick interpretation (short)
  • The keyboard remaining connected while the MX Master channel permanently died in Linux strongly points to a mouse‑specific/session problem (mouse or its radio/firmware/pairing) rather than a full receiver or USB‑port failure.
  • You’ve already seen transient auto‑reconnects in Slax earlier (OFF → blink → SOLID) but now a permanent Linux failure occurred — that shifts the balance toward hardware/firmware or an intermittently failing mouse/receiver combination (or extreme RF/environmental glitch).
What I recommend next (priority ordered — do 1 → 2 → 3 until fixed)
1) Try the 80% fix: receiver on a passive USB‑2.0 extension in a rear motherboard USB2 port (your UGreen cable)
  • Plug the Unifying receiver into the passive USB‑2.0 extension and use a rear motherboard USB2 port. Place the dongle on the desk ~20–50 cm from the mouse. Many Unifying/receiver issues are fixed this way. If it fixes it, you can stop here.
2) Re‑pair and update firmware
  • Re‑pair only the mouse with the Unifying utility (remove the mouse pairing, then re‑pair to the Unifying receiver). Don’t unpair the K800 unless you want to test keyboardless.
  • Install Logi Options+ (or Unifying software) and check for a firmware update for the mouse/receiver — update if available. If a firmware update is offered, apply it and retest. (These steps fix session/pairing bugs.)
3) Test combinations to isolate (fast, decisive)
  • Test A: Mouse + same receiver on a different PC (you already did a cross‑test on the HP server and it was stable — that’s useful evidence). If it’s stable elsewhere but now permanently dropped in Linux on this machine, that suggests environment/hardware interaction.
  • Test B: Try the mouse on Bluetooth (if the MX Master model supports Bluetooth). If Bluetooth is stable while Unifying drops, that isolates the Unifying link/receiver.
  • Test C: If you have another Unifying receiver, try that receiver with the mouse. If the problem follows the mouse regardless of receiver, the mouse is likely at fault.
4) Collect decisive logs if the problem reproduces (what to run right after a drop)
  • In Windows (run immediately after the next drop — do NOT reboot), open PowerShell as Admin and run this block to capture device and recent System USB/Kernel‑PnP events:
$start=(Get-Date).AddMinutes(-10)
Get-PnpDevice -PresentOnly | Where-Object { $_.InstanceId -match 'VID_046D|VID0A5C' } | Format-List FriendlyName,InstanceId,Status
Get-WinEvent -FilterHashtable @{LogName='System'; StartTime=$start} | Where-Object { $
.Message -match 'USB|usb|Kernel-PnP|USBHUB|UsbHub|reset|removed|disconnect' } | Select-Object TimeCreated, ProviderName, Id, LevelDisplayName, Message | Format-List
  • Paste the output here and I’ll read it and give the single next action (driver/BIOS or RMA).
5) If you cannot attach the full Slax tarball, paste these small Slax snippets (I can parse those)
  • Kernel USB lines around the drop(s): extract ±30s dmesg lines for the timestamp(s). In Slax run:
    tar -xOzf /media/$(ls /media | head -n1)/mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz dmesg_live.log | grep -n -E '02:42:|02:44:|02:48:|02:50:|03:00:' -C3
  • lsusb before/after:
    tar -xOzf /media/$(ls /media | head -n1)/mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz lsusb_before.txt
    tar -xOzf /media/$(ls /media | head -n1)/mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz lsusb_after.txt
  • mouse event head (optional):
    tar -xOzf /media/$(ls /media | head -n1)/mouselinuxlogs_2025-10-22T02:55:16+00:00.tgz mouse_event_hexdump.log | head -n 200
If you paste those (especially the dmesg and lsusb outputs) I’ll parse immediately and say exactly whether the kernel saw a USB enumeration removal (host/controller reset) or whether the receiver stayed present but input stopped (radio/session loss). Those exact distinctions determine the one decisive next step.
6) If none of the above fixes it
  • If the mouse keeps requiring a power‑cycle (and the keyboard on the same receiver never drops), and a different receiver or Bluetooth also fails, it’s reasonable to RMA the mouse with Logitech (explain that keyboard stayed connected while mouse channel dropped and required power‑cycle; include your cross‑test results).
Quick checklist you can run in the next 30–60 minutes
  • Plug receiver into UGreen passive extension into rear USB2 port — test.
  • Re‑pair mouse to Unifying receiver (mouse only).
  • Open Logi Options+ and update firmware if available.
  • If it drops again, capture PowerShell output (the two commands above) and attach it here, or extract the Slax dmesg/lsusb snippets and paste them.
If you want, I’ll:
  • Wait while you try the passive extension and report back; or
  • Wait while you run the Slax extraction commands (I gave them above) and paste the results here so I can analyze immediately; or
  • Walk you step‑by‑step through re‑pairing and firmware update in Logi Options+.
Summary (single sentence)
  • Keyboard stayed connected → most likely a mouse‑specific/session issue (mouse firmware/hardware or pairing) — try the passive USB2 extension and a re‑pair/firmware update, then send me the Slax/Windows logs if it still drops and I’ll give the single next action. fileciteturn37file4turn37file12
Which of the three do you want to do first — try the UGreen extension now, or extract and paste the Slax dmesg+lsusb snippets so I can analyze right away?
 

I am going to do both Steps A and B.
 

Back
Top