diff --git a/AppImage/components/hardware.tsx b/AppImage/components/hardware.tsx
index e4c3e509..631a616f 100644
--- a/AppImage/components/hardware.tsx
+++ b/AppImage/components/hardware.tsx
@@ -1583,6 +1583,13 @@ export default function Hardware() {
{selectedPCIDevice.device}
+ {selectedPCIDevice.sdevice && (
+
+ Product Name
+ {selectedPCIDevice.sdevice}
+
+ )}
+
Vendor
{selectedPCIDevice.vendor}
diff --git a/AppImage/scripts/ai_providers/ollama_provider.py b/AppImage/scripts/ai_providers/ollama_provider.py
index 34f79d0e..e17bcb08 100644
--- a/AppImage/scripts/ai_providers/ollama_provider.py
+++ b/AppImage/scripts/ai_providers/ollama_provider.py
@@ -63,8 +63,10 @@ class OllamaProvider(AIProvider):
# Cloud models (e.g., kimi-k2.5:cloud, minimax-m2.7:cloud) need longer timeout
# because requests go through: ProxMenux -> Ollama -> Cloud Provider -> back
+ # Local models also need generous timeout for slower hardware (e.g., low-end CPUs,
+ # no GPU acceleration, larger models like 8B parameters)
is_cloud_model = ':cloud' in self.model.lower()
- timeout = 120 if is_cloud_model else 30 # 2 minutes for cloud, 30s for local
+ timeout = 120 if is_cloud_model else 90 # 2 minutes for cloud, 90s for local
try:
result = self._make_request(url, payload, headers, timeout=timeout)
diff --git a/AppImage/scripts/flask_server.py b/AppImage/scripts/flask_server.py
index 6c753a04..8178ce0a 100644
--- a/AppImage/scripts/flask_server.py
+++ b/AppImage/scripts/flask_server.py
@@ -5644,6 +5644,10 @@ def get_hardware_info():
'device': device_name,
'class': device_class
}
+ # Add subsystem device name if available (e.g., "HBA 9400-16i" for SAS controllers)
+ sdevice = current_device.get('SDevice', '')
+ if sdevice:
+ pci_device['sdevice'] = sdevice
if network_subtype:
pci_device['network_subtype'] = network_subtype
hardware_data['pci_devices'].append(pci_device)