A common sentiment for potential Handy buyers is that the Handy requires a persistent Internet connection to synchronize with videos. Where something as private as masturbation is concerned, it is important to understand what exactly is happening with this Internet connection and what data is being passed back and forth.
As a general overview, we implement the following security measures when dealing with Handy connectivity:
- End-to-end encryption between Handy and our servers through HTTPS
- Your connections to a third-party service is only identifiable by your connection key — which you can change at any time
- Connection key changes are done at the hardware level and third-parties will not be able to know your new connection key if you do not provide it to them
- The Handy always starts in Offline Mode. There is no risk of anyone taking over your device because it is not communicating with the Internet unless you put it into Online Mode
- Local Handy configuration is done over Bluetooth, which has a signal range of around 10 meters
Next, we’ll tackle some of these topics by answering some common questions posed by our community.
Is it really true that the content-synced movement requires an internet connection?
Perfect one-to-one timed syncing requires an Internet connection. You can sync videos through Bluetooth offline through community tools such as Buttplug.io, Intiface, and ScriptPlayer.
However, we generally hold that the experience will not be as accurate as the online sync mode due to the limited developed that has been done on the Bluetooth interface.
Why does the perfect sync require an Internet connection? Can you not just make it offline and/or available through Bluetooth?
Bluetooth playback is not built by us — we just added one command and the community have done the rest ( <3 ).
We believe in simplicity and online interactive play.
With limited resources, we must pick one direction and stick to that. The online solution allows us to integrate quickly with content providers. Most of these services are web-based, and controlling a local device requires much more effort from them than just adding our JavaScript SDK with four lines of code.
Handy users will soon see the fruition of this because we have tons of incoming requests for integration. Our efforts are paying off!
Other aspects of it are operational: we don’t have the capacity for technical support of three different synchronization methods. We need to focus on keeping what we have stable and bug-free. We still need more time to grow from the start-up garage* company to a fully stable company.
This task is much more complex than we imagined, and our biggest problem is that there are so many cool things that we can do! But doing everything at once is not sustainable, and we will need time to recruit good personnel and onboard them to take on more tasks like different sync methods.
*Fun fact: We did not start in a garage. It is not common to have a car in downtown Oslo, so the first prototypes were built in our CTO’s living room.
Why not just open-source the server code and let the community do the work?
Well, the honest answer to this is that it is our intellectual property, and we do not want this to be public. We have to run a business at the end of the day. It sucks because it collides with our ambition of building the product with the community.
Our server code and firmware will be closed source, but with as much transparency as possible. Everything else should be open. We aim to have our websites and product code in public Git repositories for transparency and community feedback. It is on the to-do list, but the list is soooo long….
What data exactly is uploaded to The Handy servers? Does it include the full script? The name of the script? Any metadata?
If the user is synchronizing with a FunScript file, the whole script is uploaded to our servers, converted to a CSV file, then downloaded from our servers to the Handy. If you are hosting a CSV file on a server (local or remote), then your Handy downloads it directly.
If there is metadata in the FunScript, it is never read. Only the actions array of the FunScript is converted to CSV. When your Handy downloads the script, it is stored as the SHA256 value of the script contents in memory.
For example:
Script name: “Dirty MILF”
Action array: Alternating between position 0 and 100 for 2 seconds
Resulting SHA256 value: 0767c52c7b5f8a996a57d742e6508ccf7fd1daa4266ade0a12e1b8d9b5fb25c5.
Currently, the Handy only holds one script at a time, but this might change in the future to allow for buffering multiple scripts and instant switching between them.
How does this work for services that are not script-based, like games which can have unpredictable movement?
This works by sending an API call through our servers. Example with starting the Alternating Motion mode (HAMP):
- You press start on any Handy-connected app, including HandyFeeling
- The service sends an API request to our servers. You can read more about the specific request here: https://www.handyfeeling.com/api/handy/v2/docs/#/HAMP/start
- The command is transformed by our server to “Handy language” and sent to your device. The server knows which Handy to send it to based on the Connection Key you have entered in the app you are using.
- Our server analytics adds an entry that a remote control session has been started. All data is scrambled, including the Connection Key.
undefinedundefined