mgth/LittleBigMouse · error · InvalidDataException
The network device does not advertise VIDAA remote control.
Error message
The network device does not advertise VIDAA remote control.
What it means
ParseDescriptor inspects the device descriptor XML's modelDescription key/value data. If it contains vidaa_support=0 (or the value is present and explicitly disables VIDAA), the code throws InvalidDataException: the device answered but is not a VIDAA remote-controllable endpoint. This prevents sending remote commands to an incompatible device.
Solutions
- Point discovery at the correct projector IP, not another Hisense device
- Update the device firmware if VIDAA remote support is expected
- Verify the descriptor contents (vidaa_support key) to confirm device capability
- Filter subnet-scan candidates by model type before authenticating
Example fix
// before
var descriptor = HisenseVidaaProtocol.ParseDescriptor(xml);
// after
try
{
var descriptor = HisenseVidaaProtocol.ParseDescriptor(xml);
}
catch (InvalidDataException)
{
// device answered but vidaa_support=0: not remote-controllable, skip it
} Defensive patterns
Strategy: try-catch
Validate before calling
// check capability before parsing/pairing
var support = ParseDescription(modelDescription).TryGetValue("vidaa_support", out var v) ? v : null;
if (support == "0") return skip; Try / catch
try { desc = ParseDescriptor(xml); }
catch (InvalidDataException) { /* not VIDAA-capable; exclude candidate */ } Prevention
- Filter subnet candidates on vidaa_support before auth
- Verify the target device model supports VIDAA remote
- Keep firmware updated when support is expected
- Never treat any answering HTTP device as VIDAA-capable
When it happens
Trigger: Calling ParseDescriptor on descriptor XML whose modelDescription contains vidaa_support="0"; typically from ProbeAsync hitting a Hisense device (e.g. a TV or other appliance) that lacks VIDAA remote support.
Common situations: Subnet scan sweeping up non-projector Hisense TVs or appliances; older firmware without VIDAA remote; wrong device IP stored (another Hisense device).
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- Enter a valid projector IPv4 address.
- Invalid VIDAA remote key.
- Enter a VIDAA picture-setting menu ID between 1 and 999.
- Enter a VIDAA picture-setting value between -1000 and 1000.
- Enter a volume between 0 and 100.
AI-assisted analysis of mgth/LittleBigMouse@7a42f01d47 (2026-09-16).
Data as JSON: /api/errors/40cee6231ab9feb6.
Report an issue: GitHub.
Appendix: source
Thrown at LittleBigMouse.Plugins/LittleBigMouse.Plugin.Vcp.Avalonia/HisenseVidaa/HisenseVidaaProtocol.cs:93
.Sum(c => c - '0') % 10;
var suffix = authMethod == VidaaAuthMethod.Modern ? ModernSuffix : LegacySuffix;
var valueHash = Md5($"{brand}{remainder}{suffix}")[..6];
var password = Md5($"{timestamp}${valueHash}");
return new VidaaMqttCredentials(clientId, username, password);
}
public static HisenseVidaaDevice ParseDescriptor(string ipAddress, string xml)
{
ipAddress = Ipv4Address.Require(ipAddress, nameof(ipAddress));
var document = XDocument.Parse(xml);
string Element(string name) => document.Descendants()
.FirstOrDefault(e => e.Name.LocalName.Equals(name, StringComparison.OrdinalIgnoreCase))
?.Value.Trim() ?? "";
var raw = ParseDescription(Element("modelDescription"));
if (raw.TryGetValue("vidaa_support", out var support) && support == "0")
throw new InvalidDataException("The network device does not advertise VIDAA remote control.");
var mac = First(raw, "mac", "macWifi", "macEthernet");
var protocol = int.TryParse(First(raw, "transport_protocol"), out var version) ? (int?)version : null;
var model = Element("modelName");
if (model.Equals("Renderer", StringComparison.OrdinalIgnoreCase)) model = "";
var name = Element("friendlyName");
return new HisenseVidaaDevice(
ipAddress,
string.IsNullOrWhiteSpace(name) ? "Hisense VIDAA" : name,
model,
NormalizeMac(mac),
protocol,
First(raw, "brand") is { Length: > 0 } brand ? brand : "his");
}
public static string TranslateKey(string key) => key.Trim().ToUpperInvariant() switch
{
"KEY_ENTER" => "KEY_OK",View on GitHub (pinned to 7a42f01d47)