{"record":{"id":"43d6bbeb4ece0810","repo":"mgth/LittleBigMouse","slug":"no-hisense-vidaa-device-answered-on-octets-0-octets-1-octets","errorCode":null,"errorMessage":"No Hisense VIDAA device answered on {octets[0]}.{octets[1]}.{octets[2]}.0/24.","messagePattern":"No Hisense VIDAA device answered on (.+?)\\.(.+?)\\.(.+?)\\.0/24\\.","errorType":"exception","errorClass":"HttpRequestException","httpStatus":null,"severity":"error","filePath":"LittleBigMouse.Plugins/LittleBigMouse.Plugin.Vcp.Avalonia/HisenseVidaa/HisenseVidaaDiscovery.cs","lineNumber":83,"sourceCode":"        var octets = seed.GetAddressBytes();\n        using var deadline = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken);\n        deadline.CancelAfter(TimeSpan.FromSeconds(8));\n        using var concurrency = new SemaphoreSlim(48, 48);\n        var probes = Enumerable.Range(1, 254)\n            .Select(host => ProbeSubnetCandidateAsync(\n                $\"{octets[0]}.{octets[1]}.{octets[2]}.{host}\", concurrency, deadline.Token))\n            .ToArray();\n\n        try\n        {\n            var devices = await Task.WhenAll(probes).ConfigureAwait(false);\n            if (devices.FirstOrDefault(device => device is not null) is { } found) return found;\n        }\n        catch (OperationCanceledException) when (!cancellationToken.IsCancellationRequested)\n        {\n        }\n\n        throw new HttpRequestException(\n            $\"No Hisense VIDAA device answered on {octets[0]}.{octets[1]}.{octets[2]}.0/24.\");\n    }\n\n    async Task<HisenseVidaaDevice?> ProbeSubnetCandidateAsync(\n        string address,\n        SemaphoreSlim concurrency,\n        CancellationToken cancellationToken)\n    {\n        await concurrency.WaitAsync(cancellationToken).ConfigureAwait(false);\n        try\n        {\n            foreach (var port in HisenseVidaaProtocol.DescriptorPorts)\n            {\n                using var tcp = new TcpClient(AddressFamily.InterNetwork);\n                using var attempt = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken);\n                attempt.CancelAfter(TimeSpan.FromMilliseconds(450));\n                try\n                {","sourceCodeStart":65,"sourceCodeEnd":101,"githubUrl":"https://github.com/mgth/LittleBigMouse/blob/7a42f01d47d99d223b8ee33ba4019af82adf1c48/LittleBigMouse.Plugins/LittleBigMouse.Plugin.Vcp.Avalonia/HisenseVidaa/HisenseVidaaDiscovery.cs#L65-L101","documentation":"After probing all candidates in the /24 subnet derived from the seed IP without finding a VIDAA device (and no cancellation), FindAsync throws HttpRequestException summarizing the scanned subnet. This is the 'scan finished, nothing found' terminal condition of the discovery flow.","triggerScenarios":"Calling FindAsync with a valid IPv4 seed whose /24 contains no device answering the VIDAA descriptor request on any candidate address, and the scan completes without cancellation.","commonSituations":"Seed IP points to a host on a network where the projector is absent; projector offline during the scan; AP isolation prevents peer-to-peer probes; wrong network interface (e.g. scanning wired LAN while projector is on Wi-Fi).","solutions":["Confirm the projector's actual IP in its network settings menu and re-run FindAsync with that seed","Ensure the machine running discovery is on the same subnet/VLAN as the projector","Disable AP/client isolation on the router","Check the projector is powered on (not standby) during the scan"],"exampleFix":"// before\nvar device = await discovery.FindAsync(\"192.168.1.50\", token);\n// after\ntry\n{\n    var device = await discovery.FindAsync(\"192.168.1.50\", token);\n}\ncatch (HttpRequestException)\n{\n    // scan of 192.168.1.0/24 found nothing: verify projector IP and network\n}","handlingStrategy":"try-catch","validationCode":"var seed = Ipv4Address.Parse(seedIp);\n// ensure seed is on an interface of this machine\nbool sameSubnet = NetworkInterface.GetAllNetworkInterfaces()\n    .Any(n => n.GetIPProperties().UnicastAddresses.Any(u => u.Address.GetSubnet().Contains(seed)));","typeGuard":null,"tryCatchPattern":"try { return await discovery.FindAsync(seedIp, token); }\ncatch (HttpRequestException) { ui.Show(\"No VIDAA device found on subnet; check projector power/network\"); return null; }","preventionTips":["Seed the scan with a recently verified device IP","Ensure the projector is powered (not deep standby) during scans","Run discovery on the interface in the projector's subnet","Disable AP/client isolation on the router"],"tags":["network","discovery","subnet-scan","hisense-vidaa"],"backgroundTag":"empty-result-set","analyzedSha":"7a42f01d47d99d223b8ee33ba4019af82adf1c48","analyzedAt":"2026-09-16T00:35:00.514Z","contentChangedAt":"2026-09-16T00:35:00.514Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}