Skip to main content

dl-myo (Dongle-less Myo)

build status image size codecov python versions pypi version license

dl-myo is yet another MyoConnect alternative for Myo Armband without an official Myo dongle.

If you are fed up with the dongle and still want to use Myo anyway (in Python), this is the right stuff to grab.

The GATT service naming convention reflects the official BLE specification for Myo (i.e., myohw.h); however, some services and characteristics differ for a uniform naming.

See myo/profile.py for more detail.

For further developments, see my project using this library: https://github.com/Interactions-HSG/MyoKTROS

Features

Compared to other Myo libraries/SDKs:

  • Full-scratched in Python, no dependency from other runtime (e.g., the official cpp SDK)
  • Multi-platform support based on Bleak, instead of bluepy or pybluez
  • Stream EMG data (filtered/raw) and IMU data simultaneously using asyncio
  • A sample docker image provided -- runs just off the shelf

Platform Support

Linux Raspberry Pi macOS Windows

Install

pip install dl-myo

Examples

sample_client.py

The script scans a Myo device, connect to the device, prints the GATT profile from the device, collect EMG data for 5 seconds, and then disconnect.

Any Myo Armband should have the service UUID d5060001-a904-deb9-4748-2c7f4a124842.

python examples/sample_client.py

Otherwise, you can also bind to a specific MAC address. For example,

python examples/sample_client.py --mac D2:3B:85:94:32:8E

influxdb

The examples/influxdb/influx_client.py emits datapoints to be stored in InfluxDB. The docker-compose.yml lanches the required database for this by default.

docker compose up -d influxdb

then

python examples/influxdb/influx_client.py

Make use of the dashboard config examples/influxdb/myo.json.

influxdb

Try the example with Docker

NOTE: The docker example currently doesn't work on macOS.

docker compose pull
docker compose run --rm dl-myo

Build with Poetry

Install Poetry first.

poetry build

Credits

This project was first inspired by Dongleless-myo (originally created by @mamo91 and enhanced by @MyrikLD) which provides a great starting point using bluepy.

In addition to Myo Bluetooth Official Protocol, I would like to mention that the following resources on GitHub have been very helpful:

Author

@iomz (Iori Mizutani)

Release files for dl-myo 1.1.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dl-myo 1.1.8
File Size Uploaded
dl_myo-1.1.8.tar.gz 32.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dl-myo 1.1.8
File Interpreter ABI Platform
dl_myo-1.1.8-py3-none-any.whl Python 3 none any Details

Total release size: 65.3 kB

Release files / dl_myo-1.1.8.tar.gz

Download URL dl_myo-1.1.8.tar.gz
Size 32.8 kB
Tags Source
SHA-256 checksum
How to use checksums
e1d2f765895e50a8f967f191db11698e5c3a0820f14498971f41e48b8797a3b3
BLAKE2b-256 checksum
How to use checksums
60785e41cad6d4ae242d950f118be5e5ac8df0a517beb77161f68a0bab12053a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 8, 2025.

Transparency log

Release files / dl_myo-1.1.8-py3-none-any.whl

Download URL dl_myo-1.1.8-py3-none-any.whl
Size 32.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3982e54005a819c8e06e48d2409932290eecdfad70edeb9b7e52e6d9edff3c2c
BLAKE2b-256 checksum
How to use checksums
446caadf7781f8f9491ac855385fa959f4d315f21d2359c2074f0ad9a33a2a41
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 8, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

1.1.8 This release

2 release files

1.1.6

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.2.0

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page