|
| 1 | +## Framework Enhanced Diagnostic Tool aka "combined.sh" |
| 2 | + |
| 3 | +This intelligent diagnostic script collects and analyzes system logs from your Framework laptop, automatically detecting hardware issues and providing actionable recommendations in plain English. It's specifically designed for Framework laptops with model-aware analysis and Framework-specific troubleshooting guidance. |
| 4 | + |
| 5 | +## Table of Contents |
| 6 | + |
| 7 | +- [TL;DR - Quick Start](#tldr---quick-start) |
| 8 | +- [Key Features](#key-features) |
| 9 | +- [Which distros does this work on?](#which-distros-does-this-work-on) |
| 10 | +- [How to use this tool?](#how-to-use-this-tool) |
| 11 | + - [Prerequisites](#prerequisites) |
| 12 | + - [Quick Start](#quick-start) |
| 13 | +- [Diagnostic Options](#diagnostic-options) |
| 14 | + - [1. Last X Minutes](#1-last-x-minutes-) |
| 15 | + - [2. Last 24 Hours](#2-last-24-hours-) |
| 16 | + - [3. Specific Time Range](#3-specific-time-range-) |
| 17 | + - [4. Filter Previously Created Log File](#4-filter-previously-created-log-file-) |
| 18 | +- [Understanding the Results](#understanding-the-results) |
| 19 | + - [System Information](#-system-information) |
| 20 | + - [Intelligent Recommendations](#-intelligent-recommendations) |
| 21 | + - [Pattern Analysis](#-pattern-analysis) |
| 22 | + - [Framework-Specific Features](#-framework-specific-features) |
| 23 | +- [Example Output](#example-output) |
| 24 | +- [When to Contact Support](#when-to-contact-support) |
| 25 | +- [Quick Commands](#quick-commands) |
| 26 | +- [Framework Resources](#framework-resources) |
| 27 | +- [Advanced Information](#advanced-information) |
| 28 | + |
| 29 | +### TL;DR - Quick Start |
| 30 | + |
| 31 | +**Download and run immediately:** |
| 32 | +```bash |
| 33 | +curl -s https://raw.githubusercontent.com/FrameworkComputer/linux-docs/main/log-helper/combined.sh -o combined.sh && chmod +x combined.sh && bash combined.sh |
| 34 | +``` |
1 | 35 |
|
2 |
| -## Framework Log Helper aka "combined.sh" |
| 36 | +Choose option 1 or 2, check the "INTELLIGENT RECOMMENDATIONS" section in the output for actionable solutions. |
3 | 37 |
|
4 |
| -This script collects and analyzes system logs from your computer, helping Framework support to identify potential issues or errors. |
5 |
| -It can also gather logs from specific time ranges or filter existing logs for keywords, providing summaries of potential problems related to graphics, networking, and critical sytem errors. |
| 38 | +--- |
6 | 39 |
|
7 |
| -### Which distros does this work on? |
| 40 | +### Key Features |
8 | 41 |
|
9 |
| -**This is tested to work with the following Linux distros.** |
| 42 | +- **🔍 Intelligent Issue Detection**: Automatically identifies GPU hangs, thermal problems, WiFi issues, USB connection problems, and more |
| 43 | +- **🖥️ Framework-Specific Analysis**: Detects your exact Framework model and provides model-specific recommendations |
| 44 | +- **📋 Plain English Recommendations**: Translates technical errors into clear, actionable advice |
| 45 | +- **🌡️ Real-Time Hardware Monitoring**: Shows current temperatures, power status, and connectivity |
| 46 | +- **⚡ Smart Noise Filtering**: Focuses on actual problems, ignoring routine system operations |
| 47 | +- **🔧 Comprehensive Hardware Detection**: Identifies your GPU, WiFi card, storage, RAM, and expansion cards |
10 | 48 |
|
11 |
| -- Ubuntu |
12 |
| -- Fedora |
13 |
| -- Bazzite/Project Bluefin (curl is installed already) |
14 |
| -- (This "should work" on anything using curl with sane paths to dmesg and journalctl) |
| 49 | +### Which distros does this work on? |
15 | 50 |
|
16 |
| -### How to use this tool? |
| 51 | +**This tool works with all major Linux distributions and automatically installs required packages:** |
17 | 52 |
|
18 |
| -#### |
19 |
| -- [Deep dive into how it works](https://github.com/FrameworkComputer/linux-docs/blob/main/log-helper/how-it-works.md#how-it-works). |
20 |
| -- [Troubleshooting common issues](https://github.com/FrameworkComputer/linux-docs/blob/main/log-helper/how-it-works.md#troubleshooting). |
| 53 | +- **Ubuntu/Debian/Linux Mint** (officially supported by Framework) |
| 54 | +- **Fedora** (officially supported by Framework) |
| 55 | +- **Bazzite/Project Bluefin** (officially supported by Framework) |
| 56 | +- **Arch Linux/Manjaro/EndeavourOS** (community supported) |
| 57 | +- **openSUSE Tumbleweed/Leap** (community supported) |
| 58 | +- **NixOS** (community supported) |
| 59 | +- **Pop!_OS** (community supported) |
21 | 60 |
|
22 |
| -**For customer self-support, this is useful in that you can grab your logs from any of the three options:** |
| 61 | +### How to use this tool? |
23 | 62 |
|
24 |
| -### Install Curl |
| 63 | +#### Prerequisites |
25 | 64 |
|
26 |
| -Curl should already be installed, but just in case: |
| 65 | +Most systems already have curl installed. If needed: |
27 | 66 |
|
28 |
| -#### Fedora |
29 |
| -``` |
| 67 | +**Fedora:** |
| 68 | +```bash |
30 | 69 | sudo dnf install curl -y
|
31 | 70 | ```
|
32 | 71 |
|
33 |
| -or |
| 72 | +**Ubuntu/Debian:** |
| 73 | +```bash |
| 74 | +sudo apt install curl -y |
| 75 | +``` |
| 76 | + |
| 77 | +**Bazzite/Bluefin:** Already included, no installation needed. |
34 | 78 |
|
35 |
| -#### Ubuntu |
| 79 | +#### Quick Start |
| 80 | + |
| 81 | +**Download and run the diagnostic tool:** |
| 82 | +```bash |
| 83 | +curl -s https://raw.githubusercontent.com/FrameworkComputer/linux-docs/main/log-helper/combined.sh -o combined.sh && chmod +x combined.sh && bash combined.sh |
36 | 84 | ```
|
37 |
| -sudo apt install curl -y |
| 85 | + |
| 86 | +**For future runs:** |
| 87 | +```bash |
| 88 | +./combined.sh |
38 | 89 | ```
|
39 | 90 |
|
40 |
| -or |
| 91 | +### Diagnostic Options |
41 | 92 |
|
42 |
| -#### Bazzite or Bluefin |
| 93 | +#### 1. Last X Minutes ⏰ |
| 94 | +**Best for recent issues** |
43 | 95 |
|
44 |
| -Simply goto the next step below to run it, nothing else needs to be added. |
| 96 | +- Select option `1` |
| 97 | +- Enter the number of minutes (e.g., `30` for issues that happened 30 minutes ago) |
| 98 | +- The tool will analyze logs from that timeframe and provide recommendations |
45 | 99 |
|
46 |
| -#### (Either distro) Then run: |
| 100 | + |
47 | 101 |
|
48 |
| -``` |
49 |
| -curl -s https://raw.githubusercontent.com/FrameworkComputer/linux-docs/main/log-helper/combined.sh -o combined.sh && clear && bash combined.sh |
50 |
| -``` |
| 102 | + |
51 | 103 |
|
52 |
| -<br /> |
| 104 | +**Example use cases:** |
| 105 | +- Graphics crashed while gaming |
| 106 | +- WiFi suddenly disconnected |
| 107 | +- System became unresponsive |
| 108 | +- Thermal throttling during heavy workload |
53 | 109 |
|
54 |
| -#### Running the script in the future |
| 110 | +#### 2. Last 24 Hours 📅 |
| 111 | +**Best for ongoing or intermittent issues** |
55 | 112 |
|
56 |
| ->After the install, you can run going forward with the following in the HOME directory. So merely opening a terminal and running this will work if the original script has not been moved.<br /> |
| 113 | +- Select option `2` |
| 114 | +- Analyzes the full day of system logs |
| 115 | +- Identifies patterns like recurring WiFi drops or thermal cycling |
57 | 116 |
|
58 |
| -``` |
59 |
| -bash combined.sh |
60 |
| -``` |
61 |
| -<br /><br /> |
| 117 | +**Example use cases:** |
| 118 | +- Random system freezes throughout the day |
| 119 | +- Intermittent USB connection issues |
| 120 | +- Gradual performance degradation |
| 121 | +- Battery or charging problems |
| 122 | + |
| 123 | +#### 3. Specific Time Range 🎯 |
| 124 | +**Best when you know exactly when the issue occurred** |
| 125 | + |
| 126 | +- Select option `3` |
| 127 | +- Enter start time: `YYYY-MM-DD HH:MM` (24-hour format) |
| 128 | +- Enter end time: `YYYY-MM-DD HH:MM` |
62 | 129 |
|
63 |
| ----------------------------------------------------------- |
| 130 | +**Example:** |
| 131 | +- Start: `2025-01-15 14:30` (Jan 15, 2:30 PM) |
| 132 | +- End: `2025-01-15 15:00` (Jan 15, 3:00 PM) |
64 | 133 |
|
65 |
| -#### Last X Minutes (How many minutes ago do you wish to gather logs from) |
| 134 | +#### 4. Filter Previously Created Log File 🔍 |
| 135 | +**For advanced analysis of existing logs** |
66 | 136 |
|
67 |
| -- Paste in the code mentioned previously, press enter, type in option 1. |
| 137 | +- Run after creating a log file with options 1-3 |
| 138 | +- Search for specific keywords or phrases |
| 139 | +- Creates `filtered_log.txt` with matching entries |
68 | 140 |
|
69 |
| -- Type in the Enter the number of minutes you wish to gather logs from. |
70 |
| ->For example, if the issue happened about 15 minutes ago, you might choose to type in 25 to gather logs from 25 minutes ago. This gives you a buffer of time in case you're not sure. |
| 141 | +### Understanding the Results |
71 | 142 |
|
72 |
| -- Once the minutes are typed into the terminal as shown below (using your number keys), press enter. Enter your sudo password when prompted. |
| 143 | +The diagnostic tool creates `combined_log.txt` with several sections: |
73 | 144 |
|
74 |
| -- First progress bar will run, then the second one. Once completed, the log file combined_log.txt will appear in your home directory. |
75 |
| -<br /> |
| 145 | +#### 🔧 System Information |
| 146 | +- Framework model detection |
| 147 | +- Hardware specifications (GPU, WiFi, RAM, storage) |
| 148 | +- Current temperatures and power status |
| 149 | +- Linux distribution compatibility status |
76 | 150 |
|
77 |
| -  |
| 151 | +#### ⚡ Intelligent Recommendations |
| 152 | +**Color-coded by severity:** |
78 | 153 |
|
79 |
| -<br /><br /> |
| 154 | +- **🔴 IMMEDIATE**: Stop using immediately (dangerous temperatures, hardware faults) |
| 155 | +- **🟠 URGENT**: Address soon (GPU crashes, memory issues, storage problems) |
| 156 | +- **🟡 IMPORTANT**: Should fix (USB issues, WiFi problems, audio issues) |
| 157 | +- **🔵 INFORMATIONAL**: Status updates (distro compatibility, normal thermal behavior) |
| 158 | +- **🟢 PREVENTIVE**: Proactive suggestions (elevated temperatures, minor issues) |
80 | 159 |
|
81 |
| ----------------------------------------------------------- |
| 160 | +#### 📊 Pattern Analysis |
| 161 | +- WiFi stability (tracks disconnection frequency) |
| 162 | +- USB connection reliability |
| 163 | +- GPU stability monitoring |
| 164 | +- Thermal management effectiveness |
82 | 165 |
|
83 |
| -#### Last 24 hours (As it says, 24 hours from this moment of logs) |
| 166 | +#### 🎯 Framework-Specific Features |
84 | 167 |
|
85 |
| -- Paste in the code mentioned previously, press enter, type in option 2. |
86 |
| ->This will run a bit slower, depending on your log(s) size. |
| 168 | +**Model-Aware Recommendations:** |
| 169 | +- Framework Laptop 13: 60W charger verification |
| 170 | +- Framework Laptop 16: 180W charger verification + GPU module checks |
| 171 | +- Framework Desktop: Power supply diagnostics |
| 172 | +- Expansion card troubleshooting |
87 | 173 |
|
88 |
| -- First progress bar will run, then the second one. Once completed, the log file combined_log.txt will appear in your home directory. |
| 174 | +**Thermal Management:** |
| 175 | +- Modern AMD (7040+ series): Higher temperature tolerance (95°C normal) |
| 176 | +- Intel processors: Conservative thresholds (80°C watch point) |
| 177 | +- Model-specific cooling guidance |
89 | 178 |
|
90 |
| -<br /><br /> |
91 |
| ----------------------------------------------------------- |
| 179 | +**Hardware Detection:** |
| 180 | +- MediaTek WiFi cards (MT7921/MT7925) |
| 181 | +- Intel WiFi cards (iwlwifi) |
| 182 | +- AMD GPUs (RDNA 2/3) |
| 183 | +- Intel integrated graphics |
| 184 | +- Framework expansion cards |
92 | 185 |
|
93 |
| -#### Specific time range |
| 186 | +### Example Output |
94 | 187 |
|
95 |
| -- Paste in the code mentioned previously, press enter, type in option 3. |
| 188 | + |
96 | 189 |
|
97 |
| -- You will be asked for a START TIME. This is the beginning period you wish to gather logs from. Enter in the date and time in this format: YYYY-MM-DD HH:MM and then press enter. |
98 |
| ->You do not need to add minutes (MM) if you do not want to - this works fine with YYYY-MM-DD HH instead. Time must be military time. So for 2pm for example, that would be 14:00. |
99 | 190 |
|
100 |
| -**For all of the above examples, your log will be sent to combined_log.txt in your home directory.** |
| 191 | +``` |
| 192 | +🖥️ Framework Laptop 16 - checking GPU module and enhanced thermal envelope |
| 193 | +🌡️ Current CPU: 67°C via Tctl (Modern AMD: runs hot by design - watch at 90°C, throttles at 95°C, critical at 100°C, emergency at 105°C) |
| 194 | +✅ No issues detected |
| 195 | +
|
| 196 | +🔵 INFORMATIONAL Status: |
| 197 | +• [DISTRO_COMPATIBILITY] ✅ Your Linux distribution (fedora 42) is officially supported and tested by Framework for your Framework Laptop 16 → You should have the best experience and full hardware support |
| 198 | +``` |
101 | 199 |
|
| 200 | +### When to Contact Support |
102 | 201 |
|
103 |
| -**Note, each time you collect logs, you will be overwriting the previous combined_log.txt file.** |
| 202 | + |
104 | 203 |
|
105 |
| - |
| 204 | +**Contact Framework Support if you see:** |
| 205 | +- Multiple 🔴 IMMEDIATE or 🟠 URGENT recommendations |
| 206 | +- Repeated GPU crashes or system freezes |
| 207 | +- Hardware fault messages (Machine Check, MCE errors) |
| 208 | +- Persistent thermal issues despite cleaning |
106 | 209 |
|
107 |
| -<br /><br /> |
108 |
| ----------------------------------------------------------- |
| 210 | +**Include these files with your support ticket:** |
| 211 | +- `combined_log.txt` (the full diagnostic report) |
| 212 | +- Screenshots of any error messages |
| 213 | +- Description of when the issue occurs |
109 | 214 |
|
110 |
| -#### Filter previously created log file |
| 215 | +### Quick Commands |
111 | 216 |
|
112 |
| ->This is an option used by support and those who know what they're look for. Looking at your logs, you are going to see a ton of verbose messages. 99.9% of the "errors" or warnings you see are fine. This is normal. Even some of the items that appear in "Focused Summary of Potential Issues" and "General Summary of Potential Issues (excluding gnome-shell errors)" are fine. We simply want to gather everything that logs collect. And while the summaries are verbose, they are not an automatic indication that anything is wrong. For newer users, we recommend leaving option 4 to Framework Support staff. |
| 217 | +After running the diagnostic: |
113 | 218 |
|
114 |
| -- Collect logs using one of the methods indicated above. Note, each time you collect logs, you will be overwriting the previous combined_log.txt file. |
| 219 | +```bash |
| 220 | +# View full report |
| 221 | +cat combined_log.txt |
115 | 222 |
|
116 |
| -- Paste in the code mentioned previously, press enter, type in option 4. |
| 223 | +# View only recommendations |
| 224 | +grep -A 20 "INTELLIGENT RECOMMENDATIONS" combined_log.txt |
| 225 | + |
| 226 | +# Monitor temperatures in real-time |
| 227 | +watch -n 2 sensors |
| 228 | + |
| 229 | +# Check current system status |
| 230 | +sensors |
| 231 | +``` |
117 | 232 |
|
118 |
| -- You will be asked two questions; do you wish to grep for a keyword or a key phrase. |
119 |
| -> Make your selection if you are familiar with Linux. If you are not, this is an ideal time to stop, open a support ticket. When support replies, send them the combined_log.txt file in your home directory. |
| 233 | +### Framework Resources |
120 | 234 |
|
121 |
| -- If you selected Grep for a key phrase, type in the phrase without any quotes. Press enter. |
| 235 | +**Support & Documentation:** |
| 236 | +- **Support Center**: https://frame.work/support |
| 237 | +- **Linux Guides**: https://frame.work/linux |
| 238 | +- **Community Forum**: https://community.frame.work/ |
| 239 | +- **Knowledge Base**: https://knowledgebase.frame.work/categories/linux-S1IUEcFbkx |
| 240 | +- **Linux Tools and Scripts**: https://knowledgebase.frame.work/linux-on-framework-tools-and-scripts-rymax1Jdyg |
| 241 | +- **Framework Guides**: https://guides.frame.work/ |
| 242 | +- **Enhanced WiFi Analyzer**: https://github.com/FrameworkComputer/linux-docs/tree/main/Enhanced-WiFi-Analyzer |
122 | 243 |
|
123 |
| -- If you selected Grep for a keyword, type in the keyword without. Press enter. |
| 244 | +### Advanced Information |
124 | 245 |
|
125 |
| -- Your filtered_log.txt located in your home directory file will contain your query. |
126 |
| -- |
127 |
| - |
| 246 | +- [Deep dive into how it works](https://github.com/FrameworkComputer/linux-docs/blob/main/log-helper/how-it-works.md#how-it-works) |
| 247 | +- [Troubleshooting common issues](https://github.com/FrameworkComputer/linux-docs/blob/main/log-helper/how-it-works.md#troubleshooting) |
128 | 248 |
|
129 |
| -<br /><br /> |
| 249 | +**Note:** Each diagnostic run overwrites the previous `combined_log.txt` file. Save important reports before running again. |
0 commit comments