mgth/LittleBigMouse · error · HttpRequestException

No VIDAA descriptor answered at

Error message

No VIDAA descriptor answered at {ipAddress} on ports {string.Join('/', HisenseVidaaProtocol.DescriptorPorts)}.

What it means

HisenseVidaaDiscovery.ProbeAsync fetches the device descriptor XML from the projector at a given IP across the known VIDAA descriptor ports. If every port attempt fails with an HttpRequestException, it rethrows an HttpRequestException describing the IP and ports tried, meaning no VIDAA-capable device responded at that address.

Solutions

  1. Ping the projector IP and confirm it is powered on and connected to the same network
  2. Check that the projector's network remote/VIDAA control setting is enabled
  3. Verify no firewall or AP isolation blocks HTTP on the descriptor ports
  4. Re-run discovery on the /24 subnet (FindAsync with a seed address) to locate the device

Example fix

// before
var device = await discovery.ProbeAsync(ip);
// after
try
{
    var device = await discovery.ProbeAsync(ip);
}
catch (HttpRequestException)
{
    // device unreachable: check power/network, then rescan subnet
}
Defensive patterns

Strategy: try-catch

Validate before calling

// ping first
using var ping = new Ping();
var reply = await ping.SendPingAsync(ip, 1500);
if (reply.Status != IPStatus.Success) throw new InvalidOperationException("Projector unreachable");

Try / catch

try { return await discovery.ProbeAsync(ip, token); }
catch (HttpRequestException ex) { throw new DeviceUnreachableException($"{ip}: {ex.Message}", ex); }

Prevention

When it happens

Trigger: Calling ProbeAsync (directly or via FindAsync or subnet scan) with an IP where nothing answers on HisenseVidaaProtocol.DescriptorPorts: connection refused, timeout, or HTTP errors on all descriptor ports.

Common situations: Typo in the projector IP; TV/projector asleep or powered off; device on a different VLAN/subnet; firewall or AP isolation blocking the ports; TV's network settings restricting remote control.

Understand the failure class

Background: ECONNREFUSED and "connection refused" / "could not connect to server" errors: what they mean and how to fix them — this error's family across 44 libraries.

Related errors


AI-assisted analysis of mgth/LittleBigMouse@7a42f01d47 (2026-09-16). Data as JSON: /api/errors/6b4a9a96a524e358. Report an issue: GitHub.

Appendix: source

Thrown at LittleBigMouse.Plugins/LittleBigMouse.Plugin.Vcp.Avalonia/HisenseVidaa/HisenseVidaaDiscovery.cs:43

            {
                using var attempt = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken);
                attempt.CancelAfter(TimeSpan.FromSeconds(2));
                var xml = await httpClient.GetStringAsync(
                    $"http://{ipAddress}:{port}/MediaServer/rendererdevicedesc.xml", attempt.Token)
                    .ConfigureAwait(false);
                return HisenseVidaaProtocol.ParseDescriptor(ipAddress, xml);
            }
            catch (OperationCanceledException e) when (!cancellationToken.IsCancellationRequested)
            {
                lastError = e;
            }
            catch (HttpRequestException e)
            {
                lastError = e;
            }
        }

        throw new HttpRequestException(
            $"No VIDAA descriptor answered at {ipAddress} on ports {string.Join('/', HisenseVidaaProtocol.DescriptorPorts)}.",
            lastError);
    }

    public async Task<HisenseVidaaDevice> FindAsync(
        string lastKnownAddress,
        CancellationToken cancellationToken = default)
    {
        if (!Ipv4Address.TryParse(lastKnownAddress, out var seed))
            throw new ArgumentException("Enter a valid projector IPv4 address.", nameof(lastKnownAddress));

        try
        {
            return await ProbeAsync(lastKnownAddress, cancellationToken).ConfigureAwait(false);
        }
        catch (HttpRequestException)
        {
            // SSDP multicast does not cross routers. Search only the /24 of the

View on GitHub (pinned to 7a42f01d47)