-
Notifications
You must be signed in to change notification settings - Fork 1
Multi Instance Sync
Share your watch progress across multiple Kodi devices. When you watch Episode 5 on one device, all other devices know to queue Episode 6.
Added in v1.3.0
By default, EasyTV tracks your shows independently on each Kodi device. If you have Kodi in your living room and bedroom, they maintain separate "next episode" lists.
With multi-instance sync enabled, all your Kodi instances share a single database of watch progress. Watch something in one room and pick up right where you left off in another.
- You have Kodi running on multiple devices (living room, bedroom, office)
- You already use a shared MySQL/MariaDB video database for your Kodi library
- You want your "next episode" to be consistent everywhere
- You only use Kodi on one device
- Each device has its own separate library
- You use Kodi profiles to separate users (profiles already have separate settings)
| Requirement | Details |
|---|---|
| Kodi | 21 (Omega) or later on all devices |
| Shared Database | MySQL or MariaDB configured as Kodi's video database |
| pymysql Addon |
script.module.pymysql (bundled with EasyTV) |
| EasyTV | v1.3.0 or later on all devices |
Important: Multi-instance sync only works when Kodi is configured with a shared MySQL/MariaDB video database via
advancedsettings.xml. If you're using Kodi's default SQLite database, this feature is not available.
EasyTV creates its own database alongside your Kodi video database:
Your MySQL/MariaDB Server
├── myvideos131 ← Kodi's video library (shared)
└── easytv_myvideos ← EasyTV sync data (shared)
Every time you watch an episode, EasyTV writes the updated "next episode" to this shared database. Other instances detect the change via a revision counter and refresh their local data.
EasyTV reads your database connection details directly from Kodi's advancedsettings.xml. You don't need to enter any credentials — if Kodi can connect to your shared database, so can EasyTV.
The following paths are checked (in order):
special://userdata/advancedsettings.xmlspecial://profile/advancedsettings.xmlspecial://masterprofile/advancedsettings.xml
EasyTV tries two approaches for storing sync data:
-
Preferred: Create a dedicated
easytv_{kodi_db_name}database (e.g.,easytv_myvideos) -
Fallback: If the database user lacks
CREATE DATABASEpermission, EasyTV creates prefixed tables inside Kodi's existing video database
Both approaches work identically. The fallback happens automatically and requires no user intervention.
Each write increments a global revision counter. Before showing data, each instance compares its local revision with the database revision. If they differ, the instance refreshes — an O(1) check that adds virtually no overhead.
-
Verify your shared database is working. In Kodi, go to Settings and confirm your TV shows are loaded from the shared MySQL/MariaDB database. If you can see your library, the database is working.
-
Ensure EasyTV is installed on all devices. All instances should be running v1.3.0 or later.
On each Kodi device:
- Go to Settings → Advanced → Multi-Instance Sync
- Enable Multi-instance sync
- Restart Kodi (recommended for first-time setup)
After enabling sync and restarting:
- Enable debug logging: Settings → Advanced → Debugging → Enable debug logging
- Check the log file for these entries:
[EasyTV.storage] INFO: Using shared database storage, database=easytv_myvideos [EasyTV.shareddb] INFO: Connected to database, host=your-db-host, port=3306 - Watch an episode on one device
- Check that the other device shows the correct next episode
When you first enable sync:
- If this is the first device, EasyTV writes all its current tracking data to the shared database
- If another device has already populated the database, this device syncs from the existing data
- A migration lock prevents two devices from trying to populate simultaneously
For your "next episode" to be the same on all devices, certain settings must match across all Kodi instances:
| Setting | Why It Matters |
|---|---|
| Random-order shows | These shows pick a random episode instead of the next sequential one. Different selections = different "next" episodes. |
| Include positioned specials | Affects episode ordering. One device including specials and another excluding them will disagree on what's "next". |
These settings are purely local and can differ between devices:
- View style, sort order, show limits
- Launch behavior (Browse vs Random vs Ask)
- Playlist content, length, and filters
- Notification and prompt settings
- Debug logging
If you delete and rescan your Kodi library, show IDs change. EasyTV handles this automatically:
- Detects that stored show IDs no longer exist in the library
- Looks up shows by title + year to find their new IDs
- Migrates tracking data to the new IDs
- Clears episode lists (episode IDs also change during a rebuild)
- Recomputes the next episode for affected shows
This process is logged at INFO level. Check the log if you want to verify it worked.
On each startup, EasyTV compares stored shows against the current library. Shows that no longer exist in Kodi's library are automatically removed from the sync database.
If the database becomes temporarily unavailable:
- EasyTV enters a 30-second backoff period
- A warning is logged and local cache is used
- After the backoff, EasyTV retries the connection
- When the connection is restored, a full refresh occurs
If the database connection drops during overnight idle (common with MariaDB), EasyTV automatically re-establishes the connection and re-selects the database. (Fixed in v1.4.0-alpha2)
You can clear all shared sync data if you need a fresh start:
- Go to Settings → Advanced → Multi-Instance Sync
- Click Clear sync data
- Confirm the action
This deletes all show tracking data from the shared database and resets the revision counter. The next service restart will repopulate the data.
- After a major library reorganization
- If sync data appears corrupted or inconsistent
- When troubleshooting persistent sync issues
- When switching from one shared database to another
Note: Clearing sync data affects all connected devices. Each device will rebuild its tracking data on next restart.
| Limitation | Details |
|---|---|
| Clones don't sync | Clones use the main addon's background service data locally. They don't participate in multi-instance sync. |
| Settings must match | Random-order shows and positioned specials must be configured identically on all devices for consistent results. |
| Requires shared MySQL/MariaDB | SQLite (Kodi's default) doesn't support multi-device access. |
| pymysql required | The script.module.pymysql addon must be available. It's bundled with EasyTV but must be importable. |
| One-way episode tracking | Sync shares which episode is "next". It doesn't sync Kodi's watch status — that's handled by Kodi's own shared database. |
EasyTV shows a dialog saying pymysql is missing.
Solution:
- Check that
script.module.pymysqlis installed in Kodi - It should be installed automatically as a dependency of EasyTV
- If missing, install it manually from the Kodi addon repository
- Restart Kodi
EasyTV falls back to local mode with a warning in the log.
Check:
- Verify Kodi can access the shared database (your library loads normally)
- Check
advancedsettings.xmlexists and contains<videodatabase>with<type>mysql</type> - Check the log for specific error messages:
[EasyTV.shareddb] WARNING: Database unavailable, backing off - Verify the database server is running and accessible from this device
One device updates but others don't reflect the change.
Check:
- Multi-instance sync is enabled on all devices
- All devices point to the same MySQL/MariaDB server and database
- All devices are running EasyTV v1.3.0 or later
- Check logs on each device for
Using shared database storage(should appear) vsUsing window property storage(means sync isn't active)
The background service stops working after being idle overnight.
Solution: Update to EasyTV v1.4.0 or later. This version fixes a bug where MariaDB connections going idle overnight caused unhandled exceptions that silently killed the service.
Devices show different next episodes for the same show.
Check:
- Compare random-order show selections — they must be identical on all devices
- Compare the "Include positioned specials" setting — it must match on all devices
- If settings match, try clearing sync data and letting devices repopulate
- Installation — Setting up EasyTV
- Settings Reference — Multi-instance sync settings
- Advanced Features — Clone limitations with sync
- Random-Order Shows — Must match across devices
- Troubleshooting — More troubleshooting tips
EasyTV — No scrolling. No deciding. Just watching.
Home • Installation • Settings • Troubleshooting • GitHub