Print warning about bad IntraOral driver
Some checks failed
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linux32 flags:32 name:Linux GCC 32 os:ubuntu-latest]) (push) Has been cancelled
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linux64 flags:64 name:Linux GCC x64 os:ubuntu-latest]) (push) Has been cancelled
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linuxarm32 flags:arm32 name:Linux GCC ARM 32 os:ubuntu-latest]) (push) Has been cancelled
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linuxarm64 flags:arm64 name:Linux GCC ARM 64 os:ubuntu-latest]) (push) Has been cancelled
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:macos name:macOS Apple Silicon os:macos-14]) (push) Has been cancelled
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:win32 flags:-A Win32 -DCMAKE_PARALLEL_MSVC=TRUE name:Windows VS2022 Win32 os:windows-2022]) (push) Has been cancelled
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:win64 flags:-A x64 -DCMAKE_PARALLEL_MSVC=TRUE name:Windows VS2022 x64 os:windows-2022]) (push) Has been cancelled
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:winarm64 flags:-A ARM64 -DCMAKE_PARALLEL_MSVC=TRUE name:Windows VS2022 ARM os:windows-2022]) (push) Has been cancelled
CD / Create Pi Mono Setup (push) Has been cancelled
CD / Publishing (push) Has been cancelled

This commit is contained in:
Lorenzooone 2026-02-10 23:58:18 +01:00
parent c570f68e6d
commit 7cd299488e
2 changed files with 27 additions and 1 deletions

View File

@ -4,6 +4,12 @@
#include <libusb.h>
#include "usb_generic.hpp"
#define CYPRESS_EZ_FX2_VID 0x04B4
#define CYPRESS_EZ_FX2_PID 0x8613
#define CYPRESS_EZ_FX2_BAD_VID_INTRAORAL 0x0547
#define CYPRESS_EZ_FX2_BAD_PID_INTRAORAL 0x2001
// Read from ctrl_in
int cypress_libusb_ctrl_in(cy_device_device_handlers* handlers, const cy_device_usb_device* usb_device_desc, uint8_t* buf, int length, uint8_t request, uint16_t value, uint16_t index, int* transferred) {
int ret = libusb_control_transfer(handlers->usb_handle, 0xC0, request, value, index, buf, length, usb_device_desc->bulk_timeout);
@ -317,6 +323,19 @@ void cypress_libusb_list_devices(std::vector<CaptureDevice> &devices_list, bool*
not_supported_elems[j] = true;
break;
}
#ifdef _WIN32
// The IntraOral vendor overwrote the Infineon driver in a recent Windows Update...
// This is terrible, and Microsoft needs to fix this asap.
// Prepare a warning, so users can at least understand what is the problem.
// They will need to uninstall the devices and remove the driver, even from hidden devices... :/
if((device_descriptions[j]->pid == CYPRESS_EZ_FX2_PID) && (device_descriptions[j]->vid == CYPRESS_EZ_FX2_VID)) {
// Keep it like this in case multiple vendors do this in the future. :/
if((usb_descriptor.idVendor == CYPRESS_EZ_FX2_BAD_VID_INTRAORAL) && (usb_descriptor.idProduct == CYPRESS_EZ_FX2_BAD_PID_INTRAORAL)) {
no_access_elems[j] = true;
ActualConsoleOutTextError("WARNING: IntraOral device detected. Possible driver issue.");
}
}
#endif
}
}

View File

@ -164,7 +164,14 @@ bool connect(bool print_failed, CaptureData* capture_data, FrontendData* fronten
else
full_error_part += "VID: " + to_hex_u16(no_access_list[i].vid) + ", PID: " + to_hex_u16(no_access_list[i].pid);
}
capture_error_print(print_failed, capture_data, "No device was found\nPossible permission error", "No device was found - Possible permission error" + full_error_part);
#ifdef _WIN32
std::string base_error_string = "No device was found\nPossible driver issue";
std::string long_error_string = "No device was found - Possible driver issue" + full_error_part;
#else
std::string base_error_string = "No device was found\nPossible permission error";
std::string long_error_string = "No device was found - Possible permission error" + full_error_part;
#endif
capture_error_print(print_failed, capture_data, base_error_string, long_error_string);
}
return false;
}