Home › Forums › General Discussion › Need help using the clone_i1d3 tool
- This topic has 12 replies, 2 voices, and was last updated 1 year ago by
LongDoan.
-
AuthorPosts
-
2025-05-24 at 12:27 #143519
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.2025-05-24 at 15:00 #143520Use 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.
2025-05-24 at 15:07 #143522Thanks, 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.
2025-05-24 at 15:15 #143527Thanks, 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.
2025-05-24 at 15:19 #143528Thanks, 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.
2025-05-24 at 15:20 #143529I 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 -Syuu2025-05-24 at 18:16 #143532After 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-mingw32With 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?
2025-05-24 at 19:40 #143534Update, 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.exeHowever CN7 still does not recognize my probe. I’m getting quite frustrated tbh.
2025-05-24 at 23:36 #143535You 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.
2025-05-25 at 5:21 #143536Yes 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.2025-05-25 at 9:07 #143539Another 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.dllrunning, so I came up with the idea of taking thei1d3SDK64.dllfrom calibrite, and then inject it into CN7. Not sure if that helps.What I noticed was that I could inject this
i1d3SDK64.dllwith standard injection method but not with thei1d3_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.
2025-05-25 at 13:19 #143541You 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.
2025-05-25 at 14:50 #143548You 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. -
This reply was modified 1 year ago by
-
AuthorPosts