Overview
The following are the network transports supported by Ditto. By default Ditto will attempt to use all available transports if permissions are given.
- Already supported in our current releases.
- Under development and will be released soon.
Transport | iOS | Android | macOS | Windows | Linux | Web Browser |
---|---|---|---|---|---|---|
Bluetooth Low Energy (BLE) | ||||||
Apple Wireless Direct Link (AWDL) | ||||||
Wi-Fi Aware | ||||||
Wi-Fi Direct | ||||||
Local Area Network (LAN) | ||||||
WebSockets | ||||||
Universal Serial Bus (USB) |
Intro to the Rainbow Connection
Ditto's Multiplexer automatically handles the complex process of establishing and maintaining these above transports for your apps and devices. To learn more about these the capabilities of these transports, watch the narrated video below.
About the network transports
The following details specific information about each transport. Please read to fully understand how each platform behaves to align your expectations. We provide some estimates of distances and bandwidth however the environment and hardware can greatly affect these numbers.
Bluetooth Low Energy
Ditto will use Bluetooth Low Energy (BLE) to form low-powered and high distance connections between devices. Depending on your device's chip, you may see some variation of distance and bandwidth. All devices that support Bluetooth Low Energy are fully capable of communicating with each other.
- Devices can discover each other at about 30m-60m away from each other but the connections can be sustained for further distances.
- If your device is using a Bluetooth 4.0 chip, expect distances of 80 meters from point to point.
- If your device is using a Bluetooth 5.x chip, expect impressive distances up to 130 meters from point to point.
Most devices will have a Bluetooth 5.x chip if it was made during or after 2017. Bluetooth Low Energy is great for structured documents but performs poorly for large file sizes.
info
If you intend to run Ditto on a Raspberry Pi or Linux device, please follow the instructions to enable Bluetooth Low Energy support
Peer-to-Peer Wi-Fi
*connection maximum distance varies across P2P transport typeApple Wireless Direct Link (AWDL)
Apple Wireless Direct Link (AWDL) is most known for powering AirDrop and is only supported on iOS and macOS devices. Apple Wireless Direct Link does not require an internet connection and is capable of communicating as long as the device Wi-Fi settings are turned on.
- Distances are shorter than Bluetooth Low Energy with an average maximum of 35 meters from point-to-point.
- However, the bandwidth is tremendously more powerful: capable of syncing 1 gigabyte of data in times as low as 8 seconds.
Wi-Fi Direct
Wi-Fi Direct is supported on almost all Android (4.0 or higher, API Level 14 or higher) but only on some Windows 10 devices. P2P Wi-Fi Direct can achieve speeds as a fast as Apple Wireless Direct Link but unfortunately makes connections by requiring a permission alert to every new peer.
- Distances can be achieved as far as 80 meters
- Can send 1 gigabyte of data in times as low as 8 seconds.
Wi-Fi Aware
Wi-Fi aware is a new open standard introduced to Android devices that closely resembles Apple Wireless Direct Link in terms of distance and bandwidth. It is supported at the operating system level since Android 8, however not all Android manufacturers have enabled it at the hardware level.
- Distances from point to point are approximately 40 meters
- It can sync 1 gigabyte files in as little as 8 seconds.
In general most Google Pixel, Samsung, and LG phones built after 2018 can support Wi-Fi Aware. Other devices are being updated to include support. To check if your device can support Wi-Fi aware, download this app.
Local Area Network
If devices are connected over the same Wi-Fi access point or via some other means like an ethernet cable, they can take advantage of communicating over the LAN or Local Area Network.
Many enterprise or educational networks may have Client Isolation Mode turned ON. If the network has this setting ON then devices are unable to discover each other and form a connection. Almost all "home" settings have this setting turned OFF. Different router manufacturers refer to this feature in a wide variety of different ways, but it generally has "isolation" in its name.
Ditto's discovery protocol also uses UDP multicasting, which needs to be enabled if you want devices to automatically discover each other. If you don't enable multicasting, you will need to manually configure the connections between peers.
There are some limitations affecting LAN sync on iOS devices.
- iOS devices will only sync with desktop platforms like Windows if you have requested the multicast entitlement from Apple and applied it to your iOS app. Work is on the roadmap which will allow iOS devices to sync with all platforms, even without this entitlement.
- iOS can always sync with other mobile devices like iOS and Android.
WebSockets
All devices support WebSocket connections. It is by far the most easily available network transports which require no permissions to work. In general, WebSockets:
- Require an internet connection for devices to communicate
- Cannot automatically discover each other like the other peer to peer transports.
Devices need to specify an IP/PORT for a connection to be established. While most use cases require an internet connection. WebSockets can also work over the Local Area Network.
Universal Serial Bus (USB)
If Ditto devices are active and share permissions for USB communication, Ditto will be able to form a wired connection between the two devices.
The Ditto Multiplexer
Ditto automatically handles the complexity of maintaining the above transports. In production, the transports combine to look something like this. Watch how data is broken into chunks and sent across the different transports, efficiently switching as the network topology changes.