# Troubleshooting: Empty Camera List ## Problem ```bash curl http://localhost:8000/api/v1/cameras # Returns: {"cameras": [], "total": 0} ``` ## Understanding the Architecture ``` REST API ↓ SDK Bridge (gRPC) ↓ GeViSoft (GeViServer.exe) - Central video matrix ↓ MUST be connected to... ↓ GeViScope (GSCServer.exe) - Storage server ↓ Which has... ↓ IP Cameras (actual hardware) ``` **Key Point**: Cameras are connected to **GeViScope** (GSCServer.exe), not to GeViSoft (GeViServer.exe)! ## Root Cause GeViSoft (GeViServer.exe) is **NOT connected** to your local GeViScope (GSCServer.exe), so it has no cameras to return. ## Diagnostic Steps ### Step 1: Verify Both Services Are Running ```powershell Get-Process GeViServer,GSCServer ``` **Expected Output**: ``` ProcessName Id ----------- -- GeViServer 45612 ← GeViSoft (central matrix) GSCServer 19220 ← GeViScope (storage server with cameras) ``` ✅ Both should be running. ### Step 2: Check G-Core Server Configuration G-Core servers are connection definitions in TestMKS.set that tell GeViSoft which GeViScope servers to connect to. **Check current configuration**: 1. Stop SDK Bridge temporarily: `.\stop-services.ps1` 2. Open GeViSet (GeViSoft configuration tool) 3. Navigate to: **G-Core** or **GeViScope Servers** section 4. Look for entries pointing to GeViScope servers **What you're looking for**: - Entry with Host = `localhost` or `127.0.0.1` - Entry must be **Enabled** - Credentials must match GeViScope configuration ### Step 3: Is Local GeViScope in the Configuration? **Option A: Via GeViSet (Recommended)** 1. Open GeViSet 2. Check G-Core server list 3. Look for server with: - Host: `localhost` or `127.0.0.1` - Enabled: ✅ Yes **Option B: Via TestMKS.set (Advanced)** ``` C:\GEVISOFT\TestMKS.set GeViGCoreServer/ Server_?/ Host: "localhost" ← Must exist and point to localhost Enabled: true ← Must be enabled User: "gevisoft" ← Credentials for GSCServer Password: "..." ``` ### Step 4: Add Localhost G-Core Server (If Missing) If no G-Core server points to localhost, GeViSoft can't see your local GeViScope cameras. **Fix via REST API**: ```bash curl -X POST http://localhost:8000/api/v1/configuration/servers \ -H "Content-Type: application/json" \ -d '{ "alias": "Local GeViScope Storage", "host": "localhost", "user": "gevisoft", "password": "your_password", "enabled": true, "deactivate_echo": false, "deactivate_live_check": false }' ``` **Fix via GeViSet**: 1. Open GeViSet 2. Go to G-Core Servers 3. Add New Server: - Alias: "Local GeViScope" - Host: localhost - User: gevisoft (or appropriate user) - Password: (GeViScope password) - Enabled: ✅ 4. Save configuration 5. Restart GeViServer: `.\restart-services.ps1` ### Step 5: Verify GeViScope Has Cameras Even if GeViSoft connects to GeViScope, cameras won't appear unless GeViScope has cameras configured. **Check GeViScope cameras**: 1. This depends on how your GeViScope is configured 2. Cameras are added to GeViScope via its own configuration 3. Check GeViScope documentation for camera management **Typical GeViScope camera sources**: - Direct IP cameras on local network - Camera configuration files - Auto-discovered cameras ### Step 6: Check Connection Status After adding localhost G-Core server, verify connection: **In GeViSet**: - G-Core server entry should show **Connected** status - If disconnected, check: - GSCServer.exe is running - Credentials are correct - Port is not blocked **In GeViServer logs**: - Look for connection messages to localhost - Check for authentication errors ## Common Scenarios ### Scenario 1: No G-Core Servers at All ```json { "servers": [], "total": 0 } ``` **Solution**: Your TestMKS.set has NO G-Core servers. You need to add at least one pointing to your GeViScope. ### Scenario 2: G-Core Servers Exist But None Point to Localhost ```json { "servers": [ {"id": "1", "host": "192.168.1.100", ...}, {"id": "2", "host": "192.168.1.200", ...} ] } ``` **Solution**: Add a server with `"host": "localhost"` to connect to your local GSCServer.exe. ### Scenario 3: Localhost G-Core Server Exists But Is Disabled ```json { "servers": [ {"id": "3", "host": "localhost", "enabled": false} ] } ``` **Solution**: Enable the server: ```bash curl -X PUT http://localhost:8000/api/v1/configuration/servers/3 \ -H "Content-Type: application/json" \ -d '{"enabled": true, ...}' ``` Or use GeViSet to enable it. ### Scenario 4: Connection Fails (Wrong Credentials) **Symptoms**: - G-Core server configured - GeViScope running - Still no cameras - GeViServer logs show authentication errors **Solution**: - Verify username/password in G-Core server config matches GeViScope - Common usernames: `gevisoft`, `admin`, `gscadmin` - Check GeViScope user configuration ## Quick Fix Commands ### 1. Check what G-Core servers exist: ```bash # Note: Requires authentication bypass or valid token curl http://localhost:8000/api/v1/configuration/servers ``` ### 2. Add localhost G-Core server: ```bash curl -X POST http://localhost:8000/api/v1/configuration/servers \ -H "Content-Type: application/json" \ -d '{ "alias": "Local Storage", "host": "localhost", "user": "gevisoft", "password": "change_me", "enabled": true }' ``` ### 3. Restart services to apply changes: ```powershell .\restart-services.ps1 ``` ### 4. Wait 30 seconds for connection, then check cameras: ```bash curl http://localhost:8000/api/v1/cameras ``` ## Expected Result After Fix ```json { "cameras": [ { "channel": 1, "name": "Camera 1", "description": "Front entrance", "has_ptz": false, "has_video_sensor": true, "status": "online" }, { "channel": 2, "name": "Camera 2", ... } ], "total": 2 } ``` ## Still Not Working? ### Check GeViServer Logs Look in: `C:\GEVISOFT\Logs\` or wherever GeViServer logs are stored **Look for**: - G-Core connection attempts - Authentication failures - Network errors ### Verify Ports - GeViScope (GSCServer) listens on ports (check GeViScope config) - GeViSoft must be able to connect to these ports - Firewall might be blocking ### Test Connection Manually From GeViSet: 1. Try to connect to localhost GeViScope 2. If it fails, the issue is not with the API 3. Fix GeViScope connectivity first ## Architecture Diagram ``` ┌─────────────────────────────────────────────────┐ │ Your Machine (localhost) │ ├─────────────────────────────────────────────────┤ │ │ │ GeViSoft (GeViServer.exe) │ │ ├─ Manages video routing │ │ └─ Needs to connect to GeViScope via G-Core │ │ │ │ ↓ G-Core connection (configured in │ │ ↓ TestMKS.set GeViGCoreServer folder) │ │ ↓ │ │ GeViScope (GSCServer.exe) │ │ ├─ Storage/recording server │ │ ├─ HAS THE CAMERAS! ← This is where they are │ │ └─ Must be reachable from GeViSoft │ │ │ │ ↓ │ │ ↓ Connected to │ │ ↓ │ │ IP Cameras (hardware) │ │ └─ Actual camera devices │ │ │ └─────────────────────────────────────────────────┘ ``` ## Summary Checklist - [ ] GeViServer.exe is running - [ ] GSCServer.exe is running - [ ] TestMKS.set has G-Core server entry for localhost - [ ] G-Core server entry is enabled - [ ] Credentials in G-Core config match GSCServer - [ ] GeViSoft successfully connected to GSCServer (check GeViSet) - [ ] GSCServer has cameras configured - [ ] Services restarted after configuration changes - [ ] Waited 30+ seconds for connection to establish If all checked, cameras should appear in API! --- **Last Updated**: 2025-12-17