Android can't reliably connect to Zebra via BLE when BT classic is enabled

We have an iOS app that we are re-doing for Android.  We typically connect with ZD4xx family printers via wifi, BLE or BT classic, depending on customer requirements.  Typically all 3 of those interfaces are active.  On iOS we are able to reliably discover and connect to the printers via BLE, but on Android, the connect attempt usually fails.  If we disable the BT classic interface on the printer, the BLE connections usually succeed (but that is not a viable solution for us).  The behavior is the same with different Android platforms and Android OS versions that we have tried.

Our speculation is that the reason may be that the printer is advertising the BLE and BT classic with the same MAC address on both interfaces, and that this confuses the Android Bluetooth stack.  We speculate that if BLE and BT classic were advertising with different MAC addresses, the problem would go away.

Our questions are: Has anyone else has observed this problem?  Has anyone found a solution?  Is there any way to programmatically set a different MAC address for the two Bluetooth interfaces?

Thank you.

Michael Heins

Anonymous (not verified)
Hi Michael,Do you have a test

Hi Michael,

Do you have a test app to share that we can reproduce this problem? We would like to see if this happens during the discovery or happens after connected.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Michael Heins
Our Android guy used an

Our Android guy used an Android app called "nRF Connect" to test it independently of our BLE app code.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Anonymous (not verified)
...but on Android, the

...but on Android, the connect attempt usually fails. ...

What specific device and Android version do you use when you observed this problem? I've tried nRF Connect on Zebra TC56 and was able to connect to the ZD410 over BLE straight away.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Adam Burnett
Hi Steven,I'm the Android guy

Hi Steven,

I'm the Android guy referred to previously. I have tested this on the following platforms:

Kindle Fire 7 (Android 5.1.1).

Google Pixel XL (Android 8.1).

Lenovo TB-X103F (Android 6.0).

I initially discovered this when placing our Zebra ZD410 into "Smart Only" mode in the connection parameters and turning off the WiFi. The Zebra Printer Setup app (Android) fails to discover or connect when the connection is forced over BLE (i.e. smart mode).

On a separate note, from nRF Connect I can connect to a printer on all of the platforms listed above fairly regularly when I put the printer into "Smart Only" mode. It seems the problem occurs when both BLE and Classic are enabled for a printer.

Thanks for your help Steven,

Adam Burnett

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Leonid Kaleda
I am experiencing the same

I am experiencing the same problem with ZQ520. I have tested it across multiple Android devices and if the printer is put into "Low Energy Only" mode all of them are able to connect without any problems. Interestingly, one of my devices (Galaxy S7) is able to connect to the printer in "Classic & Low Energy" mode. According to the system logs the problem is not that Android is not able to open GATT connection to the printer but that BLE service discovery procedure never finishes or returns GATT error 129. Unfortunately "Classic & Low Energy" is a default mode and we have to ask all users of our app to configure their printers before first use. Here is the list of devices I tried:

  • Nexus 5X (8.1.0)
  • Samsung Galaxy J1 (4.4)
  • Samsung Galaxy J3 (5.1.1)
  • Samsung Galaxy S7 (6.0)
  • Samsung Galaxy Tab S3 (7.0)
  • Xiaomi Redmi 4 (6.0.1)

My printer's serial number is XXRBJ182902108. Is there any information I could provide you to troubleshoot the issue?

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Anonymous (not verified)
Hi Leonid,Are you

Hi Leonid,

Are you experiencing this problem with your own app or with Zebra Setup Utilities app for Android? If it's your app, would you share the app or the trimmed-down version of your app, so that we can reproduce the problem?

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Leonid Kaleda
Hi Steven,From what I can

Hi Steven,

From what I can gather Zebra Setup Utility app for Android uses classic bluetooth to connect to the printer. If I disable classic bluetooth using Zebra Setup Utility app for Desktop mobile version is not able to connect to the printer. Moreover, you do not need to use my app to reproduce the issue, even BLE Scanner app BLE Scanner - Apps on Google Play , which is pretty popular bluetooth app for Android, fails to discover services when the printer is in "Classic & Low Energy" mode. Interestingly, but we did not have the problem until we had iOS version of our app connected to the printer. It might be some implicit bonding issue but I have already tried to reset all possible communication settings using Zebra Setup Utility for Desktop.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Anonymous (not verified)
Hi Leonid, Have you updated

Hi Leonid,

Have you updated your firmware on the printer?  This was issue was corrected a year or two ago in the printer firmware.  Printers | Support & Downloads | Zebra

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Leonid Kaleda
Sorry for the delay. I have

Sorry for the delay. I have updated my firmware. Now it is V76.20.15Z, but problem persists.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Anonymous (not verified)
From what I can gather Zebra

From what I can gather Zebra Setup Utility app for Android uses classic bluetooth to connect to the printer.

Just want to clarify that the above statement is not accurate. The Zebra Printer Setup Utilities work with both Bluetooth Classic and Low Energy on the printers. When both Classic and LE are enabled on the printer, the Setup Utilities will use Classic to connect to the printer. When only LE is enabled on the printer, the Setup Utilities will use LE to connect to the printer. We can differentiate whether the Setup Utilities uses Classic or LE by looking at the Bluetooth icon on each entry in the list of discovered printers. If the Bluetooth icon has a "4.0" next to it, this means that the Setup Utilities is using LE to connect to the printer. If there is no "4.0" next to the Bluetooth icon, it means the Setup Utilities uses Classic to connect to the printer.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Leonid Kaleda
Sorry for the delay. Thank

Sorry for the delay. Thank you for the explanation. If I put my printer into "Low Energy Only" mode Zebra Printer Setup Utility - Apps on Google Play fails to connect to the printer. "Classic & Low Energy" and "Classic Only" modes work just fine.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Guillermo Noblega
Hi, I am also having problems

Hi, I am also having problems when printing from an Android app.
I have my app in a yoga tablet working fine but It does not work with a lenovo tab 10 with android 9.
In each tablet it works fine with print connect
With my lenovo tab 10 I can pair the printer correctly but whenever I want to print it tells me that I need to connect the printer to my device. I go to settings, I select the printer I click in connect but nothing happens

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Log in to post comments