-
Notifications
You must be signed in to change notification settings - Fork 10
Kodi add‐on
The Howl Sync add-on for Kodi allows funscript files for videos that you're playing in Kodi to be automatically sent to Howl and synchronised with the video position. It is by far the most convenient method for playing funscripts.
Kodi add-on features: -
- Funscript files will be automatically sent to Howl by the Kodi add-on (you do not need to copy them to your phone).
- One-way sync for player events from Kodi to Howl. E.g. if you skip forward in the video, Howl will skip forward too. If you stop the video, Howl will stop.
- Can also sync Howl's native HWL files with videos (mainly useful for advanced users making custom content).
Obtain the latest Kodi add-on ("howl_sync.zip") from the Releases page. You can install this in Kodi in either of two ways.
Method 1 In Kodi select "Add-ons / Install from zip file" and select the .zip file you downloaded from its location on your machine. Since the add-on isn't in Kodi's official repository, you will first have to allow the installation of add-ons from unknown sources. Kodi should prompt for this when you try to install, or you can find the setting under "Settings / System / Add-ons".
Method 2 You can alternatively extract the "script.service.howl" folder from the .zip file you downloaded, and place it in Kodi's "addons" directory. See this page for where to find that directory on different platforms. (Re)start Kodi and the add-on should be available. It will probably be marked as disabled initially, but you can enable it in the next step.
Please note that Kodi version 19 (Matrix) or higher is required to install Howl Sync.
After installation check under "Add-ons / My add-ons / All". You should be able to see "Howl Sync" in the list. Select "Howl Sync" and you should see the add-on's screen, which will look similar to the screenshot.
Note the "Status" of the add-on on the right hand side of the screen. If it is disabled, pick the "Enable" option to activate it.
Next pick the "Configure" option to display the add-on's settings. The ones you will need to configure are: -
- "Remote IP address" - set this to the IP address of your Android phone that's running Howl on your local wi-fi network.
- "Remote access key" - set this to the same remote access key that's displayed on the settings page of your Howl app.
You will need to set up a source in Kodi that contains the videos you want to play. You'll have to look elsewhere if you need a guide on basic Kodi setup, but either local files or files on a network device (such as a NAS) should work fine with the add-on. You'll probably want to set the content type of the source in Kodi to "None" (as we're not playing standard TV shows or movies that Kodi can scrape information on) and access it under the "Videos" section.
Your funscript or HWL files need to be placed in the same location as your videos, and should have exactly the same name as the related video, but with the .funscript or .hwl extension instead of the video type. For example if your video is called "My Great Video.mp4", then the accompanying funscript should be called "My Great Video.funscript". Everything in the file name such as capitalisation, symbols etc. needs to be exactly the same in order for the add-on to detect your funscript when you play the video. The .funscript or .hwl extension should always be lower case.
Turn on the "Allow remote access" option on Howl's settings page. Howl will then allow the Kodi add-on to control playback.
Simply play the video you want in Kodi. Howl should automatically play the corresponding funscript (assuming you named it correctly), and follow along as you do operations in Kodi like skipping around. You don't need to do anything special on the playback side - once Howl Sync is properly configured, everything works automatically.
Howl has a custom video and accompanying funscript that you can use for testing and to help you accurately adjust sync so that Kodi's video playback is exactly in time with your device's output (this is important for immersion).
The first section rapidly turns output on and off in time with audio and visual cues, which makes it much easier for you to tell whether sync is correct or not. You can adjust the "Remote latency" player setting in Howl and repeat the test until you find a good value for your setup that provides correct sync.
The later section just tests various standard stroking patterns. This is useful to get a feel for how Howl's algorithm works and to check that the sensations you're getting match the funscript position meter on screen. For example if the meter is at the top but you feel output at the bottom, you might have your electrodes connected the opposite way round to what Howl expects.
Like everything else in Howl, remote funscript playback works even if you don't have your estim device connected. So you can test playing files in Kodi and check if that triggers playback in Howl, without needing to set up your estim equipment.
Avoid having Howl's recorder in active (switched on) mode when playing back funscripts. Recording mode is not time accurate, so they will not stay in sync, and remote latency adjustment will not work.
The "Sync delay" option in Howl Sync is how long the add-on waits after a Kodi operation (like skipping forward or loading a file) before it syncs the playback position with Howl. The default value is generally good. Setting too short a delay can cause missed skips or very inconsistent sync, because we might read the position too early before Kodi's video playback has properly got going again. Lowering the delay does not improve sync, it just makes Howl follow Kodi's position a bit quicker after a skip. If Kodi is running on a slow device, you might find that increasing the delay from the default gives you better sync results.
If your phone regularly changes IP address on your home network, you might find it helpful to assign it a static IP instead of using DHCP.
If you are running both Howl and Kodi on the same device, set the remote IP address in the Kodi add-on to 127.0.0.1 (the local loopback interface) instead of your device's actual network IP.
When Howl is running in the background (for example when you are using Kodi), Android OS restrictions might prevent Howl from launching the service that we would normally use to make playback more reliable. Howl's debug log will say "Not allowed to elevate playback service ... " when this happens. If you see this and are experiencing unreliable playback, the solution is to disable Android battery optimisations for Howl (often buried deep in Android's application settings menu). Doing that should allow us to use the reliable method even when Howl is in the background.
The Howl Sync add-on logs various information to Kodi's main log file "kodi.log". See this page for where to find the log file on various platforms. Search the log for "[Howl]" to find the relevant lines. The log is in chronological order, so information about what you just did will generally be at the bottom. If something isn't working, the add-on will usually have logged some helpful information about what the problem is.
Some common errors that might be logged and their typical causes are given below.
"No haptics file found for [path to video file]" Your funscript or HWL file is incorrectly named, or is not present in the same location as your video. Refer to the section on file naming above.
"Unexpected API error: Remote end closed connection without response" Remote access may be disabled on Howl's settings page.
"API request to [URL] failed: HTTP Error 401: Unauthorized" The remote access key specified in the Kodi add-on settings does not exactly match the one on Howl's settings page. Note that the key is case sensitive (the default randomly generated ones only use upper case letters and numbers).
"API request to [URL] failed: <urlopen error timed out>" Two common reasons for this one are: -
- The "Remote IP address" specified in the Kodi add-on settings is not the correct IP address of the device you're running Howl on. Check your phone's IP address carefully. Be sure to look at the entire address, a common mistake is setting something like "192.168.0.80" when your network is actually using "192.168.1.80"
- Your Wi-Fi network isolates connected devices and does not allow any traffic between them (this is common on public Wi-Fi networks). On a private home network you can usually control this behaviour with a router setting, e.g. try turning off "guest network" mode.

