Awesome Open Source
Awesome Open Source

NPM version NPM download GitHub issues GitHub license

Mi Band 2 JS library

A clean implementation of Mi Band 2 library for Browsers and Node.js, using WebBluetooth API. demo

Setting up

It's best to unbind your Mi Band 2 from MiFit App first.
You should be able to bind it back again, but no guaranee here ;)



You need a browser with WebBluetooth support. Tested with:

  • Chrome on OS X (Yosemite or later)
  • Chrome on Android (6.0 Marshmallow or later)
  • Chrome on Linux (the chrome://flags/#enable-experimental-web-platform-features flag must be enabled)


npm install miband -g

This should work on Windows, Linux and OSX.
On Linux, you need to grant Bluetooth access for Node.js:

sudo setcap cap_net_raw+eip $(eval readlink -f `which node`)


  • Authentication
  • Device info: time, battery status, hw/sw versions, etc.
  • Button tap event
  • Notifications: message, phone, vibrate
  • Heart Rate Monitor
  • Realtime data (soon)

API usage example

const MiBand = require('miband');

const device = await bluetooth.requestDevice({
  filters: [
    { services: [ MiBand.advertisementService ] }
  optionalServices: MiBand.optionalServices

const server = await device.gatt.connect();

let miband = new MiBand(server);
await miband.init();

log('Notifications demo...')
await miband.showNotification('message');

Here you can find more API examples


Please check out

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
javascript (70,860
nodejs (3,860
xiaomi (81