Kaynağa Gözat

Improve HMS error descriptions and wiki links

- Add ~80 HMS error code descriptions covering:
  - 0300 series: temperature, fan, motor, force sensor, build plate errors
  - 0500 series: storage, network, module communication, camera errors
  - 0700 series: AMS communication, filament, hotend matching errors
  - 0C00 series: toolhead camera, lidar, AI detection errors
  - 1200 series: external spool errors
- Fix 0500_0400_0002_0043 description (toolhead camera dirty, not file system)
- Always link to HMS home page (wiki.bambulab.com/en/hms/home) instead of
  specific error pages that may not exist

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
maziggy 5 ay önce
ebeveyn
işleme
3a8cdba1e3

+ 153 - 19
frontend/src/components/HMSErrorModal.tsx

@@ -11,23 +11,163 @@ interface HMSErrorModalProps {
 
 // HMS error code descriptions keyed by full HMS code (attr + code combined)
 // Format: "AAAA_BBBB_CCCC_DDDD" where AAAA_BBBB is from attr, CCCC_DDDD is from code
+// Sources: Bambu Lab Wiki (wiki.bambulab.com) and community databases
 const HMS_DESCRIPTIONS: Record<string, string> = {
-  // H2D specific errors
-  '0700_5500_0002_0001': 'A binding error occurred between AMS and the extruder. Please perform AMS initialization again.',
-  '0500_0300_0002_000E': 'Some modules are incompatible with the printer firmware version. Please update firmware.',
-  // Common errors
+  // ============ 0300 Series: MC (Motion Controller) ============
+  // Temperature errors (0300_0100)
+  '0300_0100_0001_0001': 'The heatbed temperature has exceeded the limit. Please check if the thermistor is functioning properly.',
+  '0300_0100_0001_0002': 'The heatbed temperature is abnormal. The sensor may be disconnected or damaged.',
+  '0300_0100_0001_0003': 'The nozzle temperature has exceeded the limit. Please check if the thermistor is functioning properly.',
+  '0300_0100_0001_0004': 'The nozzle temperature is abnormal. The sensor may be disconnected or damaged.',
+  '0300_0100_0001_0005': 'The heatbed temperature sensor may be shorted. Please check the connection.',
+  '0300_0100_0001_0006': 'The heatbed temperature is abnormal; the sensor may have a short circuit.',
   '0300_0100_0002_0054': 'The heatbed temperature is abnormal. The sensor may be disconnected or damaged.',
+  // Fan errors (0300_0300)
+  '0300_0300_0001_0001': 'The hotend cooling fan speed is too slow or stopped. It may be stuck or the connector may not be plugged in properly.',
+  '0300_0300_0001_0002': 'The part cooling fan speed is too slow or stopped. Please check if it is stuck or damaged.',
+  '0300_0300_0001_0003': 'The auxiliary fan speed is too slow or stopped. Please check if it is stuck or damaged.',
+  '0300_0300_0001_0004': 'The chamber fan speed is too slow or stopped. Please check if it is stuck or damaged.',
+  '0300_0400_0002_0001': 'The speed of part cooling fan is too slow or stopped.',
+  '0300_3500_0001_0001': 'The MC module cooling fan speed is too slow or stopped. It may be stuck, or the connector may not be plugged in properly.',
+  // Motor errors (0300_0600, 0300_0700, 0300_0800)
+  '0300_0400_0001_0001': 'Motor X axis has lost steps. Home the printer and retry.',
+  '0300_0400_0001_0002': 'Motor Y axis has lost steps. Home the printer and retry.',
+  '0300_0400_0001_0003': 'Motor Z axis has lost steps. Home the printer and retry.',
+  '0300_0400_0001_0004': 'Motor E axis has lost steps. Check extruder for clogs.',
+  '0300_0600_0001_0001': 'Motor-A has an open-circuit. There may be a loose connection, or the motor may have failed.',
+  '0300_0600_0001_0002': 'Motor-A has a short-circuit. It may have failed.',
+  '0300_0600_0001_0003': 'The resistance of Motor-A is abnormal, the motor may have failed.',
+  '0300_0700_0001_0001': 'Motor-B has an open-circuit. The connection may be loose, or the motor may have failed.',
+  '0300_0700_0001_0002': 'Motor-B has a short-circuit. It may have failed.',
+  '0300_0800_0001_0001': 'Motor-Z has an open-circuit.',
+  '0300_0800_0001_0002': 'Motor-Z has a short-circuit.',
+  '0300_E300_0001_0002': 'MC communication with hotend holder motor driver failed. Please check if the connection cable is properly plugged in.',
+  // Force sensor errors (0300_0A00)
+  '0300_0A00_0001_0004': 'An external disturbance was detected on force sensor 1. The heatbed plate may have touched something outside the heatbed.',
+  '0300_0A00_0001_0005': 'Force sensor 1 detected unexpected continuous force. The heatbed may be stuck, or the analog front end may be broken.',
+  // Resonance/calibration (0300_1000)
+  '0300_1000_0001_0001': 'Failed to home X axis. Check for obstructions.',
+  '0300_1000_0001_0002': 'Failed to home Y axis. Check for obstructions.',
+  '0300_1000_0001_0003': 'Failed to home Z axis. Check for obstructions.',
+  '0300_1000_0002_0001': 'The 1st order mechanical resonance mode of X axis is low.',
+  '0300_1000_0002_0002': 'The 1st order mechanical resonance mode of Y axis is low.',
+  // Build plate (0300_0D00)
+  '0300_0D00_0001_0001': 'Build plate is not installed. Please install the build plate.',
+  '0300_0D00_0001_0002': 'Build plate type mismatch. Please check the plate matches your print settings.',
+  '0300_0D00_0001_0003': 'The build plate may not be properly placed. Please check the plate is correctly positioned.',
+  '0300_0D00_0002_0001': 'Foreign objects detected on the build plate. Please clean the build plate.',
+
+  // ============ 0500 Series: Mainboard/System ============
+  // Media/Storage (0500_0100)
+  '0500_0100_0002_0001': 'The media pipeline is malfunctioning. Please restart the printer.',
+  '0500_0100_0002_0002': 'USB camera is not connected.',
+  '0500_0100_0002_0003': 'USB camera is malfunctioning. Please check the connection.',
+  '0500_0100_0003_0004': 'Not enough space on SD Card. Please free up space or replace the card.',
+  '0500_0100_0003_0005': 'Error reading SD Card. Please reinsert or replace the card.',
+  '0500_0100_0003_0006': 'SD Card is unformatted. Please format to FAT32.',
+  '0500_0100_0005_0000': 'Motor X axis lost steps.',
+  '0500_0100_0005_0001': 'Motor Y axis lost steps.',
+  '0500_0100_0005_0002': 'Motor Z axis lost steps.',
   '0500_0100_0005_0005': 'Motor driver overheated. Let the printer cool down.',
   '0500_0100_0005_0006': 'Motor driver communication error.',
+  // Network (0500_0200)
+  '0500_0200_0001_0001': 'WiFi module is malfunctioning. Please restart the printer.',
+  '0500_0200_0002_0001': 'Failed to connect to internet. Please check your network connection.',
+  '0500_0200_0002_0002': 'Failed to login to device. Please check your credentials.',
+  '0500_0200_0002_0003': 'Network connection unstable. Please move printer closer to router.',
+  // Module communication (0500_0300)
+  '0500_0300_0001_0001': 'The MC module is malfunctioning. Please restart the device.',
+  '0500_0300_0001_0002': 'The toolhead is malfunctioning. Please restart the device.',
+  '0500_0300_0001_0003': 'The AMS module is malfunctioning. Please restart the device.',
+  '0500_0300_0001_000A': 'System state is abnormal. Please restore factory settings.',
+  '0500_0300_0001_000B': 'The screen is malfunctioning. Please restart the device.',
+  '0500_0300_0001_000C': 'The MC motor controller module is malfunctioning. Please power off, check the connection, and restart the device.',
+  '0500_0300_0002_000C': 'Wireless hardware error. Please turn off/on WiFi or restart the device.',
+  '0500_0300_0002_000E': 'Some modules are incompatible with the printer firmware version. Please update firmware.',
+  '0500_0300_0002_0020': 'USB flash drive capacity is insufficient to cache print files.',
+  // System errors (0500_0500)
+  '0500_0500_0001_0007': 'System error. Please restart the device.',
+  // Print job/Cloud (0500_0400)
+  '0500_0400_0001_0001': 'Failed to download print job. Please check your network connection.',
+  '0500_0400_0001_0002': 'Failed to report print state. Please check your network connection.',
+  '0500_0400_0001_0003': 'The print file is unreadable. Please resend the print job.',
+  '0500_0400_0001_0004': 'The print file is unauthorized.',
+  '0500_0400_0001_0005': 'Print job download timeout. Please check network and retry.',
+  '0500_0400_0001_0006': 'Failed to resume previous print.',
+  '0500_0400_0001_0049': 'Cloud connection error. Please check your network and retry.',
+  '0500_0400_0001_0051': 'Emergency Stop Button is not in the right position. Please check and reset.',
+  '0500_0400_0001_0052': 'Safety Key is not inserted. Please follow the Wiki to install it.',
+  // Camera/Module errors (0500_0400_0002)
+  '0500_0400_0002_0001': 'Print file transfer failed. Please retry.',
+  '0500_0400_0002_0002': 'Print file verification failed. Please resend the file.',
+  '0500_0400_0002_0030': 'The BirdsEye Camera is not installed. Please power off printer and install the camera.',
+  '0500_0400_0002_0031': 'The BirdsEye Camera is malfunctioning. Please check the connection.',
+  '0500_0400_0002_0032': 'The BirdsEye Camera is dirty or obscured. Please clean it.',
+  '0500_0400_0002_0033': 'Please plug in the module connector.',
+  '0500_0400_0002_0040': 'The chamber camera is not installed.',
+  '0500_0400_0002_0041': 'The chamber camera is malfunctioning.',
+  '0500_0400_0002_0042': 'The live camera is dirty or obscured. Please clean it and continue.',
+  '0500_0400_0002_0043': 'The toolhead camera is dirty or obscured. Please clean it and continue.',
+  '0500_0400_0002_0044': 'Camera initialization failed. Please restart the printer.',
+  '0500_0400_0002_0045': 'Camera communication error. Please check connections.',
+  // Screen/Display (0500_0600)
+  '0500_0600_0001_0001': 'Screen communication error. Please restart the device.',
+  '0500_0600_0002_0054': 'Screen firmware error. Please update firmware.',
+
+  // ============ 0700 Series: AMS (Automatic Material System) ============
+  '0700_0100_0001_0001': 'AMS is not responding. Please restart the printer.',
+  '0700_0100_0001_0002': 'AMS communication timeout. Check connections.',
   '0700_0100_0007_0001': 'AMS communication error.',
   '0700_0100_0007_0002': 'AMS filament runout.',
   '0700_0100_0007_0003': 'AMS filament not detected.',
+  '0700_2000_0001_0001': 'AMS slot 1 filament tangled or stuck.',
+  '0700_2000_0001_0002': 'AMS slot 2 filament tangled or stuck.',
+  '0700_2000_0001_0003': 'AMS slot 3 filament tangled or stuck.',
+  '0700_2000_0001_0004': 'AMS slot 4 filament tangled or stuck.',
+  '0700_2000_0002_0001': 'AMS motor overload. Check if filament is stuck.',
+  '0700_2000_0003_0001': 'AMS cutter is stuck. Please check and clear.',
+  '0700_2000_0003_0002': 'AMS cutter malfunction. Please check the cutter.',
+  '0700_4000_0001_0001': 'AMS humidity sensor error.',
+  '0700_4000_0001_0002': 'AMS desiccant needs replacement.',
+  '0700_5000_0001_0001': 'AMS RFID reader error. Unable to read filament info.',
+  '0700_5500_0002_0001': 'A binding error occurred between AMS and the extruder. Please perform AMS initialization again.',
+  // Filament/hotend matching (0700_7000, 0700_F000)
+  '0700_7000_0002_000A': 'Failed to get filament-hotend mapping table from the slicing file.',
+  '0700_F000_0002_0001': 'Filament and hotend matching failed. Please verify that the hotend in the hotend rack slot is correctly installed.',
+
+  // ============ 0C00 Series: XCam/Lidar ============
+  // Toolhead camera/Lidar (0C00_0100)
+  '0C00_0100_0001_0001': 'Toolhead Camera is offline. Please check the hardware connection.',
+  '0C00_0100_0001_0002': 'Micro Lidar initialization failed. Please restart.',
+  '0C00_0100_0001_0003': 'Micro Lidar synchronization abnormal.',
+  '0C00_0100_0001_0004': 'Toolhead Camera lens seems to be dirty. Please clean the lens.',
+  '0C00_0100_0001_0005': 'Micro Lidar OTP parameter abnormal.',
+  '0C00_0100_0001_0009': 'Chamber camera dirty.',
+  '0C00_0100_0001_000A': 'The Micro Lidar LED may be broken.',
+  '0C00_0100_0001_000B': 'Failed to calibrate Micro Lidar. Please make sure the calibration chart is clean and not obscured.',
+  '0C00_0100_0001_0011': 'The Live View Camera calibration failed, please recalibrate.',
+  '0C00_0100_0002_0008': 'Failed to get image from chamber camera.',
+  // AI detection (0C00_0100_000C)
+  '0C00_0100_000C_0001': 'First layer inspection detected defects. Check print adhesion.',
+  '0C00_0100_000C_0002': 'Spaghetti failure detected by AI monitoring.',
   '0C00_0100_000C_0003': 'First layer inspection failed.',
   '0C00_0100_000C_0004': 'Nozzle clog detected.',
+  '0C00_0100_000C_0005': 'Purged filament piled up in waste chute.',
   '0C00_0100_000C_8000': 'Foreign object detected on print bed.',
-  '0500_0100_0005_0000': 'Motor X axis lost steps.',
-  '0500_0100_0005_0001': 'Motor Y axis lost steps.',
-  '0500_0100_0005_0002': 'Motor Z axis lost steps.',
+  // Build plate detection (0C00_0300)
+  '0C00_0300_0002_000C': 'The build plate localization marker was not detected. Please check if the build plate is aligned correctly.',
+  '0C00_0300_0002_001C': 'Your nozzle seems to be covered with jammed or clogged material.',
+  // Live camera (0C00_0400)
+  '0C00_0400_0002_0026': 'Liveview Camera initialization failed, and some AI functions such as Spaghetti Detection will be disabled. Please restart the printer.',
+  // AI system (0C00_0200)
+  '0C00_0200_0001_0001': 'AI camera initialization failed.',
+  '0C00_0200_0001_0002': 'AI detection confidence low. Print may have issues.',
+
+  // ============ 1200 Series: External Spool (H2D/A1) ============
+  '1200_0100_0001_0001': 'External spool filament runout.',
+  '1200_0100_0001_0002': 'External spool filament stuck.',
+  '1200_0100_0002_0001': 'Failed to load filament from external spool.',
+  '1200_0100_0002_0002': 'Failed to unload filament from external spool.',
 };
 
 function getSeverityInfo(severity: number): { label: string; color: string; bgColor: string; Icon: typeof AlertTriangle } {
@@ -61,15 +201,9 @@ function getFullHMSCode(attr: number, code: number): string {
   return `${a1}${a2}_${a3}${a4}_${c1}${c2}_${c3}${c4}`;
 }
 
-function getHMSWikiUrl(attr: number, code: number, printerName: string): string {
-  // Construct wiki URL from attr and code
-  const fullCode = getFullHMSCode(attr, code);
-
-  // Use H2 wiki path for H2D printers, otherwise use X1 path
-  const isH2 = printerName.toLowerCase().includes('h2');
-  const basePath = isH2 ? 'h2' : 'x1';
-
-  return `https://wiki.bambulab.com/en/${basePath}/troubleshooting/hmscode/${fullCode}`;
+function getHMSHomeUrl(): string {
+  // HMS home page - searchable index of all error codes (always works)
+  return `https://wiki.bambulab.com/en/hms/home`;
 }
 
 export function HMSErrorModal({ printerName, errors, onClose }: HMSErrorModalProps) {
@@ -115,8 +249,8 @@ export function HMSErrorModal({ printerName, errors, onClose }: HMSErrorModalPro
                 const { label, color, bgColor, Icon } = getSeverityInfo(error.severity);
                 const codeNum = parseInt(error.code.replace('0x', ''), 16) || 0;
                 const fullHMSCode = getFullHMSCode(error.attr, codeNum);
-                const description = HMS_DESCRIPTIONS[fullHMSCode] || 'Unknown error. Click the link below for details.';
-                const wikiUrl = getHMSWikiUrl(error.attr, codeNum, printerName);
+                const description = HMS_DESCRIPTIONS[fullHMSCode] || 'Search the HMS wiki for more information.';
+                const hmsHomeUrl = getHMSHomeUrl();
                 const displayCode = `HMS_${fullHMSCode.replace(/_/g, '-')}`;
 
                 return (
@@ -135,7 +269,7 @@ export function HMSErrorModal({ printerName, errors, onClose }: HMSErrorModalPro
                         </div>
                         <p className="text-sm text-bambu-gray mb-2">{description}</p>
                         <a
-                          href={wikiUrl}
+                          href={hmsHomeUrl}
                           target="_blank"
                           rel="noopener noreferrer"
                           className="inline-flex items-center gap-1 text-xs text-bambu-green hover:underline"

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
static/assets/index-CZTNgITa.js


+ 1 - 1
static/index.html

@@ -23,7 +23,7 @@
 
     <!-- Splash screens for iOS -->
     <link rel="apple-touch-startup-image" href="/img/android-chrome-512x512.png" />
-    <script type="module" crossorigin src="/assets/index-BScx-4hV.js"></script>
+    <script type="module" crossorigin src="/assets/index-CZTNgITa.js"></script>
     <link rel="stylesheet" crossorigin href="/assets/index-CbCN6LSA.css">
   </head>
   <body>

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor