diff --git a/android-lib/src/main/java/io/v/android/libs/discovery/ble/BlePlugin.java b/android-lib/src/main/java/io/v/android/libs/discovery/ble/BlePlugin.java
index a0bbfd9..1be0483 100644
--- a/android-lib/src/main/java/io/v/android/libs/discovery/ble/BlePlugin.java
+++ b/android-lib/src/main/java/io/v/android/libs/discovery/ble/BlePlugin.java
@@ -4,9 +4,15 @@
 
 package io.v.android.libs.discovery.ble;
 
+import android.bluetooth.le.AdvertiseCallback;
+import android.bluetooth.le.AdvertiseData;
+import android.bluetooth.le.AdvertiseSettings;
 import android.bluetooth.le.BluetoothLeAdvertiser;
+import android.util.Log;
 
+import java.nio.ByteBuffer;
 import java.util.Map;
+import java.util.TreeMap;
 import java.util.UUID;
 
 import io.v.v23.discovery.Service;
@@ -21,7 +27,31 @@
     private BluetoothLeAdvertiser mBluetoothLeAdvertiser;
 
 
-    private void readvertise() {
 
+    private void readvertise() {
+        int hash = mAdvertisements.hashCode();
+
+        AdvertiseData.Builder builder = new AdvertiseData.Builder();
+        ByteBuffer buf = ByteBuffer.allocate(9);
+        buf.put((byte) 8);
+        buf.putLong(hash);
+        builder.addManufacturerData(1001, buf.array());
+        AdvertiseSettings.Builder settingsBuilder = new AdvertiseSettings.Builder();
+        settingsBuilder.setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_BALANCED);
+        settingsBuilder.setConnectable(true);
+                mBluetoothLeAdvertiser.startAdvertising(settingsBuilder.build(), builder.build(),
+                        new AdvertiseCallback() {
+                            @Override
+                            public void onStartSuccess(AdvertiseSettings settingsInEffect) {
+                                super.onStartSuccess(settingsInEffect);
+                                Log.i("vanadium", "Successfully started " + settingsInEffect);
+                            }
+
+                            @Override
+                            public void onStartFailure(int errorCode) {
+                                super.onStartFailure(errorCode);
+                                Log.i("vanadium", "Failed to start advertising " + errorCode);
+                            }
+                        });
     }
 }
\ No newline at end of file
