Need help using the clone_i1d3 tool

Home Forums General Discussion Need help using the clone_i1d3 tool

Viewing 13 posts - 1 through 13 (of 13 total)
  • Author
    Posts
  • #143519

    LongDoan
    Participant
    • Offline

    I’m not a coding wizard so I’m not quite sure how this tool works, I downloaded and ran the .exe file and nothing happens so not sure what to do next.

    The reason why I need it is I bought a Wacom color management probe, basically an OEM i1d3 but it doesn’t work with ColorNavigator so I want to try using the tool to see if it reads the probe as a generic OEM.

    Thanks a  bunch.

    Calibrite Display Pro HL on Amazon  
    Disclosure: As an Amazon Associate I earn from qualifying purchases.

    #143520

    Vincent
    Participant
    • Offline

    Use a hook, do not modify firmw. LeDoge’s hook should work with default OEM i1d3 simulation although you need to recompile it for 64bit.

    if you are on macos, you are not so lucky.

    #143522

    LongDoan
    Participant
    • Offline

    Thanks, luckily, I’m on windows. Would you mind pointing me to the general direction for doing the last bit about re-compiling? Again, I’m not that good, not decent even, about coding and modifying programs.

    On another note, the owner of the tool also made some sort of dll injection?  This one I mean. I tried it and got i1Profiler to read my probe as i1 display pro (previously it didn’t) but still can’t get CN to connect.

    • This reply was modified 1 year ago by LongDoan. Reason: added more info
    • This reply was modified 1 year ago by LongDoan.
    #143527

    Vincent
    Participant
    • Offline

    Thanks, luckily, I’m on windows. Would you mind pointing me to the general direction for doing the last bit about re-compiling? Again, I’m not that good, not decent even, about coding and modifying programs.

    Compiling

    Using a 32-bit MinGW build of GCC with the MinHook package installed:

    gcc i1d3_hook.c -Os -shared -static -s -lMinHook -Wl,–exclude-all-symbols -o i1d3_hook.dll

    You need to download and install Mingw 64bit, maybe in MSYS2 install, then use pacman to install minhook and other dependencies. Last execute the compile order as in 32bit.

    On another note, the owner of the tool also made some sort of dll injection?  This one I mean. I tried it and got i1Profiler to read my probe as i1 display pro (previously it doesn’t) but still can’t get CN to connect.

    Likely bc they are 32bit DLL. CN uses 64bit Xrite SDK.

    #143528

    LongDoan
    Participant
    • Offline

    Thanks, luckily, I’m on windows. Would you mind pointing me to the general direction for doing the last bit about re-compiling? Again, I’m not that good, not decent even, about coding and modifying programs.

    Compiling

    Using a 32-bit MinGW build of GCC with the MinHook package installed:

    gcc i1d3_hook.c -Os -shared -static -s -lMinHook -Wl,–exclude-all-symbols -o i1d3_hook.dll

     

    You need to download and install Mingw 64bit, maybe in MSYS2 install, then use pacman to install minhook and other dependencies. Last execute the compile order as in 32bit.

    Thanks a lot.

    On another note, the owner of the tool also made some sort of dll injection?  This one I mean. I tried it and got i1Profiler to read my probe as i1 display pro (previously it doesn’t) but still can’t get CN to connect.

    Likely bc they are 32bit DLL. CN uses 64bit Xrite SDK.

    Of course, why didn’t I think of that. Thank you.

    #143529

    Vincent
    Participant
    • Offline

    I did it years ago, I did not remember details on post above, so I checked:

    -install msys2 mingw64,

    -Execute “pacman -S mingw-w64-i686-MinHook ” fr minhook dependency

    -compile.

    Maybe this is needed on a clean Msys2 instalarion, just checking my bash history:
    “pacman -S –needed base-devel mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain git subversion mercurial mingw-w64-i686-cmake mingw-w64-x86_64-cmake”

    Full update with
    pacman -Syuu

    • This reply was modified 1 year ago by Vincent.
    • This reply was modified 1 year ago by Vincent.
    #143532

    LongDoan
    Participant
    • Offline

    After a bit of messing around, I got to this part:

    $ gcc -v
    Using built-in specs.
    COLLECT_GCC=C:\msys64\ucrt64\bin\gcc.exe
    COLLECT_LTO_WRAPPER=C:/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/lto-wrapper.exe
    Target: x86_64-w64-mingw32

    With this, I suppose I’m running MSYS2 in 64 bit, correct?

    Then I executed this line
    gcc i1d3_hook.c -Os -shared -static -s -lMinHook -Wl,–exclude-all-symbols -o i1d3_hook.dll
    Which returns a blank line and I can’t find the dll file anywhere.

    Have I done something wrong somewhere?

    #143534

    LongDoan
    Participant
    • Offline

    Update, I managed to create a dll file, not sure if I got it right but I had to modify the command line to this:

    gcc i1d3_hook.c -Os -shared -static -s -lMinHook -o i1d3_hook.dll

    With the mingw64 command prompt being this config:

    $ gcc -v
    Using built-in specs.
    COLLECT_GCC=C:\msys64\mingw64\bin\gcc.exe

    However CN7 still does not recognize my probe. I’m getting quite frustrated tbh.

    #143535

    Vincent
    Participant
    • Offline

    You need to inject that DLL, be it CN7 or Calibrite Profiler the target app:

    Usage

    Make sure that the software you want to use the colorimeter with uses the official i1d3 SDK (i1d3SDK.dll or i1d3.dll), and that the SDK DLL is loaded already.
    Use any DLL injector, such as<<<<<<<<<<<<<< Extreme Injector>>>>>>>>>>>>>>, to inject i1d3_hook.dll into the software.
    Make the software (re-)scan for devices, and it should see your colorimeter.

    If on startup it does not load Xrite SDK DLL (original one) injection will be rejected. Go to measuremnet, device will not be recognized so you know DLL was loaded, then inject and trye to get device detection by requesting measurement.

    #143536

    LongDoan
    Participant
    • Offline

    Yes I did the injection part, although I had to change injection method to manual map (as suggested on google when standard injection gave me the return null error popup). Got a injection success notification but  CN7 still doesn’t accept my prope and I still got the attached image message.

    I even went ahead and reinstalled CN7, uninstalled i1profiler to no avail.

    I noticed in the setting tab of Extreme Injector, there’s a process information tab, I checked it and it showed a bunch of dll running but I couldn’t find the new hook file in that list, not sure if that means anything.

    • This reply was modified 1 year ago by LongDoan.
    Attachments:
    You must be logged in to view attached files.
    #143539

    LongDoan
    Participant
    • Offline

    Another update. As I mentioned that Extreme Injector can show a list of running dll of the process. I checked CN7 and didn’t find anything about i1d3.dll running, so I came up with the idea of taking the i1d3SDK64.dll from calibrite, and then inject it into CN7. Not sure if that helps.

    What I noticed was that I could inject this i1d3SDK64.dll with standard injection method but not with the i1d3_hook.dll, it kept saying “injection method returns null”. So I figured it could be a faulty dll?

    I’ve attached the C source code and the dll file in this link

    Would you mind checking them? Because I’m not knowledgable enough to tell what is going wrong, the .dll file was generated using mingw64 just as the instructions above.

    • This reply was modified 1 year ago by LongDoan.
    #143541

    Vincent
    Participant
    • Offline

    You are right, as said before I did years ago so I did not remember all the details.

    You must modify source code to look like this and work with 32 or 64bit:

    HMODULE i1d3SDK = GetModuleHandle("i1d3SDK.dll");
    if (!i1d3SDK) {
    i1d3SDK = GetModuleHandle("i1d3.dll");
    }
    //win64
    if (!i1d3SDK) {
    i1d3SDK = GetModuleHandle("i1d3SDK64.dll");
    }
    
    // abort if SDK isn't loaded
    if (!i1d3SDK) {
    return FALSE;
    }

    (you can change tthe name to other DLL if an app distributes Xrite SDK with other name)

    • This reply was modified 1 year ago by Vincent.
    #143548

    LongDoan
    Participant
    • Offline

    You are right, as said before I did years ago so I did not remember all the details.

    You must modify source code to look like this and work with 32 or 64bit:

    HMODULE i1d3SDK = GetModuleHandle("i1d3SDK.dll");
    if (!i1d3SDK) {
    i1d3SDK = GetModuleHandle("i1d3.dll");
    }
    //win64
    if (!i1d3SDK) {
    i1d3SDK = GetModuleHandle("i1d3SDK64.dll");
    }
    // abort if SDK isn't loaded
    if (!i1d3SDK) {
    return FALSE;
    }

    (you can change tthe name to other DLL if an app distributes Xrite SDK with other name)

    You’re a savior, it finally worked!
    I’m leaving this modified source code, the 64 bit dll version, and the 64 bit i1d3SDK in this reply for anyone who might stumble into the same problem in the future.

    Attachments:
    You must be logged in to view attached files.
Viewing 13 posts - 1 through 13 (of 13 total)

You must be logged in to reply to this topic.

Log in or Register

Display Calibration and Characterization powered by ArgyllCMS