I recently purchased the Mirage 3 and wanted to connect to Intiface, but it looks like it’s not supported. I couldn’t find any trace of this masturbator on IoST, but here is an Amazon Link:
Here is the intiface log, where you can see it recognizes it as J-Mirage3.
So first byte test, using value of 60. you can swap for 255 for full stregth. Remember to put quotes.
This one should rotate and stop after sending second write.
increase it by 1 until it will stop go faster (in theory 7 should be max),
and stop it
write ‘0xA0 0x0D 0 0 0 0xFF’
With all information implementation of these into app will be possible or even before that you will be able to create own custom config (if findings will be compatible with what’s in code)
Hello, thank you for the fast reply!
I followed your instructions and I am happy to report back!
After entering gatt command I found that writing to first byte changes rotation speed. 60 is middle, 255 is indeed fastest.
Second and third byte do nothing.
Fourth byte controls vibration. Again, 255 is indeed fastest.
As for the suction, all 7 levels of suction work, increasing it by 1 every time. Levels 4-7 are less suction strength and more like suction modes, kinda like a rhythm. The same happens when pushing the physical buttons on the device. I also tried writing level 8 and 9 but there is no suction - only the suction icon on the device lights up and the corresponding number on the LCD appears. I didn’t go higher than 9.
It should be noted that pushing the physical buttons for the rotation and the vibration also triggers various modes and patterns. E-g: level 1 and 2 are only different rotation speed while from level three on it also inverts the rotation every so often, depending on the number. Same goes for vibration.
Do you know which bits should be written to achieve the different vibration and rotation modes?
It seems it will be needed to add new protocol in code (or add capabilities to more easily adjust addressing in config).
As further debugging options go to find more functionalities.
You can try writing values like 0xA0 0x01 x x x x 0xFF or 0xA0 0x06 x x x x 0xFF etc.
These can have similar effects of selecting preset action as button / remote for the toy. However I think it’s not a scope of the application, where it’s rather for achieving that with application contacting server and just sending commands dynamically adjusting speeds to achieve that.
You can try to subscribe to bluetooth endpoint, some toys report back on it what command they executed. It should be the command notify where you’re in gatt menu in bluetoothctl and the attribute with that should be 0000ffa2-0000-1000-8000-00805f9b34fb.
Using the original app and export/sniff bluetooth connection packets sent using original application. It can be done with android phone with developer settings on and enabling bluetooth hci logs, then exporting them on desktop via usb debug and apt tool.